System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact df463fda7abdbe26d5a2860c183c2089921bebdf:


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 64 69 63 74 69 6f 6e 61 72 69 65 73 20 75 73   dictionaries us
0cd0: 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20  ed to store the 
0ce0: 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20  read counts for 
0cf0: 65 61 63 68 20 6f 66 0d 0a 20 20 20 20 20 20 2f  each of..      /
0d00: 2f 2f 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63  // the runtime c
0d10: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
0d20: 74 69 6e 67 73 2e 20 20 54 68 65 73 65 20 6e 75  tings.  These nu
0d30: 6d 62 65 72 73 20 61 72 65 20 75 73 65 64 20 66  mbers are used f
0d40: 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 65  or..      /// de
0d50: 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74  bugging and test
0d60: 69 6e 67 20 70 75 72 70 6f 73 65 73 20 6f 6e 6c  ing purposes onl
0d70: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
0d80: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0d90: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
0da0: 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 53 65 74  id InitializeSet
0db0: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 28 29  tingReadCounts()
0dc0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
0dd0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
0de0: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
0df0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0e00: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
0e10: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
0e20: 3a 20 43 72 65 61 74 65 20 74 68 65 20 64 69 63  : Create the dic
0e30: 74 69 6f 6e 61 72 69 65 73 20 6f 66 20 73 74 61  tionaries of sta
0e40: 74 69 73 74 69 63 73 20 74 68 61 74 20 77 69 6c  tistics that wil
0e50: 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  l..             
0e60: 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 74 61 69   //       contai
0e70: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
0e80: 74 69 6d 65 73 20 65 61 63 68 20 73 65 74 74 69  times each setti
0e90: 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ng value..      
0ea0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
0eb0: 20 68 61 73 20 62 65 65 6e 20 72 65 61 64 2e 0d   has been read..
0ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
0ed0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
0ee0: 20 69 66 20 28 73 65 74 74 69 6e 67 52 65 61 64   if (settingRead
0ef0: 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  Counts == null).
0f00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0f10: 20 20 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f     settingReadCo
0f20: 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63 74 69  unts = new Dicti
0f30: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
0f40: 74 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  t>();....       
0f50: 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69         if (setti
0f60: 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73  ngFileReadCounts
0f70: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
0f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
0f90: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
0fa0: 74 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e  ts = new Diction
0fb0: 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e  ary<string, int>
0fc0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ();..          }
0fd0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
0fe0: 20 20 20 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 2f  ////////////////
1010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1030: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1040: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49  ry>..      /// I
1050: 6e 63 72 65 6d 65 6e 74 73 20 74 68 65 20 72 65  ncrements the re
1060: 61 64 20 63 6f 75 6e 74 20 66 6f 72 20 74 68 65  ad count for the
1070: 20 73 70 65 63 69 66 69 65 64 20 72 75 6e 74 69   specified runti
1080: 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  me configuration
1090: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74  ..      /// sett
10a0: 69 6e 67 2e 20 20 54 68 65 73 65 20 6e 75 6d 62  ing.  These numb
10b0: 65 72 73 20 61 72 65 20 75 73 65 64 20 66 6f 72  ers are used for
10c0: 20 64 65 62 75 67 67 69 6e 67 20 61 6e 64 20 74   debugging and t
10d0: 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73 0d  esting purposes.
10e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 6c 79 2e  .      /// only.
10f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1100: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1110: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
1120: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
1130: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
1140: 20 73 65 74 74 69 6e 67 20 62 65 69 6e 67 20 72   setting being r
1150: 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ead...      /// 
1160: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1170: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1180: 22 76 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20  "viaFile">..    
1190: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
11a0: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
11b0: 73 65 74 74 69 6e 67 20 69 73 20 62 65 69 6e 67  setting is being
11c0: 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58   read from the X
11d0: 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ML..      /// co
11e0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
11f0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
1200: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62  aram>..      pub
1210: 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20  lic static void 
1220: 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67  IncrementSetting
1230: 52 65 61 64 43 6f 75 6e 74 28 0d 0a 20 20 20 20  ReadCount(..    
1240: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
1250: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f  e,..          bo
1260: 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20  ol viaFile..    
1270: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
1280: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
1290: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
12a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12d0: 2f 2f 20 4e 4f 54 45 3a 20 55 70 64 61 74 65 20  // NOTE: Update 
12e0: 73 74 61 74 69 73 74 69 63 73 20 66 6f 72 20 74  statistics for t
12f0: 68 69 73 20 73 65 74 74 69 6e 67 20 76 61 6c 75  his setting valu
1300: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
1310: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1320: 20 20 20 20 69 66 20 28 76 69 61 46 69 6c 65 29      if (viaFile)
1330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1340: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1350: 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67       if (setting
1360: 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20 21  FileReadCounts !
1370: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1380: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a0: 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a      int count;..
13b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c0: 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74          if (sett
13d0: 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74  ingFileReadCount
13e0: 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61  s.TryGetValue(na
13f0: 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d  me, out count)).
1400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1410: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69             setti
1420: 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73  ngFileReadCounts
1430: 5b 6e 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b  [name] = count +
1440: 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   1;..           
1450: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
1460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1470: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69             setti
1480: 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73  ngFileReadCounts
1490: 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a  .Add(name, 1);..
14a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
14c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14d0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
14e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1500: 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e  (settingReadCoun
1510: 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts != null)..   
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1540: 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e          int coun
1550: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
1560: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1570: 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  settingReadCount
1580: 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61  s.TryGetValue(na
1590: 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d  me, out count)).
15a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15b0: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69             setti
15c0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d  ngReadCounts[nam
15d0: 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d  e] = count + 1;.
15e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15f0: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
1600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1610: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52 65         settingRe
1620: 61 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d  adCounts.Add(nam
1630: 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20  e, 1);..        
1640: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1650: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1660: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1670: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1680: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
1690: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e  }..#endif..  #en
16a0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f  dregion....  ///
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1700: 23 72 65 67 69 6f 6e 20 48 65 6c 70 65 72 20 4d  #region Helper M
1710: 65 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c  ethods Static Cl
1720: 61 73 73 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ass..  /// <summ
1730: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
1740: 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 70 72   static class pr
1750: 6f 76 69 64 65 73 20 73 6f 6d 65 20 6d 65 74 68  ovides some meth
1760: 6f 64 73 20 74 68 61 74 20 61 72 65 20 73 68 61  ods that are sha
1770: 72 65 64 20 62 65 74 77 65 65 6e 20 74 68 65 0d  red between the.
1780: 0a 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 6c 69  .  /// native li
1790: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
17a0: 20 61 6e 64 20 6f 74 68 65 72 20 63 6c 61 73 73   and other class
17b0: 65 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  es...  /// </sum
17c0: 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61  mary>..  interna
17d0: 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 48  l static class H
17e0: 65 6c 70 65 72 4d 65 74 68 6f 64 73 0d 0a 20 20  elperMethods..  
17f0: 7b 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  {..      #region
1800: 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
1810: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1820: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
1830: 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65 64 20  is lock is used 
1840: 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 73  to protect the s
1850: 74 61 74 69 63 20 3c 73 65 65 20 63 72 65 66 3d  tatic <see cref=
1860: 22 69 73 4d 6f 6e 6f 22 20 2f 3e 20 66 69 65 6c  "isMono" /> fiel
1870: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
1880: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1890: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
18a0: 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
18b0: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20  taticSyncRoot = 
18c0: 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d  new object();...
18d0: 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
1900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1920: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
1930: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
1940: 20 54 68 69 73 20 74 79 70 65 20 69 73 20 6f 6e   This type is on
1950: 6c 79 20 70 72 65 73 65 6e 74 20 77 68 65 6e 20  ly present when 
1960: 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e  running on Mono.
1970: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1980: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
1990: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
19a0: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 4d 6f 6e  donly string Mon
19b0: 6f 52 75 6e 74 69 6d 65 54 79 70 65 20 3d 20 22  oRuntimeType = "
19c0: 4d 6f 6e 6f 2e 52 75 6e 74 69 6d 65 22 3b 0d 0a  Mono.Runtime";..
19d0: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
1a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a20: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
1a30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1a40: 2f 20 4b 65 65 70 73 20 74 72 61 63 6b 20 6f 66  / Keeps track of
1a50: 20 77 68 65 74 68 65 72 20 77 65 20 61 72 65 20   whether we are 
1a60: 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e  running on Mono.
1a70: 20 20 49 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c    Initially null
1a80: 2c 20 69 74 20 69 73 0d 0a 20 20 20 20 20 20 2f  , it is..      /
1a90: 2f 2f 20 73 65 74 20 62 79 20 74 68 65 20 3c 73  // set by the <s
1aa0: 65 65 20 63 72 65 66 3d 22 49 73 4d 6f 6e 6f 22  ee cref="IsMono"
1ab0: 20 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e 20 69 74   /> method on it
1ac0: 73 20 66 69 72 73 74 20 63 61 6c 6c 2e 20 20 4c  s first call.  L
1ad0: 61 74 65 72 2c 20 69 74 0d 0a 20 20 20 20 20 20  ater, it..      
1ae0: 2f 2f 2f 20 69 73 20 72 65 74 75 72 6e 65 64 20  /// is returned 
1af0: 76 65 72 62 61 74 69 6d 20 62 79 20 74 68 65 20  verbatim by the 
1b00: 3c 73 65 65 20 63 72 65 66 3d 22 49 73 4d 6f 6e  <see cref="IsMon
1b10: 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  o" /> method... 
1b20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1b30: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
1b40: 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 3f 20  te static bool? 
1b50: 69 73 4d 6f 6e 6f 20 3d 20 6e 75 6c 6c 3b 0d 0a  isMono = null;..
1b60: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1b70: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
1ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
1bd0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74  gion Private Met
1be0: 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hods..      /// 
1bf0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1c00: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
1c10: 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74  whether or not t
1c20: 68 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20  his assembly is 
1c30: 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e  running on Mono.
1c40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1c50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1c60: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1c70: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1c80: 69 66 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79  if this assembly
1c90: 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d   is running on M
1ca0: 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ono...      /// 
1cb0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1cc0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1cd0: 20 62 6f 6f 6c 20 49 73 4d 6f 6e 6f 28 29 0d 0a   bool IsMono()..
1ce0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1cf0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1d00: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d10: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
1d20: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
1d30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1d50: 28 69 73 4d 6f 6e 6f 20 3d 3d 20 6e 75 6c 6c 29  (isMono == null)
1d60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d70: 20 20 20 20 20 20 20 20 69 73 4d 6f 6e 6f 20 3d          isMono =
1d80: 20 28 54 79 70 65 2e 47 65 74 54 79 70 65 28 4d   (Type.GetType(M
1d90: 6f 6e 6f 52 75 6e 74 69 6d 65 54 79 70 65 29 20  onoRuntimeType) 
1da0: 21 3d 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20  != null);....   
1db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1dc0: 65 74 75 72 6e 20 28 62 6f 6f 6c 29 69 73 4d 6f  eturn (bool)isMo
1dd0: 6e 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  no;..           
1de0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1df0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  }..          cat
1e00: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ch..          {.
1e10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1e20: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
1e30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1e40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1e50: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alse;..      }..
1e60: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1e70: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
1ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
1ed0: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 65  gion Internal Me
1ee0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  thods..      ///
1ef0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1f00: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
1f10: 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   if the current 
1f20: 70 72 6f 63 65 73 73 20 69 73 20 72 75 6e 6e 69  process is runni
1f30: 6e 67 20 6f 6e 20 6f 6e 65 20 6f 66 20 74 68 65  ng on one of the
1f40: 20 57 69 6e 64 6f 77 73 0d 0a 20 20 20 20 20 20   Windows..      
1f50: 2f 2f 2f 20 5b 73 75 62 2d 5d 70 6c 61 74 66 6f  /// [sub-]platfo
1f60: 72 6d 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rms...      /// 
1f70: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1f80: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1f90: 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
1fa0: 65 72 6f 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67  ero when running
1fb0: 20 6f 6e 20 57 69 6e 64 6f 77 73 3b 20 6f 74 68   on Windows; oth
1fc0: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
1fd0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1fe0: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
1ff0: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
2000: 49 73 57 69 6e 64 6f 77 73 28 29 0d 0a 20 20 20  IsWindows()..   
2010: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2020: 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66  PlatformID platf
2030: 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d  ormId = Environm
2040: 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c  ent.OSVersion.Pl
2050: 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20  atform;....     
2060: 20 20 20 20 20 69 66 20 28 28 70 6c 61 74 66 6f       if ((platfo
2070: 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d  rmId == Platform
2080: 49 44 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20  ID.Win32S) ||.. 
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c               (pl
20a0: 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74  atformId == Plat
20b0: 66 6f 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64  formID.Win32Wind
20c0: 6f 77 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  ows) ||..       
20d0: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
20e0: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
20f0: 2e 57 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20  .Win32NT) ||..  
2100: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
2110: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
2120: 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20  ormID.WinCE)).. 
2130: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2140: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2150: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
2160: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2170: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
2180: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2190: 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
21e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
21f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
2200: 69 73 20 61 20 77 72 61 70 70 65 72 20 61 72 6f  is a wrapper aro
2210: 75 6e 64 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  und the..      /
2220: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  // <see cref="St
2230: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 49 46 6f 72  ring.Format(IFor
2240: 6d 61 74 50 72 6f 76 69 64 65 72 2c 53 74 72 69  matProvider,Stri
2250: 6e 67 2c 4f 62 6a 65 63 74 5b 5d 29 22 20 2f 3e  ng,Object[])" />
2260: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2270: 2f 2f 2f 20 4f 6e 20 4d 6f 6e 6f 2c 20 69 74 20  /// On Mono, it 
2280: 68 61 73 20 74 6f 20 63 61 6c 6c 20 74 68 65 20  has to call the 
2290: 6d 65 74 68 6f 64 20 6f 76 65 72 6c 6f 61 64 20  method overload 
22a0: 77 69 74 68 6f 75 74 20 74 68 65 0d 0a 20 20 20  without the..   
22b0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
22c0: 3d 22 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65  ="IFormatProvide
22d0: 72 22 20 2f 3e 20 70 61 72 61 6d 65 74 65 72 2c  r" /> parameter,
22e0: 20 64 75 65 20 74 6f 20 61 20 62 75 67 20 69 6e   due to a bug in
22f0: 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   Mono...      //
2300: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2310: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2320: 61 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d  ame="provider">.
2330: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
2340: 69 73 20 75 73 65 64 20 66 6f 72 20 63 75 6c 74  is used for cult
2350: 75 72 65 2d 73 70 65 63 69 66 69 63 20 66 6f 72  ure-specific for
2360: 6d 61 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20  matting...      
2370: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2380: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2390: 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 0d 0a 20  ame="format">.. 
23a0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72       /// The for
23b0: 6d 61 74 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  mat string...   
23c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
23d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
23e0: 6d 20 6e 61 6d 65 3d 22 61 72 67 73 22 3e 0d 0a  m name="args">..
23f0: 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72        /// An arr
2400: 61 79 20 74 68 65 20 6f 62 6a 65 63 74 73 20 74  ay the objects t
2410: 6f 20 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 20  o format...     
2420: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2430: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2440: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
2450: 65 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69  e resulting stri
2460: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
2470: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2480: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
2490: 20 73 74 72 69 6e 67 20 53 74 72 69 6e 67 46 6f   string StringFo
24a0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
24b0: 20 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72   IFormatProvider
24c0: 20 70 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20   provider,..    
24d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72        string for
24e0: 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
24f0: 70 61 72 61 6d 73 20 6f 62 6a 65 63 74 5b 5d 20  params object[] 
2500: 61 72 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20  args..          
2510: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
2520: 20 20 20 20 20 20 69 66 20 28 49 73 4d 6f 6e 6f        if (IsMono
2530: 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
2540: 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67     return String
2550: 2e 46 6f 72 6d 61 74 28 66 6f 72 6d 61 74 2c 20  .Format(format, 
2560: 61 72 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  args);..        
2570: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
2580: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
2590: 69 6e 67 2e 46 6f 72 6d 61 74 28 70 72 6f 76 69  ing.Format(provi
25a0: 64 65 72 2c 20 66 6f 72 6d 61 74 2c 20 61 72 67  der, format, arg
25b0: 73 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  s);..      }..  
25c0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
25d0: 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
25e0: 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
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 2f 2f 2f  ////////////////
2610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2630: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
2640: 6e 20 4e 61 74 69 76 65 20 4c 69 62 72 61 72 79  n Native Library
2650: 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20   Helper Class.. 
2660: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2670: 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74 69    /// This stati
2680: 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65 73  c class provides
2690: 20 61 20 74 68 69 6e 20 77 72 61 70 70 65 72 20   a thin wrapper 
26a0: 61 72 6f 75 6e 64 20 74 68 65 20 6e 61 74 69 76  around the nativ
26b0: 65 20 6c 69 62 72 61 72 79 0d 0a 20 20 2f 2f 2f  e library..  ///
26c0: 20 6c 6f 61 64 69 6e 67 20 66 65 61 74 75 72 65   loading feature
26d0: 73 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79  s of the underly
26e0: 69 6e 67 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20  ing platform... 
26f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2700: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
2710: 69 63 20 63 6c 61 73 73 20 4e 61 74 69 76 65 4c  ic class NativeL
2720: 69 62 72 61 72 79 48 65 6c 70 65 72 0d 0a 20 20  ibraryHelper..  
2730: 7b 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  {..      #region
2740: 20 50 72 69 76 61 74 65 20 44 65 6c 65 67 61 74   Private Delegat
2750: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  es..      /// <s
2760: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
2770: 2f 2f 20 54 68 69 73 20 64 65 6c 65 67 61 74 65  // This delegate
2780: 20 69 73 20 75 73 65 64 20 74 6f 20 77 72 61 70   is used to wrap
2790: 20 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66 20   the concept of 
27a0: 6c 6f 61 64 69 6e 67 20 61 20 6e 61 74 69 76 65  loading a native
27b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72  ..      /// libr
27c0: 61 72 79 2c 20 62 61 73 65 64 20 6f 6e 20 61 20  ary, based on a 
27d0: 66 69 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 72  file name, and r
27e0: 65 74 75 72 6e 69 6e 67 20 74 68 65 20 6c 6f 61  eturning the loa
27f0: 64 65 64 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ded module..    
2800: 20 20 2f 2f 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20    /// handle... 
2810: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2820: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
2830: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
2840: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
2850: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
2860: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
2870: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
2880: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2890: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
28a0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
28b0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
28c0: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
28d0: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
28e0: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
28f0: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
2900: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2910: 20 20 20 70 72 69 76 61 74 65 20 64 65 6c 65 67     private deleg
2920: 61 74 65 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c  ate IntPtr LoadL
2930: 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 28 0d  ibraryCallback(.
2940: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
2950: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
2960: 20 20 29 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64    );..      #end
2970: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
29d0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
29e0: 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
29f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2a00: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
2a10: 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  pts to load the 
2a20: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
2a30: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75 73   library file us
2a40: 69 6e 67 20 74 68 65 20 57 69 6e 33 32 0d 0a 20  ing the Win32.. 
2a50: 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20       /// API... 
2a60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2a70: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
2a80: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
2a90: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
2aa0: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
2ab0: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
2ac0: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
2ad0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2ae0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
2af0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
2b00: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
2b10: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
2b20: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
2b30: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
2b40: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
2b50: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2b60: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2b70: 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  c IntPtr LoadLib
2b80: 72 61 72 79 57 69 6e 33 32 28 0d 0a 20 20 20 20  raryWin32(..    
2b90: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
2ba0: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
2bb0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
2bc0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e         return Un
2bd0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2be0: 73 57 69 6e 33 32 2e 4c 6f 61 64 4c 69 62 72 61  sWin32.LoadLibra
2bf0: 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20  ry(fileName);.. 
2c00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
2c60: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2c70: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2c80: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2c90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
2ca0: 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65  mpts to load the
2cb0: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
2cc0: 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75  e library file u
2cd0: 73 69 6e 67 20 74 68 65 20 50 4f 53 49 58 0d 0a  sing the POSIX..
2ce0: 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a        /// API...
2cf0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2d00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2d10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
2d20: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
2d30: 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65  // The file name
2d40: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c   of the native l
2d50: 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d  ibrary to load..
2d60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
2d70: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
2d80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2d90: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
2da0: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
2db0: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
2dc0: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
2dd0: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
2de0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2df0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
2e00: 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  ic IntPtr LoadLi
2e10: 62 72 61 72 79 50 6f 73 69 78 28 0d 0a 20 20 20  braryPosix(..   
2e20: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
2e30: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
2e40: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
2e50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
2e60: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2e70: 64 73 50 6f 73 69 78 2e 64 6c 6f 70 65 6e 28 0d  dsPosix.dlopen(.
2e80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
2e90: 69 6c 65 4e 61 6d 65 2c 20 55 6e 73 61 66 65 4e  ileName, UnsafeN
2ea0: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
2eb0: 78 2e 52 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b  x.RTLD_DEFAULT);
2ec0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
2ed0: 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  f..      #endreg
2ee0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
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 2f  ////////////////
2f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f30: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2f40: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
2f50: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f  ethods..      //
2f60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2f70: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
2f80: 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63  to load the spec
2f90: 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62  ified native lib
2fa0: 72 61 72 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20  rary file...    
2fb0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2fc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
2fd0: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
2fe0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
2ff0: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20  he file name of 
3000: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
3010: 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20  ry to load...   
3020: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
3030: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
3040: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
3050: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
3060: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
3070: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
3080: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
3090: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
30a0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
30b0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
30c0: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
30d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
30e0: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20  ing fileName..  
30f0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
3100: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 4c 6f   {..          Lo
3110: 61 64 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63  adLibraryCallbac
3120: 6b 20 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61  k callback = Loa
3130: 64 4c 69 62 72 61 72 79 57 69 6e 33 32 3b 0d 0a  dLibraryWin32;..
3140: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
3150: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
3160: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
3170: 21 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49  !HelperMethods.I
3180: 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20  sWindows())..   
3190: 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62             callb
31a0: 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72  ack = LoadLibrar
31b0: 79 50 6f 73 69 78 3b 0d 0a 23 65 6e 64 69 66 0d  yPosix;..#endif.
31c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
31d0: 75 72 6e 20 63 61 6c 6c 62 61 63 6b 28 66 69 6c  urn callback(fil
31e0: 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d  eName);..      }
31f0: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
3200: 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72  on..  }..  #endr
3210: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
3270: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
3280: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
3290: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 50 4f  Static Class (PO
32a0: 53 49 58 29 0d 0a 23 69 66 20 21 50 4c 41 54 46  SIX)..#if !PLATF
32b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
32c0: 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  WORK..  /// <sum
32d0: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
32e0: 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73  s class declares
32f0: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
3300: 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65  s to call native
3310: 20 50 4f 53 49 58 20 41 50 49 73 2e 0d 0a 20 20   POSIX APIs...  
3320: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
3330: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
3340: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
3350: 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  ]..  internal st
3360: 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66  atic class Unsaf
3370: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f  eNativeMethodsPo
3380: 73 69 78 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  six..  {..      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
33e0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
33f0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
3400: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
3410: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
3420: 20 74 68 65 20 6e 61 74 69 76 65 20 55 6e 69 78   the native Unix
3430: 20 64 6c 6f 70 65 6e 0d 0a 20 20 20 20 20 20 2f   dlopen..      /
3440: 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65  // function.  Se
3450: 65 20 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75  e the POSIX docu
3460: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
3470: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
3480: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
3490: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
34a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
34b0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
34c0: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
34d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
34e0: 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75  ame of the execu
34f0: 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a  table library...
3500: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
3510: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
3520: 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 65 22  aram name="mode"
3530: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
3540: 73 20 6d 75 73 74 20 62 65 20 61 20 63 6f 6d 62  s must be a comb
3550: 69 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69  ination of the i
3560: 6e 64 69 76 69 64 75 61 6c 20 62 69 74 20 66 6c  ndividual bit fl
3570: 61 67 73 20 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a  ags RTLD_LAZY,..
3580: 20 20 20 20 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e        /// RTLD_N
3590: 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c  OW, RTLD_GLOBAL,
35a0: 20 61 6e 64 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43   and/or RTLD_LOC
35b0: 41 4c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  AL...      /// <
35c0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
35d0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
35e0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
35f0: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
3600: 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f   upon success -O
3610: 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f  R- IntPtr.Zero o
3620: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
3630: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
3640: 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ..      [DllImpo
3650: 72 74 28 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c  rt("__Internal",
3660: 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64   EntryPoint = "d
3670: 6c 6f 70 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20  lopen",..       
3680: 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e     CallingConven
3690: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
36a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
36b0: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
36c0: 74 2e 41 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20  t.Ansi,..       
36d0: 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e     BestFitMappin
36e0: 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77  g = false, Throw
36f0: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
3700: 20 3d 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20   = true,..      
3710: 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72      SetLastError
3720: 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20   = true)]..     
3730: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
3740: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 64   extern IntPtr d
3750: 6c 6f 70 65 6e 28 73 74 72 69 6e 67 20 66 69 6c  lopen(string fil
3760: 65 4e 61 6d 65 2c 20 69 6e 74 20 6d 6f 64 65 29  eName, int mode)
3770: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
3780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
37d0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
37e0: 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74   /// For use wit
37f0: 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64  h dlopen(), bind
3800: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20   function calls 
3810: 6c 61 7a 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  lazily...      /
3820: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3830: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
3840: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a  nst int RTLD_LAZ
3850: 59 20 3d 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20  Y = 0x1;....    
3860: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
38b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
38c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20  ..      /// For 
38d0: 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28  use with dlopen(
38e0: 29 2c 20 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e  ), bind function
38f0: 20 63 61 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65   calls immediate
3900: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
3910: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
3920: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
3930: 69 6e 74 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30  int RTLD_NOW = 0
3940: 78 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  x2;....      ///
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 2f  ////////////////
3970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3990: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
39a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
39b0: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
39c0: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61  ith dlopen(), ma
39d0: 6b 65 20 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61  ke symbols globa
39e0: 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  lly available...
39f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3a00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
3a10: 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52  rnal const int R
3a20: 54 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31  TLD_GLOBAL = 0x1
3a30: 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00;....      ///
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 2f  ////////////////
3a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3a80: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
3a90: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3aa0: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
3ab0: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70  ith dlopen(), op
3ac0: 70 6f 73 69 74 65 20 6f 66 20 52 54 4c 44 5f 47  posite of RTLD_G
3ad0: 4c 4f 42 41 4c 2c 20 61 6e 64 20 74 68 65 20 64  LOBAL, and the d
3ae0: 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f  efault...      /
3af0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3b00: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
3b10: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43  nst int RTLD_LOC
3b20: 41 4c 20 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20  AL = 0x000;.... 
3b30: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
3b80: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3b90: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  ry>..      /// F
3ba0: 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70  or use with dlop
3bb0: 65 6e 28 29 2c 20 74 68 65 20 64 65 66 61 75 6c  en(), the defaul
3bc0: 74 73 20 75 73 65 64 20 62 79 20 74 68 69 73 20  ts used by this 
3bd0: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  class...      //
3be0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3bf0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 20 63 6f      internal  co
3c00: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 44 45 46  nst int RTLD_DEF
3c10: 41 55 4c 54 20 3d 20 52 54 4c 44 5f 4e 4f 57 20  AULT = RTLD_NOW 
3c20: 7c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a  | RTLD_GLOBAL;..
3c30: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23    }..#endif..  #
3c40: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f  endregion....  /
3c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3ca0: 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61    #region Unmana
3cb0: 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68  ged Interop Meth
3cc0: 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73  ods Static Class
3cd0: 20 28 57 69 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20   (Win32)..  /// 
3ce0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
3cf0: 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c   This class decl
3d00: 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65  ares P/Invoke me
3d10: 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61  thods to call na
3d20: 74 69 76 65 20 57 69 6e 33 32 20 41 50 49 73 2e  tive Win32 APIs.
3d30: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
3d40: 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  y>..#if !PLATFOR
3d50: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
3d60: 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55  RK..  [SuppressU
3d70: 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75  nmanagedCodeSecu
3d80: 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  rity]..#endif.. 
3d90: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
3da0: 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74   class UnsafeNat
3db0: 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 0d  iveMethodsWin32.
3dc0: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 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 2f 2f  ////////////////
3df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e10: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
3e20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3e30: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
3e40: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
3e50: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
3e60: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 4c 6f   native Win32 Lo
3e70: 61 64 4c 69 62 72 61 72 79 0d 0a 20 20 20 20 20  adLibrary..     
3e80: 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20   /// function.  
3e90: 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63  See the MSDN doc
3ea0: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66  umentation for f
3eb0: 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77  ull details on w
3ec0: 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f  hat it..      //
3ed0: 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f  / does...      /
3ee0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3ef0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
3f00: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
3f10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
3f20: 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63  name of the exec
3f30: 75 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d  utable library..
3f40: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
3f50: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
3f60: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3f70: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
3f80: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
3f90: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
3fa0: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
3fb0: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
3fc0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69  / </returns>..#i
3fd0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
3fe0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
3ff0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
4000: 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73  kernel32",..#els
4010: 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70  e..      [DllImp
4020: 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a  ort("coredll",..
4030: 23 65 6e 64 69 66 0d 0a 20 43 61 6c 6c 69 6e 67  #endif.. Calling
4040: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
4050: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
4060: 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d  inapi, CharSet =
4070: 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a   CharSet.Auto,..
4080: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
4090: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
40a0: 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69            BestFi
40b0: 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65  tMapping = false
40c0: 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61  , ThrowOnUnmappa
40d0: 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d  bleChar = true,.
40e0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
40f0: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20     SetLastError 
4100: 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  = true)]..      
4110: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4120: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f  extern IntPtr Lo
4130: 61 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67  adLibrary(string
4140: 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   fileName);.... 
4150: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
41a0: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
41b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
41c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
41d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
41e0: 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e  This is the P/In
41f0: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74  voke method that
4200: 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76   wraps the nativ
4210: 65 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65  e Win32 GetSyste
4220: 6d 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f  mInfo..      ///
4230: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
4240: 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
4250: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
4260: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
4270: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
4280: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
4290: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
42a0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
42b0: 3d 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a  ="systemInfo">..
42c0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79        /// The sy
42d0: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
42e0: 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65   structure to be
42f0: 20 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68   filled in by th
4300: 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  e function...   
4310: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
4320: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
4330: 74 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c  t("coredll", Cal
4340: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
4350: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
4360: 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20  on.Winapi)]..   
4370: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4380: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47  ic extern void G
4390: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
43a0: 20 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73   SYSTEM_INFO sys
43b0: 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20  temInfo);....   
43c0: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
4410: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4420: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
4430: 73 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f  s enumeration co
4440: 6e 74 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69  ntains the possi
4450: 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74  ble values for t
4460: 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  he processor..  
4470: 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63      /// architec
4480: 74 75 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68  ture field of th
4490: 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61  e system informa
44a0: 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d  tion structure..
44b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
44c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
44d0: 65 72 6e 61 6c 20 65 6e 75 6d 20 50 72 6f 63 65  ernal enum Proce
44e0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
44f0: 20 3a 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d   : ushort /* COM
4500: 50 41 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a  PAT: Win32. */..
4510: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4520: 20 20 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20     Intel = 0,.. 
4530: 20 20 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20           MIPS = 
4540: 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c  1,..          Al
4550: 70 68 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20  pha = 2,..      
4560: 20 20 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c      PowerPC = 3,
4570: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 48 78 20  ..          SHx 
4580: 3d 20 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 4,..          
4590: 41 52 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20  ARM = 5,..      
45a0: 20 20 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20      IA64 = 6,.. 
45b0: 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 36 34           Alpha64
45c0: 20 3d 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 7,..         
45d0: 20 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20   MSIL = 8,..    
45e0: 20 20 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c        AMD64 = 9,
45f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41 33 32  ..          IA32
4600: 5f 6f 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d  _on_Win64 = 10,.
4610: 0a 20 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f  .          Unkno
4620: 77 6e 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20  wn = 0xFFFF..   
4630: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4680: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
4690: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
46a0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72      /// This str
46b0: 75 63 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20  ucture contains 
46c0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
46d0: 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f  t the current co
46e0: 6d 70 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20  mputer. This..  
46f0: 20 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73      /// includes
4700: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74   the processor t
4710: 79 70 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20  ype, page size, 
4720: 6d 65 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73  memory addresses
4730: 2c 20 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f  , etc...      //
4740: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4750: 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
4760: 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
4770: 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20  uential)]..     
4780: 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
4790: 20 53 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20   SYSTEM_INFO..  
47a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
47b0: 20 70 75 62 6c 69 63 20 50 72 6f 63 65 73 73 6f   public Processo
47c0: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 77 50  rArchitecture wP
47d0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
47e0: 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ture;..         
47f0: 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77   public ushort w
4800: 52 65 73 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54  Reserved; /* NOT
4810: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
4820: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
4830: 64 77 50 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e  dwPageSize; /* N
4840: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
4850: 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
4860: 50 74 72 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70  Ptr lpMinimumApp
4870: 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b  licationAddress;
4880: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
4890: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
48a0: 63 20 49 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d  c IntPtr lpMaxim
48b0: 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64  umApplicationAdd
48c0: 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  ress; /* NOT USE
48d0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
48e0: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 63  public uint dwAc
48f0: 74 69 76 65 50 72 6f 63 65 73 73 6f 72 4d 61 73  tiveProcessorMas
4900: 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  k; /* NOT USED *
4910: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
4920: 6c 69 63 20 75 69 6e 74 20 64 77 4e 75 6d 62 65  lic uint dwNumbe
4930: 72 4f 66 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f  rOfProcessors; /
4940: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
4950: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
4960: 75 69 6e 74 20 64 77 50 72 6f 63 65 73 73 6f 72  uint dwProcessor
4970: 54 79 70 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Type; /* NOT USE
4980: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
4990: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 6c  public uint dwAl
49a0: 6c 6f 63 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72  locationGranular
49b0: 69 74 79 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ity; /* NOT USED
49c0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
49d0: 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72  ublic ushort wPr
49e0: 6f 63 65 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a  ocessorLevel; /*
49f0: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
4a00: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
4a10: 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72  short wProcessor
4a20: 52 65 76 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54  Revision; /* NOT
4a30: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
4a40: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a  }..#endif..  }..
4a50: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
4a60: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
4ab0: 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d  ...  #region Unm
4ac0: 61 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d  anaged Interop M
4ad0: 65 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c  ethods Static Cl
4ae0: 61 73 73 20 28 53 51 4c 69 74 65 29 0d 0a 20 20  ass (SQLite)..  
4af0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4b00: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
4b10: 64 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b  declares P/Invok
4b20: 65 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c  e methods to cal
4b30: 6c 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  l native SQLite 
4b40: 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  APIs...  /// </s
4b50: 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c  ummary>..#if !PL
4b60: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
4b70: 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53 75 70 70  AMEWORK..  [Supp
4b80: 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64  ressUnmanagedCod
4b90: 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64  eSecurity]..#end
4ba0: 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  if..  internal s
4bb0: 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61  tatic class Unsa
4bc0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d  feNativeMethods.
4bd0: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72 65 67  .  {..      #reg
4be0: 69 6f 6e 20 53 68 61 72 65 64 20 4e 61 74 69 76  ion Shared Nativ
4bf0: 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79  e SQLite Library
4c00: 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64   Pre-Loading Cod
4c10: 65 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  e..      #region
4c20: 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e   Private Constan
4c30: 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ts..      /// <s
4c40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
4c50: 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65  // The file exte
4c60: 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 64  nsion used for d
4c70: 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72  ynamic link libr
4c80: 61 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  aries...      //
4c90: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4ca0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
4cb0: 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69  ic readonly stri
4cc0: 6e 67 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73  ng DllFileExtens
4cd0: 69 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d  ion = ".dll";...
4ce0: 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
4d40: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
4d50: 20 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e 73   The file extens
4d60: 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 74 68 65  ion used for the
4d70: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
4d80: 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  on file...      
4d90: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4da0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
4db0: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
4dc0: 72 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c 65 45  ring ConfigFileE
4dd0: 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63 6f 6e  xtension = ".con
4de0: 66 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  fig";....      /
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e30: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
4e40: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4e50: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
4e60: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
4e70: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
4e80: 6f 6e 20 66 69 6c 65 20 73 70 65 63 69 66 69 63  on file specific
4e90: 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   to the..      /
4ea0: 2f 2f 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  // System.Data.S
4eb0: 51 4c 69 74 65 20 61 73 73 65 6d 62 6c 79 2e 0d  QLite assembly..
4ec0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
4ed0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
4ee0: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
4ef0: 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43  only string XmlC
4f00: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 0d  onfigFileName =.
4f10: 0a 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f  .          typeo
4f20: 66 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f(UnsafeNativeMe
4f30: 74 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61 63 65  thods).Namespace
4f40: 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73   + DllFileExtens
4f50: 69 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  ion +..         
4f60: 20 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e   ConfigFileExten
4f70: 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  sion;....      /
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4fc0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
4fd0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4fe0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
4ff0: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
5000: 72 61 74 72 69 6f 6e 20 66 69 6c 65 20 74 6f 6b  ratrion file tok
5010: 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20  en that will be 
5020: 72 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a 20  replaced with.. 
5030: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75 61       /// the qua
5040: 6c 69 66 69 65 64 20 70 61 74 68 20 74 6f 20 74  lified path to t
5050: 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e  he directory con
5060: 74 61 69 6e 69 6e 67 20 74 68 65 20 58 4d 4c 20  taining the XML 
5070: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20  configuration.. 
5080: 20 20 20 20 20 2f 2f 2f 20 66 69 6c 65 2e 0d 0a       /// file...
5090: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
50a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
50b0: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
50c0: 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f  nly string XmlCo
50d0: 6e 66 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b  nfigDirectoryTok
50e0: 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  en =..          
50f0: 22 25 53 51 4c 69 74 65 5f 58 6d 6c 43 6f 6e 66  "%SQLite_XmlConf
5100: 69 67 44 69 72 65 63 74 6f 72 79 25 22 3b 0d 0a  igDirectory%";..
5110: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
5120: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5170: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
5180: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
5190: 73 74 61 6e 74 73 20 28 44 65 73 6b 74 6f 70 20  stants (Desktop 
51a0: 46 72 61 6d 65 77 6f 72 6b 20 4f 6e 6c 79 29 0d  Framework Only).
51b0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
51c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
51d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
51e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
51f0: 54 68 69 73 20 69 73 20 74 68 65 20 65 6e 76 69  This is the envi
5200: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
5210: 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c   token that will
5220: 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74   be replaced wit
5230: 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  h..      /// the
5240: 20 71 75 61 6c 69 66 69 65 64 20 70 61 74 68 20   qualified path 
5250: 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  to the directory
5260: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73   containing this
5270: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
5280: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5290: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
52a0: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
52b0: 73 74 72 69 6e 67 20 41 73 73 65 6d 62 6c 79 44  string AssemblyD
52c0: 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d  irectoryToken =.
52d0: 0a 20 20 20 20 20 20 20 20 20 20 22 25 53 51 4c  .          "%SQL
52e0: 69 74 65 5f 41 73 73 65 6d 62 6c 79 44 69 72 65  ite_AssemblyDire
52f0: 63 74 6f 72 79 25 22 3b 0d 0a 23 65 6e 64 69 66  ctory%";..#endif
5300: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
5310: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
5320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5360: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
5370: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
5380: 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ata..      /// <
5390: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
53a0: 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73  /// This lock is
53b0: 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74   used to protect
53c0: 20 74 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c   the static _SQL
53d0: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
53e0: 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
53f0: 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  /// _SQLiteNativ
5400: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 2c 20 61  eModuleHandle, a
5410: 6e 64 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  nd processorArch
5420: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
5430: 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20  s fields...     
5440: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5450: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
5460: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f  tatic readonly o
5470: 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63  bject staticSync
5480: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
5490: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  t();....      //
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
54f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5500: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
5510: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74  tionary stores t
5520: 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77  he mappings betw
5530: 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20 61 72  een processor ar
5540: 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20  chitecture..    
5550: 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61 6e 64 20    /// names and 
5560: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 2e 20  platform names. 
5570: 20 54 68 65 73 65 20 6d 61 70 70 69 6e 67 73 20   These mappings 
5580: 61 72 65 20 6e 6f 77 20 75 73 65 64 20 66 6f 72  are now used for
5590: 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   two..      /// 
55a0: 70 75 72 70 6f 73 65 73 2e 20 20 46 69 72 73 74  purposes.  First
55b0: 2c 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20  , they are used 
55c0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  to determine if 
55d0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64  the assembly cod
55e0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73  e..      /// bas
55f0: 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  e should be used
5600: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
5610: 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73 65 64 20  location, based 
5620: 75 70 6f 6e 20 77 68 65 74 68 65 72 20 6f 6e 65  upon whether one
5630: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d  ..      /// or m
5640: 6f 72 65 20 6f 66 20 74 68 65 20 6e 61 6d 65 64  ore of the named
5650: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73   sub-directories
5660: 20 65 78 69 73 74 20 77 69 74 68 69 6e 20 74 68   exist within th
5670: 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d  e assembly code.
5680: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 2e  .      /// base.
5690: 20 20 53 65 63 6f 6e 64 2c 20 74 68 65 79 20 61    Second, they a
56a0: 72 65 20 75 73 65 64 20 74 6f 20 61 73 73 69 73  re used to assis
56b0: 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65  t in loading the
56c0: 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20   appropriate..  
56d0: 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69      /// SQLite i
56e0: 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20  nterop assembly 
56f0: 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74  into the current
5700: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
5710: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5720: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
5730: 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79  tatic Dictionary
5740: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
5750: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
5760: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b  ecturePlatforms;
5770: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
5780: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
5790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57d0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
57e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
57f0: 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20 74    /// For now, t
5800: 68 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70 6c  his method simpl
5810: 79 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69 74  y calls the Init
5820: 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d 0a  ialize method...
5830: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5840: 61 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61 74  ary>..      stat
5850: 69 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ic UnsafeNativeM
5860: 65 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20 20  ethods()..      
5870: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 69  {..          Ini
5880: 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20 20  tialize();..    
5890: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
58a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58e0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
58f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5900: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
5910: 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68  to initialize th
5920: 69 73 20 63 6c 61 73 73 20 62 79 20 70 72 65 2d  is class by pre-
5930: 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74 69  loading the nati
5940: 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
5950: 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f 72   /// library for
5960: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
5970: 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
5980: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
5990: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
59a0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
59b0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
59c0: 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65   void Initialize
59d0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66  ()..      {..#if
59e0: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
59f0: 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f   || USE_INTEROP_
5a00: 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f  DLL || PLATFORM_
5a10: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
5a20: 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41  ..#if PRELOAD_NA
5a30: 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20  TIVE_LIBRARY..  
5a40: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5a50: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
5a60: 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f 61  f the "No_PreLoa
5a70: 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e  dSQLite" environ
5a80: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73  ment variable is
5a90: 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20 20   set (to..      
5aa0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 79      //       any
5ab0: 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c 6c  thing), skip all
5ac0: 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f 64   our special cod
5ad0: 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65 74  e and simply ret
5ae0: 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  urn...          
5af0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
5b00: 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75   (GetSettingValu
5b10: 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c  e("No_PreLoadSQL
5b20: 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  ite", null) != n
5b30: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
5b40: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65 6e      return;..#en
5b50: 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  dif..#endif.... 
5b60: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
5b70: 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c   Debug Build Onl
5b80: 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  y..#if DEBUG..  
5b90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5ba0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
5bb0: 72 65 61 74 65 20 74 68 65 20 6c 69 73 74 20 6f  reate the list o
5bc0: 66 20 73 74 61 74 69 73 74 69 63 73 20 74 68 61  f statistics tha
5bd0: 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74  t will contain t
5be0: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
5bf0: 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66         number of
5c00: 20 74 69 6d 65 73 20 65 61 63 68 20 73 65 74 74   times each sett
5c10: 69 6e 67 20 76 61 6c 75 65 20 68 61 73 20 62 65  ing value has be
5c20: 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20  en read...      
5c30: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
5c40: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 69 74    DebugData.Init
5c50: 69 61 6c 69 7a 65 53 65 74 74 69 6e 67 52 65 61  ializeSettingRea
5c60: 64 43 6f 75 6e 74 73 28 29 3b 0d 0a 23 65 6e 64  dCounts();..#end
5c70: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
5c80: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
5c90: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
5ca0: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
5cb0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5cc0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5cd0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 4f 44            // TOD
5ce0: 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 69  O: Make sure thi
5cf0: 73 20 6c 69 73 74 20 69 73 20 75 70 64 61 74 65  s list is update
5d00: 64 20 69 66 20 74 68 65 20 73 75 70 70 6f 72 74  d if the support
5d10: 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
5d20: 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
5d30: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
5d40: 65 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72 20 70  e names and/or p
5d50: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20  latform names.. 
5d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5d70: 20 20 20 20 20 20 63 68 61 6e 67 65 73 2e 0d 0a        changes...
5d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5da0: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
5db0: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
5dc0: 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ms == null)..   
5dd0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5df0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
5e00: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
5e10: 72 65 61 74 65 20 74 68 65 20 6d 61 70 20 6f 66  reate the map of
5e20: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
5e30: 74 65 63 74 75 72 65 20 6e 61 6d 65 73 0d 0a 20  tecture names.. 
5e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e50: 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 70 6c 61   //       to pla
5e60: 74 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73 69 6e  tform names usin
5e70: 67 20 61 20 63 61 73 65 2d 69 6e 73 65 6e 73 69  g a case-insensi
5e80: 74 69 76 65 20 73 74 72 69 6e 67 0d 0a 20 20 20  tive string..   
5e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
5ea0: 2f 20 20 20 20 20 20 20 63 6f 6d 70 61 72 65 72  /       comparer
5eb0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
5ec0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5ed0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
5ee0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
5ef0: 50 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20 20 20  Platforms =..   
5f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f10: 20 20 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72     new Dictionar
5f20: 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  y<string, string
5f30: 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  >(..            
5f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
5f50: 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64  ringComparer.Ord
5f60: 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b  inalIgnoreCase);
5f70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
5f80: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5f90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
5fa0: 4f 54 45 3a 20 53 65 74 75 70 20 74 68 65 20 6c  OTE: Setup the l
5fb0: 69 73 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d 20  ist of platform 
5fc0: 6e 61 6d 65 73 20 61 73 73 6f 63 69 61 74 65 64  names associated
5fd0: 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 20   with..         
5fe0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
5ff0: 20 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20    the supported 
6000: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
6010: 65 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20 20  ectures...      
6020: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
6030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6040: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
6050: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
6060: 2e 41 64 64 28 22 78 38 36 22 2c 20 22 57 69 6e  .Add("x86", "Win
6070: 33 32 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  32");..         
6080: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
6090: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
60a0: 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44  atforms.Add("AMD
60b0: 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20  64", "x64");..  
60c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60d0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
60e0: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41  cturePlatforms.A
60f0: 64 64 28 22 49 41 36 34 22 2c 20 22 49 74 61 6e  dd("IA64", "Itan
6100: 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ium");..        
6110: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
6120: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
6130: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 52  latforms.Add("AR
6140: 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20  M", "WinCE");.. 
6150: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
6160: 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
6170: 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54  NDARD || USE_INT
6180: 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54  EROP_DLL || PLAT
6190: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
61a0: 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f  EWORK..#if PRELO
61b0: 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52  AD_NATIVE_LIBRAR
61c0: 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  Y..             
61d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
61e0: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 68     // BUGBUG: Wh
61f0: 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20 61  at about other a
6200: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
6210: 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns?..           
6220: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
6230: 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74 65       if (_SQLite
6240: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  NativeModuleHand
6250: 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
6260: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
6270: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6280: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 61         string ba
6290: 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75  seDirectory = nu
62a0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
62b0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72         string pr
62c0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
62d0: 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  ure = null;.... 
62e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62f0: 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a   /* IGNORED */..
6300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6310: 20 20 53 65 61 72 63 68 46 6f 72 44 69 72 65 63    SearchForDirec
6320: 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20  tory(..         
6330: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
6340: 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
6350: 72 65 66 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ref processorArc
6360: 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20  hitecture);.... 
6370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6380: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
6390: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
63a0: 41 74 74 65 6d 70 74 20 74 6f 20 70 72 65 2d 6c  Attempt to pre-l
63b0: 6f 61 64 20 74 68 65 20 53 51 4c 69 74 65 20 63  oad the SQLite c
63c0: 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72 0d  ore library (or.
63d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
63e0: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 74 65     //       inte
63f0: 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 61 6e  rop assembly) an
6400: 64 20 73 74 6f 72 65 20 62 6f 74 68 20 74 68 65  d store both the
6410: 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20   file name..    
6420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6430: 20 20 20 20 20 20 20 61 6e 64 20 6e 61 74 69 76         and nativ
6440: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
6450: 66 6f 72 20 6c 61 74 65 72 20 75 73 61 67 65 2e  for later usage.
6460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6470: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6480: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e            /* IGN
6490: 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ORED */..       
64a0: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 4c 6f             PreLo
64b0: 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20  adSQLiteDll(..  
64c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
64d0: 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
64e0: 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  y, processorArch
64f0: 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20 20  itecture,..     
6500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6510: 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69   ref _SQLiteNati
6520: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
6530: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6540: 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51           ref _SQ
6550: 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
6560: 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  Handle);..      
6570: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
6580: 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  f..#endif..     
6590: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
65a0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
65b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65c0: 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
6600: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6610: 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f 20  // Combines two 
6620: 70 61 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a 20  path strings... 
6630: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6640: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
6650: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68  param name="path
6660: 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  1">..      /// T
6670: 68 65 20 66 69 72 73 74 20 70 61 74 68 20 2d 4f  he first path -O
6680: 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  R- null...      
6690: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
66a0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
66b0: 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20 20  ame="path2">..  
66c0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63 6f      /// The seco
66d0: 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c  nd path -OR- nul
66e0: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
66f0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
6700: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
6710: 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62 69     /// The combi
6720: 6e 65 64 20 70 61 74 68 20 73 74 72 69 6e 67 20  ned path string 
6730: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f 74  -OR- null if bot
6740: 68 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61  h of the origina
6750: 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20 2f 2f  l path..      //
6760: 2f 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e 75  / strings are nu
6770: 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ll...      /// <
6780: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
6790: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
67a0: 73 74 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d 62  string MaybeComb
67b0: 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
67c0: 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68 31      string path1
67d0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  ,..          str
67e0: 69 6e 67 20 70 61 74 68 32 0d 0a 20 20 20 20 20  ing path2..     
67f0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
6800: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
6810: 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ath1 != null).. 
6820: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
6830: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
6840: 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  th2 != null)..  
6850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6860: 72 65 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d 62  return Path.Comb
6870: 69 6e 65 28 70 61 74 68 31 2c 20 70 61 74 68 32  ine(path1, path2
6880: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
6890: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
68a0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
68b0: 20 70 61 74 68 31 3b 0d 0a 20 20 20 20 20 20 20   path1;..       
68c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
68d0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
68e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
68f0: 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e 75   if (path2 != nu
6900: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
6910: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61         return pa
6920: 74 68 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  th2;..          
6930: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
6940: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6950: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
6960: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
6970: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
6980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69c0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
69d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
69e0: 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
69f0: 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20 63 6f  turns the XML co
6a00: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
6a10: 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 61 73   name for the as
6a20: 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  sembly..      //
6a30: 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  / containing the
6a40: 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e   managed System.
6a50: 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70  Data.SQLite comp
6a60: 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20 2f  onents...      /
6a70: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6a80: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
6a90: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
6aa0: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
6ab0: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f  ion file name -O
6ac0: 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61  R- null if it ca
6ad0: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
6ae0: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72  ed..      /// or
6af0: 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e   does not exist.
6b00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
6b10: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
6b20: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
6b30: 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67  ing GetXmlConfig
6b40: 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20  FileName()..    
6b50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73    {..          s
6b60: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 3b  tring directory;
6b70: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
6b80: 6e 67 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a  ng fileName;....
6b90: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
6ba0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
6bb0: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
6bc0: 6f 72 79 20 3d 20 41 70 70 44 6f 6d 61 69 6e 2e  ory = AppDomain.
6bd0: 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61  CurrentDomain.Ba
6be0: 73 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  seDirectory;..  
6bf0: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
6c00: 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50   = MaybeCombineP
6c10: 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58  ath(directory, X
6c20: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
6c30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
6c40: 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28  if (File.Exists(
6c50: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
6c60: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6c70: 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 23 65 6e 64   fileName;..#end
6c80: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
6c90: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41  directory = GetA
6ca0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
6cb0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ();..          f
6cc0: 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43  ileName = MaybeC
6cd0: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
6ce0: 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
6cf0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
6d00: 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
6d10: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
6d20: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
6d30: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
6d40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ;....          r
6d50: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
6d60: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
6d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6db0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6dc0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6dd0: 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 6e 65 63        /// If nec
6de0: 65 73 73 61 72 79 2c 20 72 65 70 6c 61 63 65 73  essary, replaces
6df0: 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 58   all supported X
6e00: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
6e10: 20 66 69 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20 20   file tokens..  
6e20: 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65      /// with the
6e30: 69 72 20 61 73 73 6f 63 69 61 74 65 64 20 76 61  ir associated va
6e40: 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lues...      ///
6e50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6e60: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
6e70: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
6e80: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
6e90: 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f  me of the XML co
6ea0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
6eb0: 20 62 65 69 6e 67 20 72 65 61 64 2e 0d 0a 20 20   being read...  
6ec0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
6ed0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
6ee0: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
6ef0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 65  ..      /// A se
6f00: 74 74 69 6e 67 20 76 61 6c 75 65 20 72 65 61 64  tting value read
6f10: 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20 63 6f   from the XML co
6f20: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
6f30: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
6f40: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
6f50: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
6f60: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
6f70: 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66  of the <paramref
6f80: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e   name="value" />
6f90: 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72   will all suppor
6fa0: 74 65 64 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f  ted XML..      /
6fb0: 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  // configuration
6fc0: 20 66 69 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70   file tokens rep
6fd0: 6c 61 63 65 64 2e 20 20 4e 6f 20 72 65 74 75 72  laced.  No retur
6fe0: 6e 20 76 61 6c 75 65 20 69 73 20 72 65 73 65 72  n value is reser
6ff0: 76 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ved..      /// t
7000: 6f 20 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72  o indicate an er
7010: 72 6f 72 2e 20 20 54 68 69 73 20 6d 65 74 68 6f  ror.  This metho
7020: 64 20 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a  d cannot fail...
7030: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
7040: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
7050: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
7060: 67 20 52 65 70 6c 61 63 65 58 6d 6c 43 6f 6e 66  g ReplaceXmlConf
7070: 69 67 46 69 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20  igFileTokens(.. 
7080: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
7090: 66 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  fileName,..     
70a0: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
70b0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
70c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
70d0: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
70e0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c  sNullOrEmpty(val
70f0: 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
7100: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
7110: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
7120: 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
7130: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
7140: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7150: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
7160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7170: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7180: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
7190: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74   directory = Pat
71a0: 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61  h.GetDirectoryNa
71b0: 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  me(fileName);...
71c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
71d0: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
71e0: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
71f0: 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20  (directory))..  
7200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7210: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7230: 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52   value = value.R
7240: 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20  eplace(..       
7250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7260: 20 20 20 20 20 20 20 58 6d 6c 43 6f 6e 66 69 67         XmlConfig
7270: 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20  DirectoryToken, 
7280: 64 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20  directory);..   
7290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72a0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
72b0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
72c0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
72d0: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
72e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72f0: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
7300: 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
7310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7320: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
7330: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
7340: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7350: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
7360: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
7370: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
7380: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
7390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
73a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
73b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
73c0: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
73d0: 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
73e0: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
73f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
7410: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
7420: 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76  tCulture, "Nativ
7430: 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20  e library " +.. 
7440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7450: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72               "pr
7460: 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
7470: 74 6f 20 72 65 70 6c 61 63 65 20 58 4d 4c 20 22  to replace XML "
7480: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
7490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74a0: 20 20 22 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e    "configuration
74b0: 20 66 69 6c 65 20 5c 22 7b 30 7d 5c 22 20 74 6f   file \"{0}\" to
74c0: 6b 65 6e 73 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  kens: {1}",..   
74d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74e0: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
74f0: 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  ame, e)); /* thr
7500: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
7510: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
7520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7530: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
7540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7550: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7570: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
7580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7590: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
75a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
75b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
75c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
75d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
75e0: 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20  return value;.. 
75f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
7600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
7650: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7660: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
7670: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
7680: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
7690: 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74 69   specified setti
76a0: 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ng, using the.. 
76b0: 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69       /// specifi
76c0: 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  ed XML configura
76d0: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
76e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
76f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
7700: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
7710: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
7720: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 58  he name of the X
7730: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
7740: 20 66 69 6c 65 20 74 6f 20 72 65 61 64 2e 0d 0a   file to read...
7750: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
7760: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
7770: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
7780: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
7790: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74   name of the set
77a0: 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ting...      ///
77b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
77c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
77d0: 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20  ="default">..   
77e0: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
77f0: 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20   to be returned 
7800: 69 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 68  if the setting h
7810: 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20  as not been set 
7820: 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20  explicitly..    
7830: 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20    /// or cannot 
7840: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
7850: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
7860: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
7870: 61 72 61 6d 20 6e 61 6d 65 3d 22 65 78 70 61 6e  aram name="expan
7880: 64 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  d">..      /// N
7890: 6f 6e 2d 7a 65 72 6f 20 74 6f 20 65 78 70 61 6e  on-zero to expan
78a0: 64 20 61 6e 79 20 65 6e 76 69 72 6f 6e 6d 65 6e  d any environmen
78b0: 74 20 76 61 72 69 61 62 6c 65 20 72 65 66 65 72  t variable refer
78c0: 65 6e 63 65 73 20 63 6f 6e 74 61 69 6e 65 64 20  ences contained 
78d0: 69 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  in..      /// th
78e0: 65 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20  e setting value 
78f0: 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20  to be returned. 
7900: 20 54 68 69 73 20 68 61 73 20 6e 6f 20 65 66 66   This has no eff
7910: 65 63 74 20 6f 6e 20 74 68 65 20 2e 4e 45 54 0d  ect on the .NET.
7920: 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 70 61  .      /// Compa
7930: 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20  ct Framework... 
7940: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
7950: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
7960: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
7970: 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
7980: 68 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20  he setting -OR- 
7990: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
79a0: 65 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a  e specified by..
79b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
79c0: 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  ref name="defaul
79d0: 74 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20  t" /> if it has 
79e0: 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70  not been set exp
79f0: 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20  licitly or..    
7a00: 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
7a10: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
7a20: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
7a30: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
7a40: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
7a50: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56 69  etSettingValueVi
7a60: 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d  aXmlConfigFile(.
7a70: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
7a80: 67 20 66 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 69  g fileName, /* i
7a90: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
7aa0: 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20  string name,    
7ab0: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
7ac0: 20 20 20 20 20 73 74 72 69 6e 67 20 40 64 65 66       string @def
7ad0: 61 75 6c 74 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  ault, /* in */..
7ae0: 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65            bool e
7af0: 78 70 61 6e 64 20 20 20 20 20 20 2f 2a 20 69 6e  xpand      /* in
7b00: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
7b10: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
7b20: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
7b30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7b40: 20 20 20 20 20 69 66 20 28 28 66 69 6c 65 4e 61       if ((fileNa
7b50: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  me == null) || (
7b60: 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a  name == null))..
7b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b80: 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
7b90: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
7ba0: 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 20      XmlDocument 
7bb0: 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65 77 20 58  document = new X
7bc0: 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b 0d 0a 0d  mlDocument();...
7bd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64  .              d
7be0: 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28 66 69 6c  ocument.Load(fil
7bf0: 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77  eName); /* throw
7c00: 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
7c10: 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 20       XmlElement 
7c20: 65 6c 65 6d 65 6e 74 20 3d 20 64 6f 63 75 6d 65  element = docume
7c30: 6e 74 2e 53 65 6c 65 63 74 53 69 6e 67 6c 65 4e  nt.SelectSingleN
7c40: 6f 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ode(..          
7c50: 20 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65          HelperMe
7c60: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
7c70: 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  at(CultureInfo.I
7c80: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c  nvariantCulture,
7c90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7ca0: 20 20 20 20 22 2f 63 6f 6e 66 69 67 75 72 61 74      "/configurat
7cb0: 69 6f 6e 2f 61 70 70 53 65 74 74 69 6e 67 73 2f  ion/appSettings/
7cc0: 61 64 64 5b 40 6b 65 79 3d 27 7b 30 7d 27 5d 22  add[@key='{0}']"
7cd0: 2c 20 6e 61 6d 65 29 29 20 61 73 0d 0a 20 20 20  , name)) as..   
7ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58                 X
7cf0: 6d 6c 45 6c 65 6d 65 6e 74 3b 20 2f 2a 20 74 68  mlElement; /* th
7d00: 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  row */....      
7d10: 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
7d20: 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ent != null)..  
7d30: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
7d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d50: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20   string value = 
7d60: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
7d70: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
7d80: 6c 65 6d 65 6e 74 2e 48 61 73 41 74 74 72 69 62  lement.HasAttrib
7d90: 75 74 65 28 22 76 61 6c 75 65 22 29 29 0d 0a 20  ute("value")).. 
7da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7db0: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 65 6c 65       value = ele
7dc0: 6d 65 6e 74 2e 47 65 74 41 74 74 72 69 62 75 74  ment.GetAttribut
7dd0: 65 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20  e("value");.... 
7de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7df0: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
7e00: 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65  ullOrEmpty(value
7e10: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
7e20: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
7e30: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7e40: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
7e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7e60: 66 20 28 65 78 70 61 6e 64 29 0d 0a 20 20 20 20  f (expand)..    
7e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e80: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e        value = En
7e90: 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64  vironment.Expand
7ea0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
7eb0: 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a  bles(value);....
7ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ed0: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65        value = Re
7ee0: 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74  placeEnvironment
7ef0: 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76  VariableTokens(v
7f00: 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
7f10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7f20: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
7f30: 52 65 70 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67  ReplaceXmlConfig
7f40: 46 69 6c 65 54 6f 6b 65 6e 73 28 66 69 6c 65 4e  FileTokens(fileN
7f50: 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ame, value);..  
7f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f70: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
7f80: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
7f90: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fb0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
7fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
7fd0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
7fe0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
7ff0: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
8000: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
8010: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
8020: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
8030: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
8040: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
8050: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
8060: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
8070: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
8080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
8090: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
80a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
80b0: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
80c0: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
80d0: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
80e0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
80f0: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
8100: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
8110: 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62  ure, "Native lib
8120: 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  rary " +..      
8130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8140: 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c  "pre-loader fail
8150: 65 64 20 74 6f 20 67 65 74 20 73 65 74 74 69 6e  ed to get settin
8160: 67 20 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65 20  g \"{0}\" value 
8170: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
8180: 20 20 20 20 20 20 20 20 20 20 20 22 66 72 6f 6d             "from
8190: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
81a0: 6f 6e 20 66 69 6c 65 20 5c 22 7b 31 7d 5c 22 3a  on file \"{1}\":
81b0: 20 7b 32 7d 22 2c 20 6e 61 6d 65 2c 0d 0a 20 20   {2}", name,..  
81c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81d0: 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 65 29      fileName, e)
81e0: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
81f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
8210: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
8220: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8230: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
8240: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
8250: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
8260: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
8270: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
8280: 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20  n @default;..   
8290: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
82a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
82f0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8300: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
8310: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8320: 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 6e 65 63        /// If nec
8330: 65 73 73 61 72 79 2c 20 72 65 70 6c 61 63 65 73  essary, replaces
8340: 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 65   all supported e
8350: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
8360: 62 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20  ble tokens..    
8370: 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 69 72    /// with their
8380: 20 61 73 73 6f 63 69 61 74 65 64 20 76 61 6c 75   associated valu
8390: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
83a0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
83b0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
83c0: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
83d0: 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67 20 76   /// A setting v
83e0: 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d 20 61  alue read from a
83f0: 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  n environment va
8400: 72 69 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  riable...      /
8410: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
8420: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
8430: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
8440: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 3c 70 61  value of the <pa
8450: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61 6c  ramref name="val
8460: 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20  ue" /> will all 
8470: 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20  supported..     
8480: 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   /// environment
8490: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73   variable tokens
84a0: 20 72 65 70 6c 61 63 65 64 2e 20 20 4e 6f 20 72   replaced.  No r
84b0: 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 72  eturn value is r
84c0: 65 73 65 72 76 65 64 0d 0a 20 20 20 20 20 20 2f  eserved..      /
84d0: 2f 2f 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61  // to indicate a
84e0: 6e 20 65 72 72 6f 72 2e 20 20 54 68 69 73 20 6d  n error.  This m
84f0: 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20 66 61 69  ethod cannot fai
8500: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
8510: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8520: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
8530: 74 72 69 6e 67 20 52 65 70 6c 61 63 65 45 6e 76  tring ReplaceEnv
8540: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
8550: 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20 20  Tokens(..       
8560: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d     string value.
8570: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
8580: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8590: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
85a0: 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65  ullOrEmpty(value
85b0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
85c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
85d0: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
85e0: 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  = GetAssemblyDir
85f0: 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20  ectory();....   
8600: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
8610: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
8620: 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29  mpty(directory))
8630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8640: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
8650: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
8660: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
8670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8680: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
8690: 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20  ue.Replace(..   
86a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86b0: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 44         AssemblyD
86c0: 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64  irectoryToken, d
86d0: 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20  irectory);..    
86e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
86f0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
8700: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
8710: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
8720: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
8730: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
8740: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
8750: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
8760: 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
8770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8780: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
8790: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
87a0: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
87b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87c0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
87d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
87e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87f0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
8800: 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
8810: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
8820: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
8830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8840: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
8850: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
8860: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
8870: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
8880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8890: 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66     "pre-loader f
88a0: 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65  ailed to replace
88b0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 22 20 2b   environment " +
88c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
88d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
88e0: 22 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73  "variable tokens
88f0: 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20  : {0}", e)); /* 
8900: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
8910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8920: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
8930: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
8940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8950: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8970: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
8980: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8990: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
89a0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
89b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
89c0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
89d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
89e0: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
89f0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
8a00: 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  f....      /////
8a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a50: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
8a60: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8a70: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
8a80: 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c   returns the val
8a90: 75 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  ue of the specif
8aa0: 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73 69  ied setting, usi
8ab0: 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20  ng the XML..    
8ac0: 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74    /// configurat
8ad0: 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f 72 20  ion file and/or 
8ae0: 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  the environment 
8af0: 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20 74 68  variables for th
8b00: 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20  e current..     
8b10: 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61 6e 64   /// process and
8b20: 2f 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  /or the current 
8b30: 73 79 73 74 65 6d 2c 20 77 68 65 6e 20 61 76 61  system, when ava
8b40: 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  ilable...      /
8b50: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8b60: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
8b70: 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
8b80: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
8b90: 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e   of the setting.
8ba0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
8bb0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
8bc0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66  <param name="def
8bd0: 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ault">..      //
8be0: 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62  / The value to b
8bf0: 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68  e returned if th
8c00: 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f  e setting has no
8c10: 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69  t been set expli
8c20: 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  citly..      ///
8c30: 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   or cannot be de
8c40: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
8c50: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8c60: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
8c70: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
8c80: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73  e value of the s
8c90: 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20  etting -OR- the 
8ca0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70  default value sp
8cb0: 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20  ecified by..    
8cc0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20    /// <paramref 
8cd0: 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f  name="default" /
8ce0: 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20  > if it has not 
8cf0: 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69  been set explici
8d00: 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  tly or..      //
8d10: 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
8d20: 72 6d 69 6e 65 64 2e 20 20 42 79 20 64 65 66 61  rmined.  By defa
8d30: 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72 65 6e  ult, all referen
8d40: 63 65 73 20 74 6f 20 65 78 69 73 74 69 6e 67 0d  ces to existing.
8d50: 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72  .      /// envir
8d60: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73  onment variables
8d70: 20 77 69 6c 6c 20 62 65 20 65 78 70 61 6e 64 65   will be expande
8d80: 64 20 74 6f 20 74 68 65 69 72 20 63 6f 72 72 65  d to their corre
8d90: 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65 73 0d  sponding values.
8da0: 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 69  .      /// withi
8db0: 6e 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 62  n the value to b
8dc0: 65 20 72 65 74 75 72 6e 65 64 20 75 6e 6c 65 73  e returned unles
8dd0: 73 20 65 69 74 68 65 72 20 74 68 65 20 22 4e 6f  s either the "No
8de0: 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20 20 20  _Expand" or..   
8df0: 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61 6e     /// "No_Expan
8e00: 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  d_<paramref name
8e10: 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e 76 69  ="name" />" envi
8e20: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
8e30: 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20 20 20   is set [to..   
8e40: 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e 67 5d     /// anything]
8e50: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
8e60: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69  eturns>..      i
8e70: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
8e80: 74 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e 67  tring GetSetting
8e90: 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
8ea0: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20    string name,  
8eb0: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
8ec0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64 65        string @de
8ed0: 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  fault /* in */..
8ee0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
8ef0: 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
8f00: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8f10: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
8f20: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
8f30: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
8f40: 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c 69 74 65  ecial "No_SQLite
8f50: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 22  GetSettingValue"
8f60: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
8f70: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
8f80: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
8f90: 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20   [to anything], 
8fa0: 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c  this method will
8fb0: 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20   always..       
8fc0: 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75     //       retu
8fd0: 72 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  rn the default v
8fe0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  alue...         
8ff0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
9000: 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47  f (Environment.G
9010: 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  etEnvironmentVar
9020: 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  iable(..        
9030: 20 20 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69          "No_SQLi
9040: 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  teGetSettingValu
9050: 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  e") != null)..  
9060: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9070: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9080: 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20  @default;..     
9090: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
90a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
90b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90f0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  /....          i
9100: 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  f (name == null)
9110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9120: 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b  return @default;
9130: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
9140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9180: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
9190: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
91a0: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
91b0: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
91c0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
91d0: 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 61 62   NOTE: We are ab
91e0: 6f 75 74 20 74 6f 20 72 65 61 64 20 61 20 73 65  out to read a se
91f0: 74 74 69 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d  tting value from
9200: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
9210: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
9220: 20 20 20 20 20 6f 72 20 70 6f 73 73 69 62 6c 79       or possibly
9230: 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20 63 6f   from the XML co
9240: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
9250: 3b 20 63 72 65 61 74 65 20 6f 72 0d 0a 20 20 20  ; create or..   
9260: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9270: 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61 70  increment the ap
9280: 70 72 6f 70 72 69 61 74 65 20 73 74 61 74 69 73  propriate statis
9290: 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  tic now...      
92a0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
92b0: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72    DebugData.Incr
92c0: 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64  ementSettingRead
92d0: 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 66 61 6c 73  Count(name, fals
92e0: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
92f0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
9300: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  n....          /
9310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9350: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
9360: 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 3d 20    bool expand = 
9370: 74 72 75 65 3b 20 2f 2a 20 53 48 41 52 45 44 3a  true; /* SHARED:
9380: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 20 2d 41 4e   Environment -AN
9390: 44 2d 20 58 4d 4c 20 63 6f 6e 66 69 67 20 66 69  D- XML config fi
93a0: 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  le. */....      
93b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
93c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
9400: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9410: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9420: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
9430: 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  lue = null;.... 
9440: 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76           if (Env
9450: 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69  ironment.GetEnvi
9460: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28  ronmentVariable(
9470: 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d 20  "No_Expand") != 
9480: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
9490: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
94a0: 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65    expand = false
94b0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
94c0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
94d0: 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47  f (Environment.G
94e0: 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  etEnvironmentVar
94f0: 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  iable(..        
9500: 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72            Helper
9510: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
9520: 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f  rmat(CultureInfo
9530: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
9540: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
9550: 20 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e 64        "No_Expand
9560: 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21 3d  _{0}", name)) !=
9570: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
9580: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9590: 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73     expand = fals
95a0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
95b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c  ...          val
95c0: 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  ue = Environment
95d0: 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  .GetEnvironmentV
95e0: 61 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a  ariable(name);..
95f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
9600: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
9610: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
9620: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9630: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
9640: 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20  pand)..         
9650: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
9660: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70   Environment.Exp
9670: 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  andEnvironmentVa
9680: 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d  riables(value);.
9690: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
96a0: 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65   value = Replace
96b0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
96c0: 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29  bleTokens(value)
96d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
96e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
96f0: 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  value != null)..
9700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
9710: 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20  turn value;.... 
9720: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9730: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
9740: 49 66 20 74 68 65 20 22 4e 6f 5f 53 51 4c 69 74  If the "No_SQLit
9750: 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22 20  eXmlConfigFile" 
9760: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
9770: 61 62 6c 65 20 69 73 0d 0a 20 20 20 20 20 20 20  able is..       
9780: 20 20 20 2f 2f 20 20 20 20 20 20 20 73 65 74 20     //       set 
9790: 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74  [to anything], t
97a0: 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20  his method will 
97b0: 4e 45 56 45 52 20 72 65 61 64 20 66 72 6f 6d 20  NEVER read from 
97c0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
97d0: 2f 20 20 20 20 20 20 20 58 4d 4c 20 63 6f 6e 66  /       XML conf
97e0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d  iguration file..
97f0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
9800: 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76           if (Env
9810: 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69  ironment.GetEnvi
9820: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28  ronmentVariable(
9830: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9840: 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43    "No_SQLiteXmlC
9850: 6f 6e 66 69 67 46 69 6c 65 22 29 20 21 3d 20 6e  onfigFile") != n
9860: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
9870: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9880: 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
9890: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
98a0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
98b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
98c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9900: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
9910: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
9920: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
9930: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9940: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20      // NOTE: We 
9950: 61 72 65 20 61 62 6f 75 74 20 74 6f 20 72 65 61  are about to rea
9960: 64 20 61 20 73 65 74 74 69 6e 67 20 76 61 6c 75  d a setting valu
9970: 65 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a  e from the XML..
9980: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
9990: 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
99a0: 20 66 69 6c 65 3b 20 63 72 65 61 74 65 20 6f 72   file; create or
99b0: 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61   increment the a
99c0: 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20  ppropriate..    
99d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73        //       s
99e0: 74 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20  tatistic now... 
99f0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9a00: 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61         DebugData
9a10: 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e  .IncrementSettin
9a20: 67 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c  gReadCount(name,
9a30: 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d   true);..#endif.
9a40: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
9a50: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
9a60: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9aa0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9ab0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
9ac0: 53 65 74 74 69 6e 67 56 61 6c 75 65 56 69 61 58  SettingValueViaX
9ad0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20  mlConfigFile(.. 
9ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
9af0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
9b00: 65 28 29 2c 20 6e 61 6d 65 2c 20 40 64 65 66 61  e(), name, @defa
9b10: 75 6c 74 2c 20 65 78 70 61 6e 64 29 3b 0d 0a 20  ult, expand);.. 
9b20: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
9b80: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9b90: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9ba0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
9bb0: 63 20 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53  c string ListToS
9bc0: 74 72 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69  tring(IList<stri
9bd0: 6e 67 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20  ng> list)..     
9be0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
9bf0: 20 28 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d   (list == null).
9c00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
9c10: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
9c20: 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42           StringB
9c30: 75 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20  uilder result = 
9c40: 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65  new StringBuilde
9c50: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  r();....        
9c60: 20 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e    foreach (strin
9c70: 67 20 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73  g element in lis
9c80: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
9c90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
9ca0: 66 20 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75  f (element == nu
9cb0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
9cc0: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
9cd0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9ce0: 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e    if (result.Len
9cf0: 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  gth > 0)..      
9d00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
9d10: 6c 74 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d  lt.Append(' ');.
9d20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9d30: 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65   result.Append(e
9d40: 6c 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20  lement);..      
9d50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
9d60: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
9d70: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
9d80: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9dd0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9de0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
9df0: 20 69 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63   int CheckForArc
9e00: 68 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61  hitecturesAndPla
9e10: 74 66 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20  tforms(..       
9e20: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
9e30: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
9e40: 72 65 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  ref List<string>
9e50: 20 6d 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20   matches..      
9e60: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
9e70: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65            int re
9e80: 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  sult = 0;....   
9e90: 20 20 20 20 20 20 20 69 66 20 28 6d 61 74 63 68         if (match
9ea0: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
9eb0: 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68             match
9ec0: 65 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74  es = new List<st
9ed0: 72 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ring>();....    
9ee0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
9ef0: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
9f00: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9f10: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
9f20: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
9f30: 79 28 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d  y(directory) &&.
9f40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9f50: 20 20 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63     (processorArc
9f60: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
9f70: 6d 73 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20  ms != null))..  
9f80: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fa0: 20 66 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c   foreach (KeyVal
9fb0: 75 65 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73  uePair<string, s
9fc0: 74 72 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20  tring> pair..   
9fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fe0: 20 20 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63           in proc
9ff0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
a000: 65 50 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20  ePlatforms)..   
a010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
a020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a030: 20 20 20 20 20 20 20 20 69 66 20 28 44 69 72 65          if (Dire
a040: 63 74 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79  ctory.Exists(May
a050: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69  beCombinePath(di
a060: 72 65 63 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65  rectory, pair.Ke
a070: 79 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  y)))..          
a080: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a0a0: 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73           matches
a0b0: 2e 41 64 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d  .Add(pair.Key);.
a0c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a0d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
a0e0: 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  t++;..          
a0f0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
a100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a110: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
a120: 6c 75 65 20 3d 20 70 61 69 72 2e 56 61 6c 75 65  lue = pair.Value
a130: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a140: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
a150: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
a160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a170: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
a180: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
a190: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
a1a0: 44 69 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73  Directory.Exists
a1b0: 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
a1c0: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 76 61 6c  h(directory, val
a1d0: 75 65 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ue)))..         
a1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
a1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a200: 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65            matche
a210: 73 2e 41 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20  s.Add(value);.. 
a220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a230: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b           result+
a240: 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +;..            
a250: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
a260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
a270: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a280: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
a290: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
a2a0: 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
a2b0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
a2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
a310: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
a320: 6f 6f 6c 20 43 68 65 63 6b 41 73 73 65 6d 62 6c  ool CheckAssembl
a330: 79 43 6f 64 65 42 61 73 65 28 0d 0a 20 20 20 20  yCodeBase(..    
a340: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
a350: 73 73 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20  ssembly,..      
a360: 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 66      ref string f
a370: 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ileName..       
a380: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
a390: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
a3a0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a3b0: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
a3c0: 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  embly == null)..
a3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a3e0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
a3f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a400: 20 73 74 72 69 6e 67 20 63 6f 64 65 42 61 73 65   string codeBase
a410: 20 3d 20 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65   = assembly.Code
a420: 42 61 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Base;....       
a430: 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
a440: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
a450: 63 6f 64 65 42 61 73 65 29 29 0d 0a 20 20 20 20  codeBase))..    
a460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a470: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
a480: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 72 69               Uri
a490: 20 75 72 69 20 3d 20 6e 65 77 20 55 72 69 28 63   uri = new Uri(c
a4a0: 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20  odeBase);..     
a4b0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
a4c0: 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20  localFileName = 
a4d0: 75 72 69 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a  uri.LocalPath;..
a4e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a4f0: 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
a500: 28 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29  (localFileName))
a510: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a520: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
a530: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a540: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
a550: 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69  ory = Path.GetDi
a560: 72 65 63 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20  rectoryName(..  
a570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a580: 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20  localFileName); 
a590: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20  /* throw */.... 
a5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
a5b0: 69 6e 67 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c  ing xmlConfigFil
a5c0: 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d  eName = MaybeCom
a5d0: 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20  binePath(..     
a5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72               dir
a5f0: 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69  ectory, XmlConfi
a600: 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  gFileName);.... 
a610: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
a620: 28 46 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c  (File.Exists(xml
a630: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29  ConfigFileName))
a640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a650: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
a660: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
a670: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
a680: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
a690: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a6a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
a6c0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
a6d0: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
a6e0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
a6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a700: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
a710: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
a720: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a730: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
a740: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
a750: 6f 61 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20  oader found XML 
a760: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
a770: 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  le " +..        
a780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a790: 20 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65    "via code base
a7a0: 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65   for currently e
a7b0: 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
a7c0: 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20  y: \"{0}\"",..  
a7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a7e0: 20 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69          xmlConfi
a7f0: 67 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20  gFileName)); /* 
a800: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
a810: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
a820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a830: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
a840: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a860: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
a870: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a880: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
a890: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a8a0: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c      fileName = l
a8b0: 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20  ocalFileName;.. 
a8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a8d0: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
a8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
a8f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a900: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74  List<string> mat
a910: 63 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ches = null;....
a920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
a930: 20 28 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74   (CheckForArchit
a940: 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f  ecturesAndPlatfo
a950: 72 6d 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72  rms(directory, r
a960: 65 66 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29  ef matches) > 0)
a970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a980: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
a990: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
a9a0: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
a9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
a9c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a9d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
a9f0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
aa00: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
aa10: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
aa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa30: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
aa40: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
aa50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aa60: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
aa70: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
aa80: 6f 61 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69  oader found nati
aa90: 76 65 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69  ve sub-directori
aaa0: 65 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  es " +..        
aab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aac0: 20 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65    "via code base
aad0: 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65   for currently e
aae0: 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
aaf0: 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20  y: \"{0}\"",..  
ab00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab10: 20 20 20 20 20 20 20 20 4c 69 73 74 54 6f 53 74          ListToSt
ab20: 72 69 6e 67 28 6d 61 74 63 68 65 73 29 29 29 3b  ring(matches)));
ab30: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
ab40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab50: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
ab60: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
ab70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
ab80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ab90: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
aba0: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
abb0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
abc0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
abd0: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
abe0: 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65   = localFileName
abf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ac00: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
ac10: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ac20: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
ac30: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
ac40: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
ac50: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
ac60: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
ac70: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63  RED..          c
ac80: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
ac90: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
aca0: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
acb0: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
acc0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
acd0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
ace0: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
acf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ad00: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
ad10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ad20: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
ad30: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
ad40: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
ad50: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
ad60: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
ad70: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
ad80: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
ad90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
ada0: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
adb0: 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
adc0: 74 6f 20 63 68 65 63 6b 20 63 6f 64 65 20 62 61  to check code ba
add0: 73 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  se " +..        
ade0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66                "f
adf0: 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  or currently exe
ae00: 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a  cuting assembly:
ae10: 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74   {0}", e)); /* t
ae20: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
ae30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
ae40: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
ae50: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
ae60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae70: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
ae80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ae90: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
aea0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
aeb0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
aec0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
aed0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  if....      ////
aee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af20: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
af30: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
af40: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
af50: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 64 69  d returns the di
af60: 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
af70: 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
af80: 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20  ly being..      
af90: 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d 0a 20  /// executed... 
afa0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
afb0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
afc0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
afd0: 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72  /// The director
afe0: 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
aff0: 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
b000: 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d  ng executed -OR-
b010: 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20   null if..      
b020: 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65  /// it cannot be
b030: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
b040: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
b050: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
b060: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
b070: 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
b080: 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
b090: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
b0a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b0b0: 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
b0c0: 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20 41  bly assembly = A
b0d0: 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75  ssembly.GetExecu
b0e0: 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d  tingAssembly();.
b0f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
b100: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d   if (assembly ==
b110: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
b120: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
b130: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
b140: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
b150: 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d  ileName = null;.
b160: 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
b170: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
b180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b190: 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 61 73 73  AssemblyName ass
b1a0: 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65  emblyName = asse
b1b0: 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28 29 3b 0d  mbly.GetName();.
b1c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
b1d0: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d   if (assemblyNam
b1e0: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
b1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
b200: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
b210: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
b220: 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e  Name = assemblyN
b230: 61 6d 65 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23  ame.CodeBase;..#
b240: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
b250: 20 20 20 20 69 66 20 28 21 43 68 65 63 6b 41 73      if (!CheckAs
b260: 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 61  semblyCodeBase(a
b270: 73 73 65 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c  ssembly, ref fil
b280: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
b290: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
b2a0: 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c  ame = assembly.L
b2b0: 6f 63 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66  ocation;..#endif
b2c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b2d0: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
b2e0: 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
b2f0: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
b300: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b310: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
b320: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
b330: 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47  rectory = Path.G
b340: 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28  etDirectoryName(
b350: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
b360: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b370: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
b380: 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29  mpty(directory))
b390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b3a0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
b3b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b3c0: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
b3d0: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ry;..          }
b3e0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
b3f0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
b400: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
b410: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
b420: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
b430: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
b440: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
b450: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
b460: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
b470: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
b480: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
b490: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
b4a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b4b0: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
b4c0: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
b4d0: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
b4e0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
b4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
b500: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
b510: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
b520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b530: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
b540: 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
b550: 64 20 74 6f 20 67 65 74 20 64 69 72 65 63 74 6f  d to get directo
b560: 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ry " +..        
b570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66                "f
b580: 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  or currently exe
b590: 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a  cuting assembly:
b5a0: 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74   {0}", e)); /* t
b5b0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
b5c0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b5d0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
b5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
b5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b600: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
b610: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b620: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
b630: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
b640: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
b650: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
b660: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
b670: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
b680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
b6c0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
b6d0: 4f 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20  Optional Native 
b6e0: 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50  SQLite Library P
b6f0: 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d  re-Loading Code.
b700: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
b710: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
b720: 61 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20  are looking for 
b730: 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c  the standard SQL
b740: 69 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65  ite DLL ("sqlite
b750: 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20  3.dll"),..      
b760: 2f 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74  //       the int
b770: 65 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74  erop DLL ("SQLit
b780: 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c  e.Interop.dll"),
b790: 20 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69   or we are runni
b7a0: 6e 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20  ng on the..     
b7b0: 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43   //       .NET C
b7c0: 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
b7d0: 2c 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c  , we should incl
b7e0: 75 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f  ude this code (o
b7f0: 6e 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20  nly if the..    
b800: 20 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75    //       featu
b810: 72 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20  re has actually 
b820: 62 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20  been enabled).  
b830: 54 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20  This code would 
b840: 62 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20  be totally..    
b850: 20 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e    //       redun
b860: 64 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64  dant if this mod
b870: 75 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e  ule has been bun
b880: 64 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69  dled into the mi
b890: 78 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20  xed-mode..      
b8a0: 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c  //       assembl
b8b0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69  y...      //..#i
b8c0: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
b8d0: 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
b8e0: 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
b8f0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b900: 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  K....      //.. 
b910: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e       // NOTE: On
b920: 6c 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68  ly compile in th
b930: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
b940: 20 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69   pre-load code i
b950: 66 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20  f the feature.. 
b960: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
b970: 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66  s been enabled f
b980: 6f 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a  or this build...
b990: 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52        //..#if PR
b9a0: 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42  ELOAD_NATIVE_LIB
b9b0: 52 41 52 59 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  RARY..      /// 
b9c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b9d0: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
b9e0: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
b9f0: 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69   variable contai
ba00: 6e 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  ning the process
ba10: 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  or..      /// ar
ba20: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
ba30: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
ba40: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
ba50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ba60: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
ba70: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50  eadonly string P
ba80: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
ba90: 43 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20  CTURE =..       
baa0: 20 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52     "PROCESSOR_AR
bab0: 43 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 0d 0a  CHITECTURE";....
bac0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
bad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
baf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
bb10: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
bb20: 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
bb30: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
bb40: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
bb50: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
bb60: 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
bb70: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
bb80: 6c 69 62 72 61 72 79 20 6f 72 20 6e 75 6c 6c 2e  library or null.
bb90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
bba0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
bbb0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74  ternal static st
bbc0: 72 69 6e 67 20 5f 53 51 4c 69 74 65 4e 61 74 69  ring _SQLiteNati
bbd0: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
bbe0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
bbf0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
bc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
bc40: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
bc50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
bc60: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
bc70: 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74  ndle for the nat
bc80: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
bc90: 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d  ry or the value.
bca0: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74  .      /// IntPt
bcb0: 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  r.Zero...      /
bcc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
bcd0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
bce0: 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69  tic IntPtr _SQLi
bcf0: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
bd00: 6e 64 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  ndle = IntPtr.Ze
bd10: 72 6f 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  ro;..      #endr
bd20: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
bd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd70: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
bd80: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
bd90: 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
bda0: 6e 65 73 20 74 68 65 20 62 61 73 65 20 66 69 6c  nes the base fil
bdb0: 65 20 6e 61 6d 65 20 28 77 69 74 68 6f 75 74 20  e name (without 
bdc0: 61 6e 79 20 64 69 72 65 63 74 6f 72 79 20 69 6e  any directory in
bdd0: 66 6f 72 6d 61 74 69 6f 6e 29 0d 0a 20 20 20 20  formation)..    
bde0: 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 6e 61    /// for the na
bdf0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
be00: 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f  ary to be pre-lo
be10: 61 64 65 64 20 62 79 20 74 68 69 73 20 63 6c 61  aded by this cla
be20: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
be30: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
be40: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
be50: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61        /// The ba
be60: 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  se file name for
be70: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
be80: 74 65 20 6c 69 62 72 61 72 79 20 74 6f 20 62 65  te library to be
be90: 20 70 72 65 2d 6c 6f 61 64 65 64 20 62 79 0d 0a   pre-loaded by..
bea0: 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63        /// this c
beb0: 6c 61 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  lass -OR- null i
bec0: 66 20 69 74 73 20 76 61 6c 75 65 20 63 61 6e 6e  f its value cann
bed0: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
bee0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
bef0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69  eturns>..      i
bf00: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
bf10: 74 72 69 6e 67 20 47 65 74 4e 61 74 69 76 65 4c  tring GetNativeL
bf20: 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e  ibraryFileNameOn
bf30: 6c 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ly()..      {.. 
bf40: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
bf50: 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47  fileNameOnly = G
bf60: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
bf70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  .              "
bf80: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4c 69  PreLoadSQLite_Li
bf90: 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c  braryFileNameOnl
bfa0: 79 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20  y", null);....  
bfb0: 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65          if (file
bfc0: 4e 61 6d 65 4f 6e 6c 79 20 21 3d 20 6e 75 6c 6c  NameOnly != null
bfd0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
bfe0: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
bff0: 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Only;....       
c000: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45     return SQLITE
c010: 5f 44 4c 4c 3b 20 2f 2a 20 43 4f 4d 50 41 54 20  _DLL; /* COMPAT 
c020: 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  */..      }.... 
c030: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c080: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
c090: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  ry>..      /// S
c0a0: 65 61 72 63 68 65 73 20 66 6f 72 20 74 68 65 20  earches for the 
c0b0: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
c0c0: 62 72 61 72 79 20 69 6e 20 74 68 65 20 64 69 72  brary in the dir
c0d0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
c0e0: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  g..      /// the
c0f0: 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e   assembly curren
c100: 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74  tly being execut
c110: 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68  ed as well as th
c120: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
c130: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20  ..      /// for 
c140: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
c150: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d  ication domain..
c160: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
c170: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
c180: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
c190: 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20  seDirectory">.. 
c1a0: 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
c1b0: 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
c1c0: 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f  meter will be mo
c1d0: 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72 20  dified to refer 
c1e0: 74 6f 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  to the base..   
c1f0: 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79     /// directory
c200: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
c210: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
c220: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
c230: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
c240: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
c250: 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
c260: 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
c270: 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
c280: 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
c290: 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66  er will be modif
c2a0: 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20  ied to refer to 
c2b0: 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  the name..      
c2c0: 2f 2f 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65 64  /// of the immed
c2d0: 69 61 74 65 20 64 69 72 65 63 74 6f 72 79 20 28  iate directory (
c2e0: 69 2e 65 2e 20 74 68 65 20 6f 66 66 73 65 74 20  i.e. the offset 
c2f0: 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 64 69  from the base di
c300: 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20  rectory)..      
c310: 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  /// containing t
c320: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
c330: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
c340: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
c350: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
c360: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
c370: 6e 2d 7a 65 72 6f 20 28 73 75 63 63 65 73 73 29  n-zero (success)
c380: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
c390: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77 61  QLite library wa
c3a0: 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69  s found; otherwi
c3b0: 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a  se,..      /// z
c3c0: 65 72 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a  ero (failure)...
c3d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
c3e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
c3f0: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
c400: 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f  SearchForDirecto
c410: 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ry(..          r
c420: 65 66 20 73 74 72 69 6e 67 20 62 61 73 65 44 69  ef string baseDi
c430: 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20  rectory,        
c440: 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
c450: 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
c460: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
c470: 63 74 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f 0d  cture /* out */.
c480: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
c490: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c4a0: 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56   if (GetSettingV
c4b0: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
c4c0: 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
c4d0: 51 4c 69 74 65 5f 4e 6f 53 65 61 72 63 68 46 6f  QLite_NoSearchFo
c4e0: 72 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c  rDirectory", nul
c4f0: 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  l) != null)..   
c500: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c510: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
c520: 61 6c 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c 45  alse; /* DISABLE
c530: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
c540: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  }....          /
c550: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
c560: 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20  NOTE: Determine 
c570: 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61  the base file na
c580: 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
c590: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
c5a0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ...          // 
c5b0: 20 20 20 20 20 20 49 66 20 74 68 69 73 20 69 73        If this is
c5c0: 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68   not known by th
c5d0: 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e  is class, we can
c5e0: 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20  not continue... 
c5f0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
c600: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
c610: 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74  leNameOnly = Get
c620: 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c  NativeLibraryFil
c630: 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a  eNameOnly();....
c640: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69            if (fi
c650: 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75  leNameOnly == nu
c660: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
c670: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
c680: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
c690: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
c6a0: 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20 6c  OTE: Build the l
c6b0: 69 73 74 20 6f 66 20 62 61 73 65 20 64 69 72 65  ist of base dire
c6c0: 63 74 6f 72 69 65 73 20 61 6e 64 20 70 72 6f 63  ctories and proc
c6d0: 65 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d 0a  essor/platform..
c6e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
c6f0: 20 20 20 6e 61 6d 65 73 2e 20 20 54 68 65 73 65     names.  These
c700: 20 6c 69 73 74 73 20 77 69 6c 6c 20 62 65 20 75   lists will be u
c710: 73 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f 63 61  sed to help loca
c720: 74 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  te the native.. 
c730: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
c740: 20 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69    SQLite core li
c750: 62 72 61 72 79 20 28 6f 72 20 69 6e 74 65 72 6f  brary (or intero
c760: 70 20 61 73 73 65 6d 62 6c 79 29 20 74 6f 20 70  p assembly) to p
c770: 72 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20 20  re-load into..  
c780: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
c790: 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e 0d 0a   this process...
c7a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
c7b0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
c7c0: 20 64 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b   directories = {
c7d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c7e0: 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
c7f0: 74 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21 50 4c  tory(),..#if !PL
c800: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
c810: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
c820: 20 20 20 20 20 20 20 41 70 70 44 6f 6d 61 69 6e         AppDomain
c830: 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42  .CurrentDomain.B
c840: 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 23  aseDirectory,..#
c850: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
c860: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   };....         
c870: 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 44 69 72   string[] subDir
c880: 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20  ectories = {..  
c890: 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 50              GetP
c8a0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
c8b0: 74 75 72 65 28 29 2c 20 47 65 74 50 6c 61 74 66  ture(), GetPlatf
c8c0: 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d 0a 20  ormName(null).. 
c8d0: 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20           };.... 
c8e0: 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
c8f0: 20 28 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f   (string directo
c900: 72 79 20 69 6e 20 64 69 72 65 63 74 6f 72 69 65  ry in directorie
c910: 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  s)..          {.
c920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
c930: 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20  f (directory == 
c940: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
c950: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
c960: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
c970: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
c980: 69 6e 67 20 73 75 62 44 69 72 65 63 74 6f 72 79  ing subDirectory
c990: 20 69 6e 20 73 75 62 44 69 72 65 63 74 6f 72 69   in subDirectori
c9a0: 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es)..           
c9b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c9c0: 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62 44          if (subD
c9d0: 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c  irectory == null
c9e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
c9f0: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
ca00: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
ca10: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
ca20: 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
ca30: 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
ca40: 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20  CombinePath(..  
ca50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca60: 20 20 20 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65      MaybeCombine
ca70: 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
ca80: 73 75 62 44 69 72 65 63 74 6f 72 79 29 2c 0d 0a  subDirectory),..
ca90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
caa0: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e        fileNameOn
cab0: 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly));....       
cac0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
cad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cae0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
caf0: 20 53 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c 65   SQLite DLL file
cb00: 20 65 78 69 73 74 73 2c 20 72 65 74 75 72 6e 20   exists, return 
cb10: 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  success...      
cb20: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
cb30: 20 20 20 20 20 50 72 69 6f 72 20 74 6f 20 72 65       Prior to re
cb40: 74 75 72 6e 69 6e 67 2c 20 73 65 74 20 74 68 65  turning, set the
cb50: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
cb60: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
cb70: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
cb80: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
cb90: 65 63 74 75 72 65 20 74 6f 20 72 65 66 6c 65 63  ecture to reflec
cba0: 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d 0a  t the location..
cbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbc0: 20 20 2f 2f 20 20 20 20 20 20 20 77 68 65 72 65    //       where
cbd0: 20 69 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d 0a   it was found...
cbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbf0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
cc00: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
cc10: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
cc20: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
cc30: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
cc40: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
cc50: 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d  TRACE_DETECTION.
cc60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cc70: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
cc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
ccb0: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
ccc0: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
ccd0: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccf0: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
cd00: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
cd10: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
cd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd30: 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
cd40: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
cd50: 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 66 69 6c  found native fil
cd60: 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
cd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd80: 20 20 20 20 20 22 6e 61 6d 65 20 5c 22 7b 30 7d       "name \"{0}
cd90: 5c 22 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 69  \", returning di
cda0: 72 65 63 74 6f 72 79 20 5c 22 7b 31 7d 5c 22 20  rectory \"{1}\" 
cdb0: 61 6e 64 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  and " +..       
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdd0: 20 20 20 20 20 20 20 22 73 75 62 2d 64 69 72 65         "sub-dire
cde0: 63 74 6f 72 79 20 5c 22 7b 32 7d 5c 22 2e 2e 2e  ctory \"{2}\"...
cdf0: 22 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 64 69 72  ", fileName, dir
ce00: 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  ectory,..       
ce10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce20: 20 20 20 20 20 20 20 73 75 62 44 69 72 65 63 74         subDirect
ce30: 6f 72 79 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ory)); /* throw 
ce40: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
ce50: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce70: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
ce80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce90: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
cea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
ceb0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
cec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ced0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
cee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cef0: 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
cf00: 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72 79 3b  ory = directory;
cf10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cf20: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
cf30: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
cf40: 73 75 62 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20  subDirectory;.. 
cf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf60: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
cf70: 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20  ; /* FOUND */.. 
cf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf90: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
cfa0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
cfb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
cfc0: 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 4e  turn false; /* N
cfd0: 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20  OT FOUND */..   
cfe0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
cff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d030: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
d040: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
d050: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
d060: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
d070: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f  base directory o
d080: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70  f the current ap
d090: 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20  plication..     
d0a0: 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20   /// domain...  
d0b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d0c0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
d0d0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
d0e0: 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65  // The base dire
d0f0: 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 63 75  ctory for the cu
d100: 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
d110: 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75  n domain -OR- nu
d120: 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20  ll if it..      
d130: 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
d140: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
d150: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
d160: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
d170: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
d180: 42 61 73 65 44 69 72 65 63 74 6f 72 79 28 29 0d  BaseDirectory().
d190: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
d1a0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
d1b0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
d1c0: 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  e "PreLoadSQLite
d1d0: 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79 22 20  _BaseDirectory" 
d1e0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
d1f0: 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  able..          
d200: 2f 2f 20 20 20 20 20 20 20 69 73 20 73 65 74 2c  //       is set,
d210: 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d   use it verbatim
d220: 20 66 6f 72 20 74 68 65 20 62 61 73 65 20 64 69   for the base di
d230: 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20  rectory...      
d240: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
d250: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
d260: 72 79 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  ry = GetSettingV
d270: 61 6c 75 65 28 22 50 72 65 4c 6f 61 64 53 51 4c  alue("PreLoadSQL
d280: 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72  ite_BaseDirector
d290: 79 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y",..           
d2a0: 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20     null);....   
d2b0: 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63         if (direc
d2c0: 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  tory != null).. 
d2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d2e0: 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  urn directory;..
d2f0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d300: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d310: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
d320: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
d330: 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f  E: If the "PreLo
d340: 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65  adSQLite_UseAsse
d350: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 65  mblyDirectory" e
d360: 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20  nvironment..    
d370: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76        //       v
d380: 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 28  ariable is set (
d390: 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20 74 68  to anything), th
d3a0: 65 6e 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  en attempt to us
d3b0: 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  e the..         
d3c0: 20 2f 2f 20 20 20 20 20 20 20 64 69 72 65 63 74   //       direct
d3d0: 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ory containing t
d3e0: 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  he currently exe
d3f0: 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 0d  cuting assembly.
d400: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
d410: 20 20 20 20 28 69 2e 65 2e 20 53 79 73 74 65 6d      (i.e. System
d420: 2e 44 61 74 61 2e 53 51 4c 69 74 65 29 20 69 6e  .Data.SQLite) in
d430: 74 73 65 61 64 20 6f 66 20 74 68 65 20 61 70 70  tsead of the app
d440: 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  lication..      
d450: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 6f 6d      //       dom
d460: 61 69 6e 20 62 61 73 65 20 64 69 72 65 63 74 6f  ain base directo
d470: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
d480: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
d490: 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  (GetSettingValue
d4a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d4b0: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
d4c0: 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44  ite_UseAssemblyD
d4d0: 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29  irectory", null)
d4e0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
d4f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d500: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20        directory 
d510: 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  = GetAssemblyDir
d520: 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20  ectory();....   
d530: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
d540: 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c  irectory != null
d550: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d560: 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65       return dire
d570: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
d580: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
d590: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
d5a0: 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73  / NOTE: Otherwis
d5b0: 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75  e, fallback on u
d5c0: 73 69 6e 67 20 74 68 65 20 62 61 73 65 20 64 69  sing the base di
d5d0: 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a  rectory of the..
d5e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
d5f0: 20 20 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69     current appli
d600: 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a  cation domain...
d610: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d620: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 41          return A
d630: 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74  ppDomain.Current
d640: 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63  Domain.BaseDirec
d650: 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  tory;..#else..  
d660: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d670: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f        // NOTE: O
d680: 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61  therwise, fallba
d690: 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  ck on using the 
d6a0: 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
d6b0: 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ning..          
d6c0: 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 75 72  //       the cur
d6d0: 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
d6e0: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
d6f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
d700: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 41 73      return GetAs
d710: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
d720: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
d730: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
d740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d780: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
d790: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d7a0: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
d7b0: 73 20 69 66 20 74 68 65 20 64 79 6e 61 6d 69 63  s if the dynamic
d7c0: 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69   link library fi
d7d0: 6c 65 20 6e 61 6d 65 20 72 65 71 75 69 72 65 73  le name requires
d7e0: 20 61 20 73 75 66 66 69 78 0d 0a 20 20 20 20 20   a suffix..     
d7f0: 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20 69 74   /// and adds it
d800: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
d810: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d820: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
d830: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
d840: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
d850: 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20  // The original 
d860: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
d870: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 74  rary file name t
d880: 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20  o inspect...    
d890: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d8a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
d8b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
d8c0: 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20  he dynamic link 
d8d0: 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d  library file nam
d8e0: 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f 64 69  e, possibly modi
d8f0: 66 69 65 64 20 74 6f 20 69 6e 63 6c 75 64 65 20  fied to include 
d900: 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78  an..      /// ex
d910: 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  tension...      
d920: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
d930: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
d940: 61 74 69 63 20 73 74 72 69 6e 67 20 46 69 78 55  atic string FixU
d950: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a 20  pDllFileName(.. 
d960: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
d970: 66 69 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e 20 2a  fileName /* in *
d980: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
d990: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d9a0: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
d9b0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
d9c0: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
d9d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d9e0: 20 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65      if (HelperMe
d9f0: 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73 28  thods.IsWindows(
da00: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
da10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
da20: 20 20 20 20 20 20 20 69 66 20 28 21 66 69 6c 65         if (!file
da30: 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28 44 6c  Name.EndsWith(Dl
da40: 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d  lFileExtension,.
da50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
da60: 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
da70: 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
da80: 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d  nalIgnoreCase)).
da90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
daa0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
dab0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
dac0: 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c  rn fileName + Dl
dad0: 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d  lFileExtension;.
dae0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
daf0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
db00: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
db10: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
db20: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b  return fileName;
db30: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
db40: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
db50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
db60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
db70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
db80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
db90: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
dba0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
dbb0: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
dbc0: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
dbd0: 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
dbe0: 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
dbf0: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a    /// process...
dc00: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
dc10: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
dc20: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
dc30: 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73   /// The process
dc40: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
dc50: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
dc60: 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c  rocess -OR- null
dc70: 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f   if it..      //
dc80: 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
dc90: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
dca0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
dcb0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
dcc0: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 72  tic string GetPr
dcd0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
dce0: 75 72 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ure()..      {..
dcf0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
dd00: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
dd10: 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64   If the "PreLoad
dd20: 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72  SQLite_Processor
dd30: 41 72 63 68 69 74 65 63 74 75 72 65 22 20 65 6e  Architecture" en
dd40: 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20  vironment..     
dd50: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61       //       va
dd60: 72 69 61 62 6c 65 20 69 73 20 73 65 74 2c 20 75  riable is set, u
dd70: 73 65 20 69 74 20 76 65 72 62 61 74 69 6d 20 66  se it verbatim f
dd80: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  or the current p
dd90: 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20  rocessor..      
dda0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 72 63      //       arc
ddb0: 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20  hitecture...    
ddc0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
ddd0: 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65      string proce
dde0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
ddf0: 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c   = GetSettingVal
de00: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
de10: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
de20: 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
de30: 74 65 63 74 75 72 65 22 2c 20 6e 75 6c 6c 29 3b  tecture", null);
de40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
de50: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
de60: 74 65 63 74 75 72 65 20 21 3d 20 6e 75 6c 6c 29  tecture != null)
de70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
de80: 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72  return processor
de90: 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 0d  Architecture;...
dea0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
deb0: 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42           // BUGB
dec0: 55 47 3a 20 57 69 6c 6c 20 74 68 69 73 20 61 6c  UG: Will this al
ded0: 77 61 79 73 20 62 65 20 72 65 6c 69 61 62 6c 65  ways be reliable
dee0: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ?..          //.
def0: 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65  .          proce
df00: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
df10: 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c   = GetSettingVal
df20: 75 65 28 50 52 4f 43 45 53 53 4f 52 5f 41 52 43  ue(PROCESSOR_ARC
df30: 48 49 54 45 43 54 55 52 45 2c 20 6e 75 6c 6c 29  HITECTURE, null)
df40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
df50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df90: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
dfa0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
dfb0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
dfc0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
dfd0: 2f 2f 20 48 41 43 4b 3a 20 43 68 65 63 6b 20 66  // HACK: Check f
dfe0: 6f 72 20 61 6e 20 22 69 6d 70 6f 73 73 69 62 6c  or an "impossibl
dff0: 65 22 20 73 69 74 75 61 74 69 6f 6e 2e 20 20 49  e" situation.  I
e000: 66 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69  f the pointer si
e010: 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ze..          //
e020: 20 20 20 20 20 20 20 69 73 20 33 32 2d 62 69 74         is 32-bit
e030: 73 2c 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  s, the processor
e040: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 63 61   architecture ca
e050: 6e 6e 6f 74 20 62 65 20 22 41 4d 44 36 34 22 2e  nnot be "AMD64".
e060: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
e070: 20 20 20 20 20 49 6e 20 74 68 61 74 20 63 61 73       In that cas
e080: 65 2c 20 77 65 20 61 72 65 20 61 6c 6d 6f 73 74  e, we are almost
e090: 20 63 65 72 74 61 69 6e 6c 79 20 68 69 74 74 69   certainly hitti
e0a0: 6e 67 20 61 20 62 75 67 20 69 6e 20 74 68 65 0d  ng a bug in the.
e0b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
e0c0: 20 20 20 20 6f 70 65 72 61 74 69 6e 67 20 73 79      operating sy
e0d0: 73 74 65 6d 20 61 6e 64 2f 6f 72 20 56 69 73 75  stem and/or Visu
e0e0: 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74 20 63  al Studio that c
e0f0: 61 75 73 65 73 20 74 68 65 0d 0a 20 20 20 20 20  auses the..     
e100: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 50 52       //       PR
e110: 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
e120: 54 55 52 45 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  TURE environment
e130: 20 76 61 72 69 61 62 6c 65 20 74 6f 20 63 6f 6e   variable to con
e140: 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  tain the..      
e150: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 72 6f      //       wro
e160: 6e 67 20 76 61 6c 75 65 20 69 6e 20 73 6f 6d 65  ng value in some
e170: 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 2e 20   circumstances. 
e180: 20 50 6c 65 61 73 65 20 72 65 66 65 72 20 74 6f   Please refer to
e190: 20 74 69 63 6b 65 74 0d 0a 20 20 20 20 20 20 20   ticket..       
e1a0: 20 20 20 2f 2f 20 20 20 20 20 20 20 5b 39 61 63     //       [9ac
e1b0: 39 38 36 32 36 31 31 5d 20 66 6f 72 20 66 75 72  9862611] for fur
e1c0: 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ther information
e1d0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
e1e0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28  .          if ((
e1f0: 49 6e 74 50 74 72 2e 53 69 7a 65 20 3d 3d 20 73  IntPtr.Size == s
e200: 69 7a 65 6f 66 28 69 6e 74 29 29 20 26 26 0d 0a  izeof(int)) &&..
e210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
e220: 72 69 6e 67 2e 45 71 75 61 6c 73 28 70 72 6f 63  ring.Equals(proc
e230: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
e240: 65 2c 20 22 41 4d 44 36 34 22 2c 0d 0a 20 20 20  e, "AMD64",..   
e250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
e260: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
e270: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
e280: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
e290: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
e2a0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44  CT_20 && TRACE_D
e2b0: 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20  ETECTION..      
e2c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e2d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
e2e0: 45 3a 20 57 68 65 6e 20 74 72 61 63 69 6e 67 20  E: When tracing 
e2f0: 69 73 20 65 6e 61 62 6c 65 64 2c 20 73 61 76 65  is enabled, save
e300: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20   the originally 
e310: 64 65 74 65 63 74 65 64 0d 0a 20 20 20 20 20 20  detected..      
e320: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
e330: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
e340: 74 65 63 74 75 72 65 20 62 65 66 6f 72 65 20 63  tecture before c
e350: 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a 20 20 20  hanging it...   
e360: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
e370: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
e380: 69 6e 67 20 73 61 76 65 64 50 72 6f 63 65 73 73  ing savedProcess
e390: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
e3a0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
e3b0: 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64 69 66 0d  ecture;..#endif.
e3c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e3d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
e3e0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6b     // NOTE: We k
e3f0: 6e 6f 77 20 74 68 61 74 20 6f 70 65 72 61 74 69  now that operati
e400: 6e 67 20 73 79 73 74 65 6d 73 20 74 68 61 74 20  ng systems that 
e410: 72 65 74 75 72 6e 20 22 41 4d 44 36 34 22 20 61  return "AMD64" a
e420: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
e430: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 70 72   //       the pr
e440: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
e450: 74 75 72 65 20 61 72 65 20 61 63 74 75 61 6c 6c  ture are actuall
e460: 79 20 61 20 73 75 70 65 72 73 65 74 20 6f 66 0d  y a superset of.
e470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
e480: 2f 20 20 20 20 20 20 20 74 68 65 20 22 78 38 36  /       the "x86
e490: 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  " processor arch
e4a0: 69 74 65 63 74 75 72 65 3b 20 74 68 65 72 65 66  itecture; theref
e4b0: 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a 20 20 20  ore, return..   
e4c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
e4d0: 20 20 20 20 22 78 38 36 22 20 77 68 65 6e 20 74      "x86" when t
e4e0: 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 20  he pointer size 
e4f0: 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a 20 20 20  is 32-bits...   
e500: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
e510: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
e520: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
e530: 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a 23  re = "x86";....#
e540: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
e550: 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45  20 && TRACE_DETE
e560: 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20  CTION..         
e570: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
e580: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e590: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
e5a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e5b0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77     // NOTE: Show
e5c0: 20 74 68 61 74 20 77 65 20 68 69 74 20 61 20 66   that we hit a f
e5d0: 61 69 72 6c 79 20 75 6e 75 73 75 61 6c 20 73 69  airly unusual si
e5e0: 74 75 61 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a 20  tuation (i.e... 
e5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e600: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22 77   //       the "w
e610: 72 6f 6e 67 22 20 70 72 6f 63 65 73 73 6f 72 20  rong" processor 
e620: 61 72 63 68 69 74 65 63 74 75 72 65 20 77 61 73  architecture was
e630: 20 64 65 74 65 63 74 65 64 29 2e 0d 0a 20 20 20   detected)...   
e640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
e650: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
e660: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
e670: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
e680: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
e690: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e6a0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
e6b0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
e6c0: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
e6d0: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
e6e0: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
e6f0: 6f 61 64 65 72 20 64 65 74 65 63 74 65 64 20 7b  oader detected {
e700: 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65 72 20 22  0}-bit pointer "
e710: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
e720: 20 20 20 20 20 20 20 20 20 20 22 73 69 7a 65 20            "size 
e730: 77 69 74 68 20 70 72 6f 63 65 73 73 6f 72 20 61  with processor a
e740: 72 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b 31  rchitecture \"{1
e750: 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20 2b 0d 0a  }\", using " +..
e760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e770: 20 20 20 20 20 20 22 70 72 6f 63 65 73 73 6f 72        "processor
e780: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c 22   architecture \"
e790: 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64 2e 2e 2e  {2}\" instead...
e7a0: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
e7b0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
e7c0: 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20 62 69 74  .Size * 8 /* bit
e7d0: 73 20 2a 2f 2c 20 73 61 76 65 64 50 72 6f 63 65  s */, savedProce
e7e0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
e7f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
e800: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
e810: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 29  orArchitecture))
e820: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
e830: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
e850: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
e860: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e870: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
e880: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
e890: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
e8a0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  .          }..#e
e8b0: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 69  lse..          i
e8c0: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
e8d0: 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
e8e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
e8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e900: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e910: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20  // NOTE: On the 
e920: 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
e930: 6d 65 77 6f 72 6b 2c 20 61 74 74 65 6d 70 74 20  mework, attempt 
e940: 74 6f 20 75 73 65 20 74 68 65 20 6e 61 74 69 76  to use the nativ
e950: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
e960: 20 2f 2f 20 20 20 20 20 20 20 57 69 6e 33 32 20   //       Win32 
e970: 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 28 76 69  API function (vi
e980: 61 20 50 2f 49 6e 76 6f 6b 65 29 20 74 68 61 74  a P/Invoke) that
e990: 20 63 61 6e 20 70 72 6f 76 69 64 65 20 75 73 0d   can provide us.
e9a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
e9b0: 2f 20 20 20 20 20 20 20 77 69 74 68 20 74 68 65  /       with the
e9c0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
e9d0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
e9e0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e9f0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
ea00: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
ea10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea20: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
ea30: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
ea40: 20 54 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74   The output of t
ea50: 68 65 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f  he GetSystemInfo
ea60: 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62   function will b
ea70: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
ea80: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c       //       pl
ea90: 61 63 65 64 20 68 65 72 65 2e 20 20 4f 6e 6c 79  aced here.  Only
eaa0: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
eab0: 72 63 68 69 74 65 63 74 75 72 65 20 66 69 65 6c  rchitecture fiel
eac0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
ead0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73       //       is
eae0: 20 75 73 65 64 20 62 79 20 74 68 69 73 20 6d 65   used by this me
eaf0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
eb00: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
eb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
eb20: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
eb30: 64 73 57 69 6e 33 32 2e 53 59 53 54 45 4d 5f 49  dsWin32.SYSTEM_I
eb40: 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d  NFO systemInfo;.
eb50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
eb60: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
eb70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
eb80: 54 45 3a 20 51 75 65 72 79 20 74 68 65 20 73 79  TE: Query the sy
eb90: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
eba0: 20 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74   via P/Invoke, t
ebb0: 68 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  hus..           
ebc0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
ebd0: 66 69 6c 6c 69 6e 67 20 74 68 65 20 73 74 72 75  filling the stru
ebe0: 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
ebf0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
ec00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec10: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
ec20: 6f 64 73 57 69 6e 33 32 2e 47 65 74 53 79 73 74  odsWin32.GetSyst
ec30: 65 6d 49 6e 66 6f 28 6f 75 74 20 73 79 73 74 65  emInfo(out syste
ec40: 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  mInfo);....     
ec50: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
ec60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ec70: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75     // NOTE: Retu
ec80: 72 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  rn the processor
ec90: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 76 61   architecture va
eca0: 6c 75 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e  lue as a string.
ecb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ecc0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
ecd0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
ece0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
ecf0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
ed00: 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 49           systemI
ed10: 6e 66 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41 72  nfo.wProcessorAr
ed20: 63 68 69 74 65 63 74 75 72 65 2e 54 6f 53 74 72  chitecture.ToStr
ed30: 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
ed40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
ed50: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
ed60: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ed70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed80: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
ed90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
eda0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
edb0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
edc0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f      // NOTE: Upo
edd0: 6e 20 66 61 69 6c 75 72 65 2c 20 72 65 74 75 72  n failure, retur
ede0: 6e 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e  n an empty strin
edf0: 67 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 70 72  g.  This will pr
ee00: 65 76 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  event..         
ee10: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
ee20: 65 20 63 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64  e calling method
ee30: 20 66 72 6f 6d 20 63 6f 6e 73 69 64 65 72 69 6e   from considerin
ee40: 67 20 74 68 69 73 20 6d 65 74 68 6f 64 20 63 61  g this method ca
ee50: 6c 6c 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20  ll a..          
ee60: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 66 61      //       "fa
ee70: 69 6c 75 72 65 22 2e 0d 0a 20 20 20 20 20 20 20  ilure"...       
ee80: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
ee90: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
eea0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
eeb0: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a   String.Empty;..
eec0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
eed0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
eee0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
eef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
ef30: 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65      return proce
ef40: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
ef50: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
ef60: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
ef70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
efb0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
efc0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69  y>..      /// Gi
efd0: 76 65 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ven the processo
efe0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20  r architecture, 
eff0: 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 6d 65  returns the name
f000: 20 6f 66 20 74 68 65 20 70 6c 61 74 66 6f 72 6d   of the platform
f010: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
f020: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
f030: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
f040: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
f050: 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f  cture">..      /
f060: 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72  // The processor
f070: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f   architecture to
f080: 20 62 65 20 74 72 61 6e 73 6c 61 74 65 64 20 74   be translated t
f090: 6f 20 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  o a platform nam
f0a0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
f0b0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
f0c0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
f0d0: 20 20 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66     /// The platf
f0e0: 6f 72 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  orm name for the
f0f0: 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63 65   specified proce
f100: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
f110: 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20  e -OR- null..   
f120: 20 20 20 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e     /// if it can
f130: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
f140: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
f150: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
f160: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
f170: 74 72 69 6e 67 20 47 65 74 50 6c 61 74 66 6f 72  tring GetPlatfor
f180: 6d 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  mName(..        
f190: 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73    string process
f1a0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 2f  orArchitecture /
f1b0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
f1c0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
f1d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
f1e0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
f1f0: 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re == null)..   
f200: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
f210: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
f220: 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41   = GetProcessorA
f230: 72 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a  rchitecture();..
f240: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
f250: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
f260: 6d 70 74 79 28 70 72 6f 63 65 73 73 6f 72 41 72  mpty(processorAr
f270: 63 68 69 74 65 63 74 75 72 65 29 29 0d 0a 20 20  chitecture))..  
f280: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f290: 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
f2a0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
f2b0: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
f2c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f2d0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
f2e0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
f2f0: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75  ePlatforms == nu
f300: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
f310: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
f320: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
f330: 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74       string plat
f340: 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  formName;....   
f350: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
f360: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
f370: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72  turePlatforms.Tr
f380: 79 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20 20  yGetValue(..    
f390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3a0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
f3b0: 74 65 63 74 75 72 65 2c 20 6f 75 74 20 70 6c 61  tecture, out pla
f3c0: 74 66 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20  tformName))..   
f3d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3f0: 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e  return platformN
f400: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
f410: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
f420: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
f430: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
f440: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
f450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f490: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
f4a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f4b0: 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
f4c0: 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  s to load the na
f4d0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
f4e0: 61 72 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ary based on the
f4f0: 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
f500: 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20    /// directory 
f510: 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  and processor ar
f520: 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20  chitecture...   
f530: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f540: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
f550: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69  ram name="baseDi
f560: 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20  rectory">..     
f570: 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69   /// The base di
f580: 72 65 63 74 6f 72 79 20 74 6f 20 75 73 65 2c 20  rectory to use, 
f590: 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74  null for default
f5a0: 20 28 74 68 65 20 62 61 73 65 20 64 69 72 65 63   (the base direc
f5b0: 74 6f 72 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f  tory of..      /
f5c0: 2f 2f 20 74 68 65 20 63 75 72 72 65 6e 74 20 61  // the current a
f5d0: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
f5e0: 6e 29 2e 20 20 54 68 69 73 20 64 69 72 65 63 74  n).  This direct
f5f0: 6f 72 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61  ory should conta
f600: 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  in the..      //
f610: 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  / processor arch
f620: 69 74 65 63 74 75 72 65 20 73 70 65 63 69 66 69  itecture specifi
f630: 63 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65  c sub-directorie
f640: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
f650: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
f660: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
f670: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
f680: 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ture">..      //
f690: 2f 20 54 68 65 20 72 65 71 75 65 73 74 65 64 20  / The requested 
f6a0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
f6b0: 65 63 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72  ecture, null for
f6c0: 20 64 65 66 61 75 6c 74 20 28 74 68 65 0d 0a 20   default (the.. 
f6d0: 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73       /// process
f6e0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
f6f0: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
f700: 72 6f 63 65 73 73 29 2e 20 20 54 68 69 73 20 63  rocess).  This c
f710: 61 6c 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20  aller should..  
f720: 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61      /// almost a
f730: 6c 77 61 79 73 20 73 70 65 63 69 66 79 20 6e 75  lways specify nu
f740: 6c 6c 20 66 6f 72 20 74 68 69 73 20 70 61 72 61  ll for this para
f750: 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f  meter...      //
f760: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
f770: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
f780: 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46  e="nativeModuleF
f790: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
f7a0: 20 2f 2f 2f 20 54 68 65 20 63 61 6e 64 69 64 61   /// The candida
f7b0: 74 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  te native module
f7c0: 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f   file name to lo
f7d0: 61 64 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65  ad will be store
f7e0: 64 20 68 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f  d here,..      /
f7f0: 2f 2f 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  // if necessary.
f800: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
f810: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
f820: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74  <param name="nat
f830: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22  iveModuleHandle"
f840: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
f850: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
f860: 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65  andle as returne
f870: 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79  d by LoadLibrary
f880: 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d   will be stored.
f890: 0a 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c  .      /// here,
f8a0: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20   if necessary.  
f8b0: 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20  This value will 
f8c0: 62 65 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69  be IntPtr.Zero i
f8d0: 66 20 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20  f the call to.. 
f8e0: 20 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62       /// LoadLib
f8f0: 72 61 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20  rary fails...   
f900: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
f910: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
f920: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
f930: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
f940: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 77 61  native module wa
f950: 73 20 6c 6f 61 64 65 64 20 73 75 63 63 65 73 73  s loaded success
f960: 66 75 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73 65  fully; otherwise
f970: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72  ,..      /// zer
f980: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
f990: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
f9a0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
f9b0: 6f 6f 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69 74  ool PreLoadSQLit
f9c0: 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20  eDll(..         
f9d0: 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65   string baseDire
f9e0: 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20 20  ctory,          
f9f0: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
fa00: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
fa10: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
fa20: 72 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  re,    /* in */.
fa30: 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73  .          ref s
fa40: 74 72 69 6e 67 20 6e 61 74 69 76 65 4d 6f 64 75  tring nativeModu
fa50: 6c 65 46 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f  leFileName, /* o
fa60: 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
fa70: 20 72 65 66 20 49 6e 74 50 74 72 20 6e 61 74 69   ref IntPtr nati
fa80: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 20  veModuleHandle  
fa90: 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
faa0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
fab0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  {..          //.
fac0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
fad0: 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69  TE: If the speci
fae0: 66 69 65 64 20 62 61 73 65 20 64 69 72 65 63 74  fied base direct
faf0: 6f 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65  ory is null, use
fb00: 20 74 68 65 20 64 65 66 61 75 6c 74 0d 0a 20 20   the default..  
fb10: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
fb20: 20 28 69 2e 65 2e 20 61 74 74 65 6d 70 74 20 74   (i.e. attempt t
fb30: 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  o automatically 
fb40: 64 65 74 65 63 74 20 69 74 29 2e 0d 0a 20 20 20  detect it)...   
fb50: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
fb60: 20 20 20 20 20 69 66 20 28 62 61 73 65 44 69 72       if (baseDir
fb70: 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
fb80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62  .              b
fb90: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 47  aseDirectory = G
fba0: 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28  etBaseDirectory(
fbb0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
fbc0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
fbd0: 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
fbe0: 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
fbf0: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2c   base directory,
fc00: 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20   stop now...    
fc10: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
fc20: 20 20 20 20 69 66 20 28 62 61 73 65 44 69 72 65      if (baseDire
fc30: 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ctory == null)..
fc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
fc50: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
fc60: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
fc70: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
fc80: 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62 61  Determine the ba
fc90: 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  se file name for
fca0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
fcb0: 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  te library...   
fcc0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
fcd0: 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 6b  If this is not k
fce0: 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c 61  nown by this cla
fcf0: 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f  ss, we cannot co
fd00: 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20  ntinue...       
fd10: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
fd20: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
fd30: 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76 65  Only = GetNative
fd40: 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f  LibraryFileNameO
fd50: 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly();....      
fd60: 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65      if (fileName
fd70: 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Only == null).. 
fd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
fd90: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
fda0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
fdb0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
fdc0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
fdd0: 69 74 65 20 6c 69 62 72 61 72 79 20 65 78 69 73  ite library exis
fde0: 74 73 20 69 6e 20 74 68 65 20 62 61 73 65 20 64  ts in the base d
fdf0: 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20  irectory..      
fe00: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73      //       its
fe10: 65 6c 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  elf, stop now...
fe20: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
fe30: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
fe40: 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
fe50: 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
fe60: 43 6f 6d 62 69 6e 65 50 61 74 68 28 62 61 73 65  CombinePath(base
fe70: 44 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  Directory,..    
fe80: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
fe90: 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
fea0: 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
feb0: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
fec0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
fed0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
fee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
fef0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
ff00: 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66  E: If the specif
ff10: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
ff20: 63 68 69 74 65 63 74 75 72 65 20 69 73 20 6e 75  chitecture is nu
ff30: 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20  ll, use the..   
ff40: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
ff50: 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20  default...      
ff60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
ff70: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
ff80: 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
ff90: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
ffa0: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
ffb0: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50  hitecture = GetP
ffc0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
ffd0: 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ture();....     
ffe0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
fff0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
10000 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
10010 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  y the processor 
10020 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 73 74  architecture, st
10030 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
10040 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
10050 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
10060 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75  chitecture == nu
10070 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
10080 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
10090 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
100a0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
100b0 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66  OTE: Build the f
100c0 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c  ull path and fil
100d0 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e  e name for the n
100e0 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20  ative SQLite..  
100f0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
10100 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20 74   library using t
10110 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
10120 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d  hitecture name..
10130 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
10140 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
10150 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65  e = FixUpDllFile
10160 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Name(MaybeCombin
10170 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69  ePath(MaybeCombi
10180 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
10190 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
101a0 74 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41  tory, processorA
101b0 72 63 68 69 74 65 63 74 75 72 65 29 2c 20 66 69  rchitecture), fi
101c0 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d  leNameOnly));...
101d0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
101e0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
101f0 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20 6e 61  : If the file na
10200 6d 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  me based on the 
10210 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
10220 65 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20  ecture name..   
10230 20 20 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74         // is not
10240 20 66 6f 75 6e 64 2c 20 74 72 79 20 75 73 69 6e   found, try usin
10250 67 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  g the associated
10260 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
10270 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
10280 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
10290 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
102a0 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
102b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
102c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
102d0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65     // NOTE: Atte
102e0 6d 70 74 20 74 6f 20 74 72 61 6e 73 6c 61 74 65  mpt to translate
102f0 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
10300 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 61  rchitecture to a
10310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10320 2f 2f 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72  //       platfor
10330 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20  m name...       
10340 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
10350 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
10360 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47  platformName = G
10370 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70  etPlatformName(p
10380 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
10390 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ture);....      
103a0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
103b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
103c0 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
103d0 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65  to translate the
103e0 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20   platform name, 
103f0 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
10400 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
10410 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
10420 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e  latformName == n
10430 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
10440 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
10450 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
10460 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
10470 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
10480 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c  : Build the full
10490 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e   path and file n
104a0 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
104b0 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
104c0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
104d0 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20    library using 
104e0 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  the platform nam
104f0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
10500 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
10510 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
10520 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
10530 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
10540 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
10550 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
10560 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
10570 6f 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61 6d  ory, platformNam
10580 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  e), fileNameOnly
10590 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
105a0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
105b0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
105c0 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73  If the file does
105d0 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70   not exist, skip
105e0 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
105f0 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
10600 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
10610 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45       if (!File.E
10620 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
10630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10640 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
10650 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
10660 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
10670 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
10680 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
10690 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
106a0 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  AD..            
106b0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
106c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
106d0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
106e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106f0 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78  // NOTE: Show ex
10700 61 63 74 6c 79 20 77 68 65 72 65 20 77 65 20 61  actly where we a
10710 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61  re trying to loa
10720 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  d the native..  
10730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10740 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20  //       SQLite 
10750 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20  library from... 
10760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10770 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
10780 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
10790 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
107a0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
107b0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
107c0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
107d0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
107e0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
107f0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
10800 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
10810 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79 69 6e  -loader is tryin
10820 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  g to load native
10830 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
10840 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51 4c              "SQL
10850 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30  ite library \"{0
10860 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d  }\"...", fileNam
10870 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
10880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10890 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
108a0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
108b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
108c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
108d0 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
108e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
108f0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
10900 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10910 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
10920 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74  ttempt to load t
10930 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
10940 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65 69  y.  This will ei
10950 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20  ther..          
10960 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74      //       ret
10970 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61 74 69  urn a valid nati
10980 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
10990 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e  , return IntPtr.
109a0 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Zero,..         
109b0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72       //       or
109c0 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65 70 74   throw an except
109d0 69 6f 6e 2e 20 20 54 68 69 73 20 6d 75 73 74 20  ion.  This must 
109e0 75 73 65 20 74 68 65 20 61 70 70 72 6f 70 72 69  use the appropri
109f0 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ate..           
10a00 20 20 20 2f 2f 20 20 20 20 20 20 20 50 2f 49 6e     //       P/In
10a10 76 6f 6b 65 20 6d 65 74 68 6f 64 20 66 6f 72 20  voke method for 
10a20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 65 72  the current oper
10a30 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20  ating system... 
10a40 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
10a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
10a60 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
10a70 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d  ame = fileName;.
10a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
10a90 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c  ativeModuleHandl
10aa0 65 20 3d 20 4e 61 74 69 76 65 4c 69 62 72 61 72  e = NativeLibrar
10ab0 79 48 65 6c 70 65 72 2e 4c 6f 61 64 4c 69 62 72  yHelper.LoadLibr
10ac0 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ary(fileName);..
10ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10ae0 72 65 74 75 72 6e 20 28 6e 61 74 69 76 65 4d 6f  return (nativeMo
10af0 64 75 6c 65 48 61 6e 64 6c 65 20 21 3d 20 49 6e  duleHandle != In
10b00 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
10b10 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
10b20 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
10b30 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a   TRACE_PRELOAD..
10b40 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
10b50 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
10b60 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
10b70 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
10b80 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
10b90 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
10ba0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
10bb0 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
10bc0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
10bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
10be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10bf0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10c00 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
10c10 45 3a 20 46 69 72 73 74 2c 20 67 72 61 62 20 74  E: First, grab t
10c20 68 65 20 6c 61 73 74 20 57 69 6e 33 32 20 65 72  he last Win32 er
10c30 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20  ror number...   
10c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
10c50 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
10c60 20 20 20 20 20 69 6e 74 20 6c 61 73 74 45 72 72       int lastErr
10c70 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74  or = Marshal.Get
10c80 4c 61 73 74 57 69 6e 33 32 45 72 72 6f 72 28 29  LastWin32Error()
10c90 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d  ; /* throw */...
10ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10cb0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
10cc0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
10cd0 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77 65 20  : Show where we 
10ce0 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 74  failed to load t
10cf0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
10d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d10 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62      //       lib
10d20 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e 67 20  rary from along 
10d30 77 69 74 68 20 74 68 65 20 57 69 6e 33 32 20 65  with the Win32 e
10d40 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d 0a 20  rror code and.. 
10d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d60 20 2f 2f 20 20 20 20 20 20 20 65 78 63 65 70 74   //       except
10d70 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  ion information.
10d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d90 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10da0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
10db0 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
10dc0 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
10dd0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
10de0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
10df0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
10e00 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
10e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
10e30 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
10e40 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  d to load native
10e50 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
10e60 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51 4c              "SQL
10e70 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30  ite library \"{0
10e80 7d 5c 22 20 28 67 65 74 4c 61 73 74 45 72 72 6f  }\" (getLastErro
10e90 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d  r = {1}): {2}",.
10ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10eb0 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
10ec0 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b   lastError, e));
10ed0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
10ee0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
10ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
10f00 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
10f10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10f20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
10f30 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
10f40 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
10f50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
10f60 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10f70 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  false;..      }.
10f80 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
10f90 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
10fa0 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
10fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ff0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
11000 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11010 45 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20  EWORK..    //.. 
11020 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74     // NOTE: On t
11030 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  he .NET Compact 
11040 46 72 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e  Framework, the n
11050 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20 61 73  ative interop as
11060 73 65 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20  sembly must..   
11070 20 2f 2f 20 20 20 20 20 20 20 62 65 20 75 73 65   //       be use
11080 64 20 62 65 63 61 75 73 65 20 69 74 20 70 72 6f  d because it pro
11090 76 69 64 65 73 20 73 65 76 65 72 61 6c 20 77 6f  vides several wo
110a0 72 6b 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45  rkarounds to .NE
110b0 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f  T Compact..    /
110c0 2f 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72  /       Framewor
110d0 6b 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d  k limitations im
110e0 70 6f 72 74 61 6e 74 20 66 6f 72 20 70 72 6f 70  portant for prop
110f0 65 72 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20  er operation of 
11100 74 68 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f  the core..    //
11110 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61         System.Da
11120 74 61 2e 53 51 4c 69 74 65 20 66 75 6e 63 74 69  ta.SQLite functi
11130 6f 6e 61 6c 69 74 79 20 28 65 2e 67 2e 20 62 65  onality (e.g. be
11140 69 6e 67 20 61 62 6c 65 20 74 6f 20 62 69 6e 64  ing able to bind
11150 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70  ..    //       p
11160 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 68 61  arameters and ha
11170 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75  ndle column valu
11180 65 73 20 6f 66 20 74 79 70 65 73 20 49 6e 74 36  es of types Int6
11190 34 20 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a  4 and Double)...
111a0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
111b0 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
111c0 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
111d0 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 31  SQLite.Interop.1
111e0 30 34 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20  04.dll";..#elif 
111f0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
11200 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
11210 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
11220 20 69 66 20 74 68 65 20 73 74 61 6e 64 61 72 64   if the standard
11230 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
11240 69 73 20 65 6e 61 62 6c 65 64 2c 20 75 73 65 20  is enabled, use 
11250 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  it...    //..   
11260 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
11270 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
11280 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a  L = "sqlite3";..
11290 23 65 6c 69 66 20 55 53 45 5f 49 4e 54 45 52 4f  #elif USE_INTERO
112a0 50 5f 44 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20  P_DLL..    //.. 
112b0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
112c0 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 6e 61  rwise, if the na
112d0 74 69 76 65 20 53 51 4c 69 74 65 20 69 6e 74 65  tive SQLite inte
112e0 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 73 20  rop assembly is 
112f0 65 6e 61 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f  enabled,..    //
11300 20 20 20 20 20 20 20 75 73 65 20 69 74 2e 0d 0a         use it...
11310 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
11320 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
11330 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
11340 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64  SQLite.Interop.d
11350 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ll";..#else..   
11360 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
11370 3a 20 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d  : Finally, assum
11380 65 20 74 68 61 74 20 74 68 65 20 6d 69 78 65 64  e that the mixed
11390 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c 79 20 69  -mode assembly i
113a0 73 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20  s being used... 
113b0 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
113c0 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  nal const string
113d0 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53   SQLITE_DLL = "S
113e0 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
113f0 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d  e.dll";..#endif.
11400 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69 73 20 73  ...    // This s
11410 65 63 74 69 6f 6e 20 75 73 65 73 20 69 6e 74 65  ection uses inte
11420 72 6f 70 20 63 61 6c 6c 73 20 74 68 61 74 20 61  rop calls that a
11430 6c 73 6f 20 66 65 74 63 68 20 74 65 78 74 20 6c  lso fetch text l
11440 65 6e 67 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a  ength to optimiz
11450 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20  e conversion... 
11460 20 20 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67     // When using
11470 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 64 6c   the standard dl
11480 6c 2c 20 77 65 20 63 61 6e 20 72 65 70 6c 61 63  l, we can replac
11490 65 20 74 68 65 73 65 20 63 61 6c 6c 73 20 77 69  e these calls wi
114a0 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65  th normal sqlite
114b0 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20   calls and..    
114c0 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65  // do unoptimize
114d0 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e  d conversions in
114e0 73 74 65 61 64 20 61 66 74 65 72 77 61 72 64 73  stead afterwards
114f0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
11500 74 65 72 6f 70 20 61 64 64 65 64 20 74 65 78 74  terop added text
11510 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a  length calls....
11520 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
11530 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
11540 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11550 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
11560 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11570 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
11580 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61  ind_parameter_na
11590 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
115a0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
115b0 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
115c0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
115d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
115e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
115f0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
11600 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
11610 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f  n_database_name_
11620 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
11630 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
11640 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
11650 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11660 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
11670 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11680 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
11690 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
116a0 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69  atabase_name16_i
116b0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
116c0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
116d0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
116e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
116f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
11700 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11710 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
11720 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
11730 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70 28 49  cltype_interop(I
11740 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
11750 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
11760 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
11770 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11780 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
11790 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
117a0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
117b0 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36  olumn_decltype16
117c0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
117d0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
117e0 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
117f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11800 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
11810 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11820 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
11830 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
11840 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
11850 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
11860 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
11870 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
11880 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11890 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
118a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
118b0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
118c0 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  umn_name16_inter
118d0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
118e0 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
118f0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
11900 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11910 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
11920 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11930 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
11940 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
11950 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
11960 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
11970 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
11980 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
11990 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
119a0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
119b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
119c0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
119d0 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
119e0 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
119f0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
11a00 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
11a10 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
11a20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11a30 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11a40 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
11a50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
11a60 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74  n_table_name_int
11a70 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
11a80 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
11a90 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
11aa0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11ab0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
11ac0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11ad0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
11ae0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
11af0 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
11b00 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
11b10 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
11b20 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
11b30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11b40 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
11b50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11b60 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
11b70 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74  _column_text_int
11b80 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
11b90 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
11ba0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
11bb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11bc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
11bd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11be0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
11bf0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
11c00 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
11c10 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
11c20 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
11c30 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
11c40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11c50 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11c60 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
11c70 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  tr sqlite3_errms
11c80 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  g_interop(IntPtr
11c90 20 64 62 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e   db, ref int len
11ca0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
11cb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11cc0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
11cd0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
11ce0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
11cf0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e  lite3_prepare_in
11d00 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
11d10 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e   IntPtr pSql, in
11d20 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e  t nBytes, ref In
11d30 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49  tPtr stmt, ref I
11d40 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 2c  ntPtr ptrRemain,
11d50 20 72 65 66 20 69 6e 74 20 6e 52 65 6d 61 69 6e   ref int nRemain
11d60 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
11d70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11d80 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
11d90 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
11da0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
11db0 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75  lite3_table_colu
11dc0 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74 65  mn_metadata_inte
11dd0 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rop(IntPtr db, b
11de0 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
11df0 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
11e00 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65  te[] colName, re
11e10 66 20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61  f IntPtr ptrData
11e20 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Type, ref IntPtr
11e30 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66   ptrCollSeq, ref
11e40 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65   int notNull, re
11e50 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79  f int primaryKey
11e60 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e  , ref int autoIn
11e70 63 2c 20 72 65 66 20 69 6e 74 20 64 74 4c 65 6e  c, ref int dtLen
11e80 2c 20 72 65 66 20 69 6e 74 20 63 73 4c 65 6e 29  , ref int csLen)
11e90 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
11ea0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11eb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11ec0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
11ed0 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
11ee0 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  e_text_interop(I
11ef0 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e 74  ntPtr p, ref int
11f00 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
11f10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11f20 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
11f30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11f40 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
11f50 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e  _value_text16_in
11f60 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
11f70 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
11f80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11f90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
11fa0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11fb0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
11fc0 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65  ite3_malloc_size
11fd0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
11fe0 70 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52  p);....#if INTER
11ff0 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c  OP_LOG..    [Dll
12000 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12010 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
12020 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12030 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
12040 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c  sqlite3_config_l
12050 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23  og_interop();..#
12060 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f  endif..#endif../
12070 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  / !SQLITE_STANDA
12080 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
12090 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54  gion....    // T
120a0 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  hese functions a
120b0 64 64 20 65 78 69 73 74 69 6e 67 20 66 75 6e 63  dd existing func
120c0 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70  tionality on top
120d0 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20 72   of SQLite and r
120e0 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c 65 20  equire a little 
120f0 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f  effort to..    /
12100 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20 77 68  / get working wh
12110 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61  en using the sta
12120 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62  ndard SQLite lib
12130 72 61 72 79 2e 0d 0a 20 20 20 20 23 72 65 67 69  rary...    #regi
12140 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64  on interop added
12150 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a   functionality..
12160 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54  ..#if !SQLITE_ST
12170 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44  ANDARD....    [D
12180 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12190 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
121a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
121b0 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70  n IntPtr interop
121c0 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a  _libversion();..
121d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
121e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
121f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12200 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
12210 20 69 6e 74 65 72 6f 70 5f 73 6f 75 72 63 65 69   interop_sourcei
12220 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  d();....    [Dll
12230 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12240 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
12250 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12260 69 6e 74 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70  int interop_comp
12270 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49  ileoption_used(I
12280 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b  ntPtr zOptName);
12290 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
122a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
122b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
122c0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
122d0 74 72 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69  tr interop_compi
122e0 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74  leoption_get(int
122f0 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c   N);....    [Dll
12300 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12310 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
12320 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12330 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
12340 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e  sqlite3_close_in
12350 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
12360 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
12370 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12380 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12390 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
123a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
123b0 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
123c0 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74  tion_interop(Int
123d0 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
123e0 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  trName, int nArg
123f0 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  s, int nType, In
12400 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
12410 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
12420 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
12430 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69   fstep, SQLiteFi
12440 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e  nalCallback ffin
12450 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c  al, int needColl
12460 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  Seq);....    [Dl
12470 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12480 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
12490 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
124a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
124b0 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a   sqlite3_finaliz
124c0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
124d0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b   stmt);....    [
124e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
124f0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
12500 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12510 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
12520 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  de sqlite3_backu
12530 70 5f 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70  p_finish_interop
12540 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
12550 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
12560 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12570 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12580 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
12590 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
125a0 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69  te3_blob_close_i
125b0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 62 6c  nterop(IntPtr bl
125c0 6f 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ob);....    [Dll
125d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
125e0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
125f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12600 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
12610 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74  sqlite3_open_int
12620 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38  erop(byte[] utf8
12630 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d  Filename, byte[]
12640 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65   vfsName, SQLite
12650 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c  OpenFlagsEnum fl
12660 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e 63  ags, int extFunc
12670 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62  s, ref IntPtr db
12680 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
12690 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
126a0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
126b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
126c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
126d0 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74  lite3_open16_int
126e0 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38  erop(byte[] utf8
126f0 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d  Filename, byte[]
12700 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65   vfsName, SQLite
12710 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c  OpenFlagsEnum fl
12720 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e 63  ags, int extFunc
12730 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62  s, ref IntPtr db
12740 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
12750 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12760 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
12770 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
12780 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
12790 6c 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74 65  lite3_reset_inte
127a0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
127b0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
127c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
127d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
127e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
127f0 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
12800 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
12810 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  db);..#endif..//
12820 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
12830 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
12840 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68  ion....    // Th
12850 65 20 73 74 61 6e 64 61 72 64 20 61 70 69 20 63  e standard api c
12860 61 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74 73 20  all equivalents 
12870 6f 66 20 74 68 65 20 61 62 6f 76 65 20 69 6e 74  of the above int
12880 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20  erop calls..    
12890 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64  #region standard
128a0 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74   versions of int
128b0 65 72 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a  erop functions..
128c0 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
128d0 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c  NDARD....#if !PL
128e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
128f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12900 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12910 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12920 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12930 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12940 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12950 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12960 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
12970 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12980 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
12990 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
129a0 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 64  3_close(IntPtr d
129b0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45  b);....#if !INTE
129c0 52 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45  ROP_LEGACY_CLOSE
129d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
129e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
129f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12a00 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
12a10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
12a20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12a30 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12a40 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12a50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12a60 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12a70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12a80 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
12a90 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  de sqlite3_close
12aa0 5f 76 32 28 49 6e 74 50 74 72 20 64 62 29 3b 20  _v2(IntPtr db); 
12ab0 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23  /* 3.7.14+ */..#
12ac0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
12ad0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12ae0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12af0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12b00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12b10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12b20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12b30 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12b40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12b50 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
12b60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12b70 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
12b80 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
12b90 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
12ba0 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  n(IntPtr db, byt
12bb0 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  e[] strName, int
12bc0 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70   nArgs, int nTyp
12bd0 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  e, IntPtr pvUser
12be0 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
12bf0 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c   func, SQLiteCal
12c00 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c  lback fstep, SQL
12c10 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b  iteFinalCallback
12c20 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66   ffinal);....#if
12c30 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12c40 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12c50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12c60 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12c70 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12c80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12c90 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
12ca0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12cb0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
12cc0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12cd0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
12ce0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
12cf0 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49  lite3_finalize(I
12d00 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
12d10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12d20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12d30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12d40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12d50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12d60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12d70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12d80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12d90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12da0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12db0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12dc0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
12dd0 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
12de0 66 69 6e 69 73 68 28 49 6e 74 50 74 72 20 62 61  finish(IntPtr ba
12df0 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
12e00 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12e10 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12e20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12e30 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12e40 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12e50 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12e60 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12e70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12e80 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12e90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12ea0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
12eb0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
12ec0 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20  e3_reset(IntPtr 
12ed0 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
12ee0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12ef0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12f00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12f10 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12f20 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12f30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12f40 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12f50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12f60 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12f70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12f80 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
12f90 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
12fa0 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e  arameter_name(In
12fb0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
12fc0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
12fd0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12fe0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12ff0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13000 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13010 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13020 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13030 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13040 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13050 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13060 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13070 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
13080 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
13090 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49  _database_name(I
130a0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
130b0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
130c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
130d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
130e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
130f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13100 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13110 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13120 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13130 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13140 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13150 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13160 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
13170 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
13180 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31  n_database_name1
13190 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
131a0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
131b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
131c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
131d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
131e0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
131f0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13200 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13210 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13220 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13230 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13240 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13250 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
13260 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
13270 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e  lumn_decltype(In
13280 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
13290 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
132a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
132b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
132c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
132d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
132e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
132f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13300 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13310 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13320 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13330 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13340 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
13350 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
13360 5f 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50  _decltype16(IntP
13370 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
13380 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
13390 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
133a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
133b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
133c0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
133d0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
133e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
133f0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13400 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13410 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13420 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13430 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
13440 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
13450 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
13460 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
13470 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13480 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13490 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
134a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
134b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
134c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
134d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
134e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
134f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13500 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13510 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13520 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
13530 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e  column_name16(In
13540 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
13550 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
13560 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13570 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13580 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13590 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
135a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
135b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
135c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
135d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
135e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
135f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13600 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
13610 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
13620 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74  _origin_name(Int
13630 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
13640 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
13650 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13660 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13670 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13680 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13690 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
136a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
136b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
136c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
136d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
136e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
136f0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
13700 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
13710 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e  origin_name16(In
13720 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
13730 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
13740 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13750 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13760 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13770 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13780 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13790 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
137a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
137b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
137c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
137d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
137e0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
137f0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
13800 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50  _table_name(IntP
13810 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
13820 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
13830 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13840 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13850 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13860 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13870 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13880 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13890 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
138a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
138b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
138c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
138d0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
138e0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
138f0 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  able_name16(IntP
13900 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
13910 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
13920 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13930 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13940 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13950 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13960 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13970 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13980 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13990 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
139a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
139b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
139c0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
139d0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
139e0 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ext(IntPtr stmt,
139f0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
13a00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13a10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13a20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13a30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13a40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13a50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13a60 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13a70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13a80 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13a90 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13aa0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13ab0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
13ac0 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e  column_text16(In
13ad0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
13ae0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
13af0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13b00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13b10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13b20 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13b30 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13b40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13b50 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13b60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13b70 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13b80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13b90 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
13ba0 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  r sqlite3_errmsg
13bb0 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
13bc0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13bd0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13be0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13bf0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13c00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13c10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13c20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13c30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13c40 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13c50 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13c60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13c70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
13c80 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
13c90 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
13ca0 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
13cb0 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tes, ref IntPtr 
13cc0 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72  stmt, ref IntPtr
13cd0 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a   ptrRemain);....
13ce0 23 69 66 20 55 53 45 5f 50 52 45 50 41 52 45 5f  #if USE_PREPARE_
13cf0 56 32 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  V2..#if !PLATFOR
13d00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13d10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
13d20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
13d30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13d40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
13d50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
13d60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
13d70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
13d80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
13d90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
13da0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
13db0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65  Code sqlite3_pre
13dc0 70 61 72 65 5f 76 32 28 49 6e 74 50 74 72 20 64  pare_v2(IntPtr d
13dd0 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20  b, IntPtr pSql, 
13de0 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20  int nBytes, ref 
13df0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66  IntPtr stmt, ref
13e00 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69   IntPtr ptrRemai
13e10 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  n);..#endif....#
13e20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13e30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13e40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13e50 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13e60 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13e70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13e80 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13e90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13ea0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13eb0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13ec0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13ed0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
13ee0 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f  sqlite3_table_co
13ef0 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e  lumn_metadata(In
13f00 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
13f10 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
13f20 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
13f30 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  olName, ref IntP
13f40 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
13f50 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f  ref IntPtr ptrCo
13f60 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e  llSeq, ref int n
13f70 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20  otNull, ref int 
13f80 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20  primaryKey, ref 
13f90 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d  int autoInc);...
13fa0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13fb0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13fc0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13fd0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13fe0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13ff0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14000 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
14010 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14020 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
14030 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
14040 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14050 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
14060 5f 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74 50  _value_text(IntP
14070 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
14080 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14090 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
140a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
140b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
140c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
140d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
140e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
140f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14100 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14110 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14120 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14130 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
14140 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 70 29  text16(IntPtr p)
14150 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ;....#endif..   
14160 20 2f 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e 44   // SQLITE_STAND
14170 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
14180 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
14190 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
141a0 61 72 65 20 63 75 73 74 6f 6d 20 61 6e 64 20 68  are custom and h
141b0 61 76 65 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e  ave no equivalen
141c0 74 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61  t standard libra
141d0 72 79 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  ry method...    
141e0 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61  // All of them a
141f0 72 65 20 22 6e 69 63 65 20 74 6f 20 68 61 76 65  re "nice to have
14200 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73  s" and not neces
14210 73 61 72 69 6c 79 20 22 6e 65 65 64 20 74 6f 20  sarily "need to 
14220 68 61 76 65 73 22 2e 0d 0a 20 20 20 20 23 72 65  haves"...    #re
14230 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65  gion no equivale
14240 6e 74 20 73 74 61 6e 64 61 72 64 20 6d 65 74 68  nt standard meth
14250 6f 64 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54  od....#if !SQLIT
14260 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
14270 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14280 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
14290 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
142a0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
142b0 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c  ite3_context_col
142c0 6c 73 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74  lseq_interop(Int
142d0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66  Ptr context, ref
142e0 20 69 6e 74 20 74 79 70 65 2c 20 72 65 66 20 69   int type, ref i
142f0 6e 74 20 65 6e 63 2c 20 72 65 66 20 69 6e 74 20  nt enc, ref int 
14300 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
14310 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14320 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
14330 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14340 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e   int sqlite3_con
14350 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65  text_collcompare
14360 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
14370 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
14380 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62  p1, int p1len, b
14390 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32  yte[] p2, int p2
143a0 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
143b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
143c0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
143d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
143e0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
143f0 20 73 71 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f   sqlite3_cursor_
14400 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e  rowid_interop(In
14410 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 63  tPtr stmt, int c
14420 75 72 73 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20  ursor, ref long 
14430 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b  rowid);....    [
14440 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14450 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
14460 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14470 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
14480 64 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  de sqlite3_index
14490 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74  _column_info_int
144a0 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
144b0 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20  byte[] catalog, 
144c0 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65  byte[] IndexName
144d0 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e  , byte[] ColumnN
144e0 61 6d 65 2c 20 72 65 66 20 69 6e 74 20 73 6f 72  ame, ref int sor
144f0 74 4f 72 64 65 72 2c 20 72 65 66 20 69 6e 74 20  tOrder, ref int 
14500 6f 6e 45 72 72 6f 72 2c 20 72 65 66 20 49 6e 74  onError, ref Int
14510 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72  Ptr Collation, r
14520 65 66 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b  ef int colllen);
14530 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
14540 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14550 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14560 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
14570 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 75  sqlite3_table_cu
14580 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74  rsor_interop(Int
14590 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64 62  Ptr stmt, int db
145a0 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50  , int tableRootP
145b0 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d  age);....#endif.
145c0 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  .// !SQLITE_STAN
145d0 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
145e0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
145f0 20 53 74 61 6e 64 61 72 64 20 41 50 49 20 63 61   Standard API ca
14600 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73  lls global acros
14610 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65  s versions.  The
14620 72 65 20 61 72 65 20 61 20 66 65 77 20 69 6e 73  re are a few ins
14630 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72 6f  tances of intero
14640 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20  p calls..    // 
14650 73 63 61 74 74 65 72 65 64 20 69 6e 20 68 65 72  scattered in her
14660 65 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20  e, but they are 
14670 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65 6e  only active when
14680 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
14690 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64 65  TFRAMEWORK is de
146a0 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72 65  clared...    #re
146b0 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71  gion standard sq
146c0 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a  lite api calls..
146d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
146e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
146f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14700 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14710 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14720 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14730 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14740 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14750 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14760 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14770 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14780 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
14790 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d  3_libversion();.
147a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
147b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
147c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
147d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
147e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
147f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
14800 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
14810 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
14820 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14830 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
14840 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14850 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
14860 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65  libversion_numbe
14870 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  r();....#if !PLA
14880 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14890 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
148a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
148b0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
148c0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
148d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
148e0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
148f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14900 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14910 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14920 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
14930 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64  sqlite3_sourceid
14940 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
14950 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14960 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14970 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14980 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14990 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
149a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
149b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
149c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
149d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
149e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
149f0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
14a00 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
14a10 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f  n_used(IntPtr zO
14a20 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  ptName);....#if 
14a30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14a40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14a50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14a60 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14a70 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14a80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14a90 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
14aa0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14ab0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
14ac0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14ad0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
14ae0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70  Ptr sqlite3_comp
14af0 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e  ileoption_get(in
14b00 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  t N);....#if !PL
14b10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14b20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14b30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14b40 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14b50 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14b60 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14b70 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14b80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14b90 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14ba0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14bb0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
14bc0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
14bd0 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f  3_enable_shared_
14be0 63 61 63 68 65 28 0d 0a 20 20 20 20 20 20 20 20  cache(..        
14bf0 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a  int enable);....
14c00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14c10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14c20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14c30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14c40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14c50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14c60 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14c70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14c80 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
14c90 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
14ca0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14cb0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
14cc0 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f   sqlite3_enable_
14cd0 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d  load_extension(.
14ce0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
14cf0 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b  db, int enable);
14d00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14d10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14d20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14d30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14d40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14d50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14d60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14d70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14d80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14d90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
14da0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14db0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
14dc0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61  Code sqlite3_loa
14dd0 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20  d_extension(..  
14de0 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c        IntPtr db,
14df0 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65   byte[] fileName
14e00 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d  , byte[] procNam
14e10 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 45  e, ref IntPtr pE
14e20 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rror);....#if !P
14e30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14e40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14e50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14e60 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14e70 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14e80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14e90 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14ea0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14eb0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14ec0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14ed0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
14ee0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
14ef0 65 33 5f 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63  e3_overload_func
14f00 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20  tion(IntPtr db, 
14f10 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e  IntPtr zName, in
14f20 74 20 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66  t nArgs);....#if
14f30 20 57 49 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50   WINDOWS..#if !P
14f40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14f50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
14f60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14f70 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14f80 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14f90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14fa0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
14fb0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
14fc0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14fd0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14fe0 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
14ff0 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
15000 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  ndif..    //..  
15010 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22    // NOTE: The "
15020 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65  sqlite3_win32_se
15030 74 5f 64 69 72 65 63 74 6f 72 79 22 20 53 51 4c  t_directory" SQL
15040 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
15050 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20   function is..  
15060 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20    //       only 
15070 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e  supported on Win
15080 64 6f 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  dows...    //.. 
15090 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
150a0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
150b0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
150c0 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65  3_win32_set_dire
150d0 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70 65 2c  ctory(uint type,
150e0 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d   string value);.
150f0 0a 0d 0a 23 69 66 20 21 44 45 42 55 47 20 2f 2f  ...#if !DEBUG //
15100 20 4e 4f 54 45 3a 20 53 68 6f 75 6c 64 20 62 65   NOTE: Should be
15110 20 22 57 49 4e 33 32 48 45 41 50 20 26 26 20 21   "WIN32HEAP && !
15120 4d 45 4d 44 45 42 55 47 22 0d 0a 23 69 66 20 21  MEMDEBUG"..#if !
15130 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15140 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15150 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15160 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15170 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15180 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15190 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
151a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
151b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
151c0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
151d0 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
151e0 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68  e3_win32_reset_h
151f0 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65  eap" SQLite core
15200 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f   library functio
15210 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20  n is..    //    
15220 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65     only supporte
15230 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65  d on Windows whe
15240 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69  n the Win32 nati
15250 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  ve allocator is 
15260 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  in..    //      
15270 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65   use (i.e. by de
15280 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61  fault, in "Relea
15290 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  se" builds of Sy
152a0 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
152b0 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f  ..    //       o
152c0 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c  nly).  By defaul
152d0 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75  t, in "Debug" bu
152e0 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
152f0 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d  ata.SQLite, the.
15300 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45  .    //       ME
15310 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72  MDEBUG allocator
15320 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f   is used...    /
15330 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
15340 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
15350 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
15360 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65  lite3_win32_rese
15370 74 5f 68 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66  t_heap();....#if
15380 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15390 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
153a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
153b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
153c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
153d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
153e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
153f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15400 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
15410 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  f..    //..    /
15420 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c  / NOTE: The "sql
15430 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61  ite3_win32_compa
15440 63 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20  ct_heap" SQLite 
15450 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e  core library fun
15460 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f  ction is..    //
15470 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70         only supp
15480 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73  orted on Windows
15490 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20   when the Win32 
154a0 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72  native allocator
154b0 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20   is in..    //  
154c0 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62       use (i.e. b
154d0 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52  y default, in "R
154e0 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f  elease" builds o
154f0 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
15500 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20  Lite..    //    
15510 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65     only).  By de
15520 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67  fault, in "Debug
15530 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
15540 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20  em.Data.SQLite, 
15550 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
15560 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63    MEMDEBUG alloc
15570 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20  ator is used... 
15580 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
15590 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
155a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
155b0 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f  e sqlite3_win32_
155c0 63 6f 6d 70 61 63 74 5f 68 65 61 70 28 72 65 66  compact_heap(ref
155d0 20 75 69 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d   uint largest);.
155e0 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
155f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15600 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15610 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15620 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15630 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15640 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15650 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15660 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
15670 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15680 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15690 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
156a0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
156b0 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29  e3_malloc(int n)
156c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
156d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
156e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
156f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15700 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15710 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15720 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15730 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15740 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15750 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15760 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15770 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
15780 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74  ite3_realloc(Int
15790 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a  Ptr p, int n);..
157a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
157b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
157c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
157d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
157e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
157f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15800 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15810 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15820 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15830 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15840 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15850 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
15860 66 72 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  free(IntPtr p);.
15870 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15880 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15890 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
158a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
158b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
158c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
158d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
158e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
158f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15900 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15910 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15920 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
15930 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
15940 5f 76 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46  _v2(byte[] utf8F
15950 69 6c 65 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74  ilename, ref Int
15960 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70  Ptr db, SQLiteOp
15970 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
15980 73 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d  s, byte[] vfsNam
15990 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
159a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
159b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
159c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
159d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
159e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
159f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
15a00 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
15a10 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
15a20 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15a30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
15a40 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
15a50 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
15a60 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
15a70 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
15a80 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
15a90 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 73 74 72  lite3_open16(str
15aa0 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 72 65  ing fileName, re
15ab0 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
15ac0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15ad0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15ae0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15af0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15b00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15b10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15b20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
15b30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15b40 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
15b50 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
15b60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15b70 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 69  n void sqlite3_i
15b80 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74 72 20  nterrupt(IntPtr 
15b90 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
15ba0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15bb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15bc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15bd0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15be0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15bf0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15c00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15c10 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
15c20 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69  g sqlite3_last_i
15c30 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74 50  nsert_rowid(IntP
15c40 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d  tr db);..#endif.
15c50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15c60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15c70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15c90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15ca0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15cb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
15cc0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
15cd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
15ce0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
15cf0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15d00 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
15d10 63 68 61 6e 67 65 73 28 49 6e 74 50 74 72 20 64  changes(IntPtr d
15d20 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
15d30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15d40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
15d50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15d60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15d70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15d80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15d90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15da0 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
15db0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
15dc0 75 73 65 64 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  used();..#endif.
15dd0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15de0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15df0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
15e00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
15e10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
15e20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
15e30 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
15e40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
15e50 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
15e60 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
15e70 77 61 74 65 72 28 69 6e 74 20 72 65 73 65 74 46  water(int resetF
15e80 6c 61 67 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lag);..#endif...
15e90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15ea0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15eb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15ec0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15ed0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15ee0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15ef0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
15f00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15f10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
15f20 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
15f30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15f40 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
15f50 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  e sqlite3_shutdo
15f60 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  wn();....#if !PL
15f70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15f80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15f90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15fa0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15fb0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15fc0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15fd0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15fe0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15ff0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
16000 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16010 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
16020 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
16030 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 49  3_busy_timeout(I
16040 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6d 73  ntPtr db, int ms
16050 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
16060 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16070 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
16080 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16090 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
160a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
160b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
160c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
160d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
160e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
160f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16100 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
16110 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
16120 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73 28 49 6e  lear_bindings(In
16130 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
16140 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16150 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16160 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16170 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16180 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16190 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
161a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
161b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
161c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
161d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
161e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
161f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16200 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
16210 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
16220 6e 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d  nt index, Byte[]
16230 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a   value, int nSiz
16240 65 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73  e, IntPtr nTrans
16250 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ient);....#if !P
16260 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16270 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
16280 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16290 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
162a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
162b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
162c0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
162d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
162e0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
162f0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
16300 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  le(IntPtr stmt, 
16310 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c  int index, doubl
16320 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
16330 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
16340 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16350 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16360 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16370 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16380 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16390 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
163a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
163b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
163c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
163d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
163e0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
163f0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
16400 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74  nd_int(IntPtr st
16410 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69  mt, int index, i
16420 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  nt value);....  
16430 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
16440 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a  E: This really j
16450 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74  ust calls "sqlit
16460 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f  e3_bind_int"; ho
16470 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68  wever, it has th
16480 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
16490 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67  correct type sig
164a0 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e  nature for an un
164b0 73 69 67 6e 65 64 20 28 33 32 2d 62 69 74 29 20  signed (32-bit) 
164c0 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f  integer...    //
164d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
164e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
164f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16500 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
16510 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
16520 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61  e3_bind_int", Ca
16530 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
16540 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
16550 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
16560 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
16570 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
16580 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
16590 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d  ite3_bind_int")]
165a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
165b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
165c0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
165d0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
165e0 64 5f 75 69 6e 74 28 49 6e 74 50 74 72 20 73 74  d_uint(IntPtr st
165f0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75  mt, int index, u
16600 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  int value);....#
16610 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16620 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16630 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16640 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16650 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16660 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16670 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
16680 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16690 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
166a0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
166b0 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
166c0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c  mt, int index, l
166d0 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ong value);..#en
166e0 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20  dif....    //.. 
166f0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73     // NOTE: This
16700 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c   really just cal
16710 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64  ls "sqlite3_bind
16720 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72  _int64"; however
16730 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
16740 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
16750 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
16760 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
16770 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20  d long (64-bit) 
16780 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f  integer...    //
16790 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
167a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
167b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
167c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
167d0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
167e0 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20  e3_bind_int64", 
167f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16800 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16810 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
16820 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16830 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
16840 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
16850 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e  3_bind_uint64(In
16860 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
16870 6e 64 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75  ndex, ulong valu
16880 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
16890 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
168a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
168b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
168c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
168d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
168e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
168f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
16900 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16910 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16920 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16930 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16940 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16950 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c  sqlite3_bind_nul
16960 6c 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  l(IntPtr stmt, i
16970 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
16980 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16990 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
169a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
169b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
169c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
169d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
169e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
169f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16a00 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16a10 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16a20 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
16a30 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
16a40 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
16a50 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
16a60 74 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20  t index, byte[] 
16a70 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c  value, int nlen,
16a80 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
16a90 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
16aa0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16ab0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16ac0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16ad0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16ae0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16af0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16b00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16b10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16b20 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16b30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16b40 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
16b50 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
16b60 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72  ter_count(IntPtr
16b70 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
16b80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16b90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16ba0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16bb0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16bc0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16bd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16be0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16bf0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16c00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16c10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16c20 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
16c30 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
16c40 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74  ameter_index(Int
16c50 50 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d  Ptr stmt, byte[]
16c60 20 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69   strName);....#i
16c70 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16c80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16c90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16ca0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16cb0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16cc0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16cd0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16ce0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16cf0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16d00 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16d10 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
16d20 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
16d30 6e 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73  n_count(IntPtr s
16d40 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
16d50 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
16d60 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
16d70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16d80 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
16d90 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
16da0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16db0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
16dc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16dd0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
16de0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16df0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
16e00 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
16e10 33 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73 74  3_step(IntPtr st
16e20 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
16e30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16e40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16e50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16e60 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16e70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
16e80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
16e90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16ea0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16eb0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
16ec0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16ed0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
16ee0 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e  ite3_stmt_readon
16ef0 6c 79 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ly(IntPtr stmt);
16f00 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d   /* 3.7.4+ */...
16f10 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16f20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16f30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16f40 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
16f50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
16f60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16f70 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
16f80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16f90 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c  xtern double sql
16fa0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
16fb0 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  le(IntPtr stmt, 
16fc0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e  int index);..#en
16fd0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
16fe0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16ff0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
17000 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17010 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
17020 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
17030 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
17040 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
17050 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17060 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
17070 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17080 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
17090 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49  te3_column_int(I
170a0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
170b0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
170c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
170d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
170e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
170f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17100 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17110 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17120 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
17130 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17140 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c  long sqlite3_col
17150 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  umn_int64(IntPtr
17160 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
17170 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
17180 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17190 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
171a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
171b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
171c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
171d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
171e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
171f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17200 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17210 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17220 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
17230 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
17240 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72  lumn_blob(IntPtr
17250 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
17260 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
17270 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17280 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
17290 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
172a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
172b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
172c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
172d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
172e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
172f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17300 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17310 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
17320 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28  e3_column_bytes(
17330 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
17340 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
17350 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17360 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17370 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17380 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17390 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
173a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
173b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
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 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
173e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
173f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
17400 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
17410 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 73  bytes16(IntPtr s
17420 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
17430 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17440 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17450 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
17460 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17470 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17480 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
17490 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
174a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
174b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
174c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
174d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
174e0 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  tern TypeAffinit
174f0 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  y sqlite3_column
17500 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d  _type(IntPtr stm
17510 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
17520 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17530 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17540 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17550 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17560 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17570 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17580 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17590 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
175a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
175b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
175c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
175d0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
175e0 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
175f0 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50  e_collation(IntP
17600 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
17610 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65  rName, int nType
17620 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
17630 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e   SQLiteCollation
17640 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21   func);....#if !
17650 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17660 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17670 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17680 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17690 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
176a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
176b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
176c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
176d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
176e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
176f0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
17700 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
17710 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63  e_count(IntPtr c
17720 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
17730 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17740 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17750 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17760 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17770 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17780 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17790 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
177a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
177b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
177c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
177d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
177e0 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
177f0 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29  e_blob(IntPtr p)
17800 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17810 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17820 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17830 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17840 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17850 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17860 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17870 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17880 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17890 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
178a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
178b0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
178c0 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e  3_value_bytes(In
178d0 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
178e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
178f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17900 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17910 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17920 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17930 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17940 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17950 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17960 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17970 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17980 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
17990 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
179a0 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 70 29  ytes16(IntPtr p)
179b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
179c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
179d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
179e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
179f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17a00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17a10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
17a20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17a30 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
17a40 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
17a50 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b  ouble(IntPtr p);
17a60 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
17a70 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17a80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17a90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17aa0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17ab0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17ac0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17ad0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17ae0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17af0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17b00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17b10 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
17b20 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
17b30 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  nt(IntPtr p);...
17b40 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
17b50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17b60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17b70 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
17b80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
17b90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17ba0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
17bb0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17bc0 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
17bd0 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49  e3_value_int64(I
17be0 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69  ntPtr p);..#endi
17bf0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
17c00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17c10 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17c20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17c30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17c40 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17c50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17c60 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17c70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17c80 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17c90 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17ca0 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69  xtern TypeAffini
17cb0 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ty sqlite3_value
17cc0 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70 29 3b  _type(IntPtr p);
17cd0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17ce0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17cf0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
17d00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17d10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17d20 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
17d30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17d40 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
17d50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
17d60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
17d70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17d80 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
17d90 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e  3_result_blob(In
17da0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
17db0 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
17dc0 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 70 76  nSize, IntPtr pv
17dd0 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
17de0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17df0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17e00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17e10 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17e20 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17e30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17e40 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
17e50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17e60 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
17e70 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e  result_double(In
17e80 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f  tPtr context, do
17e90 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
17ea0 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
17eb0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
17ec0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
17ed0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17ee0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
17ef0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
17f00 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
17f10 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
17f20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17f30 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
17f40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17f50 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
17f60 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
17f70 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  or(IntPtr contex
17f80 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72 72  t, byte[] strErr
17f90 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
17fa0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17fb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17fc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17fd0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
17fe0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
17ff0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18000 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
18010 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18020 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18030 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18040 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18050 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
18060 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28  sult_error_code(
18070 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
18080 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
18090 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
180a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
180b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
180c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
180d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
180e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
180f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18100 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18110 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18120 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18130 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18140 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
18150 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
18160 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74  error_toobig(Int
18170 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
18180 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18190 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
181a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
181b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
181c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
181d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
181e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
181f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18200 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
18210 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
18220 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18230 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
18240 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65  esult_error_nome
18250 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  m(IntPtr context
18260 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
18270 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18280 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18290 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
182a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
182b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
182c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
182d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
182e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
182f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18300 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18310 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
18320 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65  te3_result_value
18330 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
18340 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b 0d   IntPtr value);.
18350 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
18360 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18370 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
18380 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
18390 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
183a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
183b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
183c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
183d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
183e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
183f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18400 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
18410 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
18420 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
18430 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
18440 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
18450 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
18460 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18470 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
18480 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18490 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
184a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
184b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
184c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
184d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
184e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
184f0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
18500 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72 20 63  ult_int(IntPtr c
18510 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c 75  ontext, int valu
18520 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
18530 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18540 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
18550 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18560 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
18570 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
18580 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
18590 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
185a0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
185b0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
185c0 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f 6e  int64(IntPtr con
185d0 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65  text, long value
185e0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
185f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18600 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18610 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18620 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18630 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18640 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
18650 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
18660 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18670 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
18680 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
18690 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
186a0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
186b0 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63  lt_null(IntPtr c
186c0 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
186d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
186e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
186f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18700 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18710 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18720 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18730 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18740 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18750 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
18760 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18770 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
18780 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
18790 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e  _text(IntPtr con
187a0 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c  text, byte[] val
187b0 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e  ue, int nLen, In
187c0 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
187d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
187e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
187f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18800 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18810 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18820 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18830 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18840 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18850 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18860 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18870 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18880 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18890 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
188a0 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  ontext(IntPtr co
188b0 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74 65  ntext, int nByte
188c0 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
188d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
188e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
188f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18900 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
18910 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
18920 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
18930 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
18940 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
18950 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
18960 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
18970 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
18980 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
18990 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
189a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
189b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
189c0 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
189d0 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
189e0 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67  nt index, string
189f0 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e   value, int nlen
18a00 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
18a10 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
18a20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18a30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18a40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18a50 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
18a60 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
18a70 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
18a80 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
18a90 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
18aa0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18ab0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18ac0 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
18ad0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
18ae0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18af0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18b00 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
18b10 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74 50  ult_error16(IntP
18b20 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
18b30 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
18b40 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
18b50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18b60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
18b70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18b80 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
18b90 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
18ba0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18bb0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
18bc0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
18bd0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18be0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18bf0 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
18c00 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
18c10 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18c20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18c30 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
18c40 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50  sult_text16(IntP
18c50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
18c60 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
18c70 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
18c80 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
18c90 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c   INTEROP_CODEC |
18ca0 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44  | INTEROP_INCLUD
18cb0 45 5f 53 45 45 0d 0a 23 69 66 20 21 50 4c 41 54  E_SEE..#if !PLAT
18cc0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18cd0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
18ce0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18cf0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
18d00 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
18d10 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
18d20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
18d30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18d40 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
18d50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18d60 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
18d70 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
18d80 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62  key(IntPtr db, b
18d90 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b  yte[] key, int k
18da0 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  eylen);....#if !
18db0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
18dc0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
18dd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18de0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18df0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18e00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18e10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18e20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18e30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18e40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18e50 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
18e60 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
18e70 74 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72  te3_rekey(IntPtr
18e80 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c   db, byte[] key,
18e90 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23   int keylen);..#
18ea0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 49 4e 54  endif....#if INT
18eb0 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50  EROP_INCLUDE_ZIP
18ec0 56 46 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  VFS..#if !PLATFO
18ed0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18ee0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18ef0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18f00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18f10 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
18f20 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
18f30 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
18f40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
18f50 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18f60 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18f70 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66  xtern void zipvf
18f80 73 49 6e 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23  sInit_v2();....#
18f90 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
18fa0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
18fb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18fc0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
18fd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18fe0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18ff0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
19000 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19010 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
19020 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19030 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19040 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74 5f  void zipvfsInit_
19050 76 33 28 69 6e 74 20 72 65 67 44 66 6c 74 29 3b  v3(int regDflt);
19060 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
19070 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19080 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19090 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
190a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
190b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
190c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
190d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
190e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
190f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19100 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19110 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
19120 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65  d sqlite3_progre
19130 73 73 5f 68 61 6e 64 6c 65 72 28 49 6e 74 50 74  ss_handler(IntPt
19140 72 20 64 62 2c 20 69 6e 74 20 6f 70 73 2c 20 53  r db, int ops, S
19150 51 4c 69 74 65 50 72 6f 67 72 65 73 73 43 61 6c  QLiteProgressCal
19160 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
19170 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
19180 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
19190 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
191a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
191b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
191c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
191d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
191e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
191f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19200 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
19210 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19220 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19230 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73  IntPtr sqlite3_s
19240 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 49 6e  et_authorizer(In
19250 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 41  tPtr db, SQLiteA
19260 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63  uthorizerCallbac
19270 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
19280 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
19290 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
192a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
192b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
192c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
192d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
192e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
192f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
19300 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19310 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
19320 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
19330 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
19340 74 72 20 73 71 6c 69 74 65 33 5f 75 70 64 61 74  tr sqlite3_updat
19350 65 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  e_hook(IntPtr db
19360 2c 20 53 51 4c 69 74 65 55 70 64 61 74 65 43 61  , SQLiteUpdateCa
19370 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
19380 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
19390 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
193a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
193b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
193c0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
193d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
193e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
193f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
19400 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19410 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
19420 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
19430 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19440 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
19450 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50  commit_hook(IntP
19460 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d  tr db, SQLiteCom
19470 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  mitCallback func
19480 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
19490 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
194a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
194b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
194c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
194d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
194e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
194f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19500 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19510 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19520 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19530 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19540 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
19550 69 74 65 33 5f 74 72 61 63 65 28 49 6e 74 50 74  ite3_trace(IntPt
19560 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72 61 63  r db, SQLiteTrac
19570 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  eCallback func, 
19580 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
19590 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20  ...    // Since 
195a0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
195b0 20 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c   takes a variabl
195c0 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c  e argument list,
195d0 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72   we have to over
195e0 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e  load declaration
195f0 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c  s..    // for al
19600 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73  l possible calls
19610 20 74 68 61 74 20 77 65 20 77 61 6e 74 20 74 6f   that we want to
19620 20 75 73 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54   use...#if !PLAT
19630 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19640 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19650 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19660 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
19670 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c  sqlite3_config",
19680 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19690 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
196a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
196b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
196c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
196d0 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
196e0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29  sqlite3_config")
196f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19700 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19710 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
19720 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f  rCode sqlite3_co
19730 6e 66 69 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65  nfig_none(SQLite
19740 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70  ConfigOpsEnum op
19750 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19760 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19770 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19780 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19790 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
197a0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20  qlite3_config", 
197b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
197c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
197d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
197e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
197f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19800 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
19810 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d  qlite3_config")]
19820 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
19830 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
19840 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
19850 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e  Code sqlite3_con
19860 66 69 67 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f  fig_int(SQLiteCo
19870 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20  nfigOpsEnum op, 
19880 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  int value);....#
19890 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
198a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
198b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
198c0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
198d0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
198e0 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
198f0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19900 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19910 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19920 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19930 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
19940 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
19950 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
19960 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
19970 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
19980 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
19990 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67  lite3_config_log
199a0 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73  (SQLiteConfigOps
199b0 45 6e 75 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c  Enum op, SQLiteL
199c0 6f 67 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  ogCallback func,
199d0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
199e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
199f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19a00 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
19a10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
19a20 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
19a30 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c  ite3_db_config",
19a40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19a50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19a60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19a70 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19a80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19a90 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
19aa0 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
19ab0 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
19ac0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19ad0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
19ae0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
19af0 5f 64 62 5f 63 6f 6e 66 69 67 5f 69 6e 74 5f 72  _db_config_int_r
19b00 65 66 69 6e 74 28 49 6e 74 50 74 72 20 64 62 2c  efint(IntPtr db,
19b10 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f   SQLiteConfigDbO
19b20 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76  psEnum op, int v
19b30 61 6c 75 65 2c 20 72 65 66 20 69 6e 74 20 72 65  alue, ref int re
19b40 73 75 6c 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  sult);....#if !P
19b50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19b60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19b70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19b80 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19b90 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19ba0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19bb0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
19bc0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19bd0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
19be0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19bf0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
19c00 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61  r sqlite3_rollba
19c10 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  ck_hook(IntPtr d
19c20 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63  b, SQLiteRollbac
19c30 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  kCallback func, 
19c40 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
19c50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19c60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19c70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19c90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19ca0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19cb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19cc0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19cd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19ce0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19cf0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19d00 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
19d10 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74  e3_db_handle(Int
19d20 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
19d30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19d40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19d50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19d60 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
19d70 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19d80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19d90 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19da0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19db0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19dc0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19dd0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19de0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19df0 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73  qlite3_db_releas
19e00 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20  e_memory(IntPtr 
19e10 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
19e20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19e30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
19e40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19e50 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
19e60 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
19e70 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
19e80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
19e90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19ea0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
19eb0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19ec0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
19ed0 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
19ee0 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ame(IntPtr db, I
19ef0 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a  ntPtr dbName);..
19f00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19f10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19f20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19f30 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
19f40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
19f50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19f60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
19f70 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
19f80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19f90 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
19fa0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19fb0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 64  rn int sqlite3_d
19fc0 62 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74  b_readonly(IntPt
19fd0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e  r db, IntPtr dbN
19fe0 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
19ff0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a000 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a010 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a020 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1a030 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c   "sqlite3_db_fil
1a040 65 6e 61 6d 65 22 2c 20 43 61 6c 6c 69 6e 67 43  ename", CallingC
1a050 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1a060 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1a070 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1a080 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a090 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
1a0a0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64  int = "sqlite3_d
1a0b0 62 5f 66 69 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23  b_filename")]..#
1a0c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1a0d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a0e0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1a0f0 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 5f 62 79 74  _db_filename_byt
1a100 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  es(IntPtr db, by
1a110 74 65 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d  te[] dbName);...
1a120 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a130 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a140 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a150 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1a160 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1a170 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a180 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1a190 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a1a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1a1b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1a1c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a1d0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1a1e0 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74  _next_stmt(IntPt
1a1f0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d  r db, IntPtr stm
1a200 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1a210 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a220 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1a230 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a240 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1a250 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1a260 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a270 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1a280 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a290 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1a2a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1a2b0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1a2c0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1a2d0 65 78 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20  exec(IntPtr db, 
1a2e0 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49  byte[] strSql, I
1a2f0 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b  ntPtr pvCallback
1a300 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d  , IntPtr pvParam
1a310 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65 72 72  , ref IntPtr err
1a320 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Msg);....#if !PL
1a330 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a340 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a350 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a360 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a370 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a380 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a390 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a3a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a3b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a3c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a3d0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1a3e0 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65  lite3_release_me
1a3f0 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29  mory(int nBytes)
1a400 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1a410 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a420 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a430 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a440 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a450 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a460 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a470 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a480 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a490 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1a4a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a4b0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1a4c0 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74  3_get_autocommit
1a4d0 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
1a4e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1a4f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a500 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a510 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1a520 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1a530 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a540 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1a550 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a560 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1a570 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1a580 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1a590 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1a5a0 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
1a5b0 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49  d_result_codes(I
1a5c0 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e  ntPtr db, int on
1a5d0 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  off);....#if !PL
1a5e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a5f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a600 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a610 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a620 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a630 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a640 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a650 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a660 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a670 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a680 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1a690 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1a6a0 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72  3_errcode(IntPtr
1a6b0 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
1a6c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a6d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a6e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a6f0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a700 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a710 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a720 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a730 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a740 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1a750 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a760 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1a770 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1a780 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f  3_extended_errco
1a790 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  de(IntPtr db);..
1a7a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a7b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a7c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a7d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1a7e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1a7f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a800 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1a810 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1a820 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a830 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1a840 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1a850 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1a860 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45  3_errstr(SQLiteE
1a870 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a  rrorCode rc); /*
1a880 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20   3.7.15+ */.... 
1a890 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69     // Since sqli
1a8a0 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20  te3_log() takes 
1a8b0 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d  a variable argum
1a8c0 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76  ent list, we hav
1a8d0 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65  e to overload de
1a8e0 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20  clarations..    
1a8f0 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69  // for all possi
1a900 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20  ble calls.  For 
1a910 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79  now, we are only
1a920 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67   exposing a sing
1a930 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a  le string, and..
1a940 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e      // depend on
1a950 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66   the caller to f
1a960 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67  ormat the string
1a970 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1a980 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a990 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a9a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a9b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a9c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a9d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1a9e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1a9f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1aa00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1aa10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1aa20 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1aa30 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72  _log(SQLiteError
1aa40 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62  Code iErrCode, b
1aa50 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d  yte[] zFormat);.
1aa60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1aa70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1aa80 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1aa90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1aaa0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1aab0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1aac0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1aad0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1aae0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1aaf0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1ab00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ab10 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1ab20 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  ode sqlite3_file
1ab30 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20  _control(IntPtr 
1ab40 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61  db, byte[] zDbNa
1ab50 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50  me, int op, IntP
1ab60 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66  tr pArg);....#if
1ab70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ab80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ab90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1aba0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1abb0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1abc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1abd0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1abe0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1abf0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1ac00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1ac10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1ac20 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63  tPtr sqlite3_bac
1ac30 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20  kup_init(IntPtr 
1ac40 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a  destDb, byte[] z
1ac50 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72  DestName, IntPtr
1ac60 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b   sourceDb, byte[
1ac70 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d  ] zSourceName);.
1ac80 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ac90 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1aca0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1acb0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1acc0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1acd0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1ace0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1acf0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1ad00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1ad10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1ad20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ad30 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1ad40 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
1ad50 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62  up_step(IntPtr b
1ad60 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65  ackup, int nPage
1ad70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ad80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ad90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ada0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1adb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1adc0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1add0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ade0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1adf0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ae00 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ae10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ae20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1ae30 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e  e3_backup_remain
1ae40 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ing(IntPtr backu
1ae50 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1ae60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ae70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ae80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ae90 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1aea0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1aeb0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1aec0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1aed0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1aee0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1aef0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1af00 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1af10 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63  te3_backup_pagec
1af20 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b  ount(IntPtr back
1af30 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
1af40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1af50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1af60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1af70 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1af80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1af90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1afa0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1afb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1afc0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1afd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1afe0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1aff0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1b000 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e 74 50  _blob_close(IntP
1b010 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66  tr blob);....#if
1b020 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1b030 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b040 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b050 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1b060 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1b070 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1b080 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1b090 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1b0a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1b0b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1b0c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1b0d0 74 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 62  t sqlite3_blob_b
1b0e0 79 74 65 73 28 49 6e 74 50 74 72 20 62 6c 6f 62  ytes(IntPtr blob
1b0f0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1b100 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b110 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1b120 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1b130 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b140 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1b150 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1b160 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1b170 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b180 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1b190 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1b1a0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1b1b0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1b1c0 6c 6f 62 5f 6f 70 65 6e 28 49 6e 74 50 74 72 20  lob_open(IntPtr 
1b1d0 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
1b1e0 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
1b1f0 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d  e, byte[] colNam
1b200 65 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 2c 20 69  e, long rowId, i
1b210 6e 74 20 66 6c 61 67 73 2c 20 72 65 66 20 49 6e  nt flags, ref In
1b220 74 50 74 72 20 70 74 72 42 6c 6f 62 29 3b 0d 0a  tPtr ptrBlob);..
1b230 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b240 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b250 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b260 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1b270 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1b280 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b290 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1b2a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1b2b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1b2c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1b2d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1b2e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1b2f0 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  de sqlite3_blob_
1b300 72 65 61 64 28 49 6e 74 50 74 72 20 62 6c 6f 62  read(IntPtr blob
1b310 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d  , [MarshalAs(Unm
1b320 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72  anagedType.LPArr
1b330 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66  ay)] byte[] buff
1b340 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69  er, int count, i
1b350 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23  nt offset);....#
1b360 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b370 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b380 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b390 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1b3a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1b3b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1b3c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1b3d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b3e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1b3f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1b400 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1b410 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1b420 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 6f  sqlite3_blob_reo
1b430 70 65 6e 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c  pen(IntPtr blob,
1b440 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d   long rowId);...
1b450 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b460 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b470 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b480 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b490 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b4a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b4b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b4c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b4d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b4e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b4f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b500 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1b510 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 77  e sqlite3_blob_w
1b520 72 69 74 65 28 49 6e 74 50 74 72 20 62 6c 6f 62  rite(IntPtr blob
1b530 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d  , [MarshalAs(Unm
1b540 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72  anagedType.LPArr
1b550 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66  ay)] byte[] buff
1b560 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69  er, int count, i
1b570 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23  nt offset);....#
1b580 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b590 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b5a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b5b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1b5c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1b5d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1b5e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1b5f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b600 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1b610 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1b620 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1b630 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1b640 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f  sqlite3_declare_
1b650 76 74 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20  vtab(IntPtr db, 
1b660 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d  IntPtr zSQL);...
1b670 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b680 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b690 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b6a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b6b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b6c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b6d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b6e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b6f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b700 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b710 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b720 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1b730 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20  _mprintf(IntPtr 
1b740 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73  format, __arglis
1b750 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  t);..    #endreg
1b760 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51  ion....    // SQ
1b770 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20 74  Lite API calls t
1b780 68 61 74 20 61 72 65 20 70 72 6f 76 69 64 65 64  hat are provided
1b790 20 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22   by "well-known"
1b7a0 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61 74   extensions that
1b7b0 20 6d 61 79 20 62 65 20 73 74 61 74 69 63 61 6c   may be statical
1b7c0 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65  ly..    // linke
1b7d0 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74  d with the SQLit
1b7e0 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c 69  e core native li
1b7f0 62 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79 20  brary currently 
1b800 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72 65  in use...    #re
1b810 67 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73  gion extension s
1b820 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d  qlite api calls.
1b830 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
1b840 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20  TUAL_TABLE..#if 
1b850 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b860 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b870 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b880 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1b890 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1b8a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1b8b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1b8c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b8d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1b8e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1b8f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1b900 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
1b910 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
1b920 64 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  dule(IntPtr db, 
1b930 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66  IntPtr name, ref
1b940 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
1b950 6d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70  module, IntPtr p
1b960 43 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73  ClientData, xDes
1b970 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
1b980 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  roy);....#if !PL
1b990 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b9a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1b9b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b9c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1b9d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1b9e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b9f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1ba00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ba10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1ba20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ba30 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1ba40 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d  qlite3_dispose_m
1ba50 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f  odule(IntPtr pMo
1ba60 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  dule);..#endif..
1ba70 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1ba80 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bad0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
1bae0 20 73 71 6c 69 74 65 20 69 6e 74 65 72 6f 70 20   sqlite interop 
1baf0 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20  api calls (.NET 
1bb00 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
1bb10 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41  k only)..#if PLA
1bb20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1bb30 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54  MEWORK && !SQLIT
1bb40 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
1bb50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1bb60 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1bb70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1bb80 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1bb90 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
1bba0 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
1bbb0 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72  r db, ref long r
1bbc0 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  owId);....    [D
1bbd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bbe0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1bbf0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1bc00 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d  n void sqlite3_m
1bc10 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65 72  emory_used_inter
1bc20 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62 79 74 65  op(ref long byte
1bc30 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  s);....    [DllI
1bc40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bc50 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1bc60 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1bc70 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  oid sqlite3_memo
1bc80 72 79 5f 68 69 67 68 77 61 74 65 72 5f 69 6e 74  ry_highwater_int
1bc90 65 72 6f 70 28 69 6e 74 20 72 65 73 65 74 46 6c  erop(int resetFl
1bca0 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79 74  ag, ref long byt
1bcb0 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  es);....    [Dll
1bcc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1bcd0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1bce0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1bcf0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1bd00 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
1bd10 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
1bd20 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1bd30 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76  ex, ref double v
1bd40 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
1bd50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bd60 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1bd70 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1bd80 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1bd90 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
1bda0 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
1bdb0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1bdc0 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61  dex, ref long va
1bdd0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
1bde0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1bdf0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1be00 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
1be10 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d  nt64_interop")].
1be20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1be30 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1be40 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1be50 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f  te3_bind_uint64_
1be60 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1be70 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1be80 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29  ref ulong value)
1be90 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1bea0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1beb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1bec0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1bed0 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  d sqlite3_column
1bee0 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
1bef0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1bf00 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62   index, ref doub
1bf10 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  le value);....  
1bf20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1bf30 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1bf40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1bf50 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1bf60 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f  e3_column_int64_
1bf70 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1bf80 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1bf90 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ref long value);
1bfa0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1bfb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1bfc0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1bfd0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1bfe0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
1bff0 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
1c000 74 50 74 72 20 70 2c 20 72 65 66 20 64 6f 75 62  tPtr p, ref doub
1c010 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  le value);....  
1c020 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c030 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1c040 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c050 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1c060 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69  e3_value_int64_i
1c070 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
1c080 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65   ref Int64 value
1c090 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1c0a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c0b0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1c0c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1c0d0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1c0e0 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  t_double_interop
1c0f0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1c100 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
1c110 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
1c120 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c130 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1c140 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
1c150 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
1c160 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  lt_int64_interop
1c170 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1c180 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65   ref Int64 value
1c190 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1c1a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c1b0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1c1c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1c1d0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65  tPtr sqlite3_cre
1c1e0 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
1c1f0 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a  odule_interop(..
1c200 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64          IntPtr d
1c210 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20  b, IntPtr name, 
1c220 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20  IntPtr pModule, 
1c230 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20 78 43  int iVersion, xC
1c240 72 65 61 74 65 20 78 43 72 65 61 74 65 2c 0d 0a  reate xCreate,..
1c250 20 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74          xConnect
1c260 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74   xConnect, xBest
1c270 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78  Index xBestIndex
1c280 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44  , xDisconnect xD
1c290 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20  isconnect,..    
1c2a0 20 20 20 20 78 44 65 73 74 72 6f 79 20 78 44 65      xDestroy xDe
1c2b0 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70  stroy, xOpen xOp
1c2c0 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73  en, xClose xClos
1c2d0 65 2c 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74  e, xFilter xFilt
1c2e0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e 65  er,..        xNe
1c2f0 78 74 20 78 4e 65 78 74 2c 20 78 45 6f 66 20 78  xt xNext, xEof x
1c300 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f  Eof, xColumn xCo
1c310 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f  lumn, xRowId xRo
1c320 77 49 64 2c 20 78 55 70 64 61 74 65 20 78 55 70  wId, xUpdate xUp
1c330 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78  date,..        x
1c340 42 65 67 69 6e 20 78 42 65 67 69 6e 2c 20 78 53  Begin xBegin, xS
1c350 79 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d  ync xSync, xComm
1c360 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c  it xCommit, xRol
1c370 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c  lback xRollback,
1c380 0d 0a 20 20 20 20 20 20 20 20 78 46 69 6e 64 46  ..        xFindF
1c390 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e  unction xFindFun
1c3a0 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78  ction, xRename x
1c3b0 52 65 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f 69  Rename, xSavepoi
1c3c0 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a  nt xSavepoint,..
1c3d0 20 20 20 20 20 20 20 20 78 52 65 6c 65 61 73 65          xRelease
1c3e0 20 78 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c   xRelease, xRoll
1c3f0 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b  backTo xRollback
1c400 54 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65  To, IntPtr pClie
1c410 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20  ntData,..       
1c420 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20   xDestroyModule 
1c430 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b  xDestroyModule);
1c440 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
1c450 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1c460 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53  TFRAMEWORK && !S
1c470 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1c480 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1c490 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1c4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4e0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
1c4f0 20 4e 61 74 69 76 65 20 44 65 6c 65 67 61 74 65   Native Delegate
1c500 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56  s..#if INTEROP_V
1c510 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69  IRTUAL_TABLE..#i
1c520 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c530 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c540 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1c550 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1c560 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c570 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1c580 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1c590 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1c5a0 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20  de xCreate(..   
1c5b0 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c       IntPtr pDb,
1c5c0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1c5d0 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20   pAux,..        
1c5e0 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
1c5f0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
1c600 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
1c610 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
1c620 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
1c630 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  Error..    );...
1c640 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c690 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c6a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c6b0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1c6c0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1c6d0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1c6e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1c6f0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1c700 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1c710 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63  rrorCode xConnec
1c720 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
1c730 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
1c740 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20   IntPtr pAux,.. 
1c750 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
1c760 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1c770 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
1c780 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
1c790 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
1c7a0 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20  ntPtr pError..  
1c7b0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c800 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1c810 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c820 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c830 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1c840 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1c850 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c860 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c870 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1c880 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1c890 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20  xBestIndex(..   
1c8a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1c8b0 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
1c8c0 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29  tr pIndex..    )
1c8d0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1c8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c920 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1c930 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c940 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1c950 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1c960 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1c970 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1c980 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1c990 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1c9a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69  iteErrorCode xDi
1c9b0 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
1c9c0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
1c9d0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1c9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1ca30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ca40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ca50 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1ca60 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1ca70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ca80 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1ca90 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1caa0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1cab0 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20  de xDestroy(..  
1cac0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1cad0 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
1cae0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1caf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1cb30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1cb40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1cb50 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1cb60 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1cb70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cb80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1cb90 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1cba0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1cbb0 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20  rCode xOpen(..  
1cbc0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1cbd0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ab,..        ref
1cbe0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
1cbf0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1cc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1cc50 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1cc60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1cc70 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1cc80 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1cc90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1cca0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1ccb0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1ccc0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1ccd0 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20  de xClose(..    
1cce0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
1ccf0 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
1cd00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1cd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1cd50 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1cd60 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1cd70 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1cd80 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1cd90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cda0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1cdb0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1cdc0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1cdd0 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a  rCode xFilter(..
1cde0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1cdf0 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
1ce00 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20   int idxNum,..  
1ce10 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78        IntPtr idx
1ce20 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  Str,..        in
1ce30 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
1ce40 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20   IntPtr argv..  
1ce50 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cea0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1ceb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1cec0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ced0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1cee0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1cef0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1cf00 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1cf10 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1cf20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1cf30 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
1cf40 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
1cf50 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
1cf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1cfb0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1cfc0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1cfd0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
1cfe0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
1cff0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d000 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
1d010 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
1d020 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20  e int xEof(..   
1d030 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
1d040 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
1d050 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1d060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d0a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d0b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d0c0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1d0d0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1d0e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d0f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1d100 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1d110 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1d120 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d  orCode xColumn(.
1d130 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1d140 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
1d150 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78    IntPtr pContex
1d160 74 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  t,..        int 
1d170 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d  index..    );...
1d180 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1d190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d1e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d1f0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1d200 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1d210 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1d220 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1d230 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1d240 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1d250 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28  rrorCode xRowId(
1d260 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1d270 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
1d280 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
1d290 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  d..    );....   
1d2a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1d2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a  ////////////....
1d2f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d300 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d310 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1d320 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1d330 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1d340 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1d350 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
1d360 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
1d370 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20  Code xUpdate(.. 
1d380 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1d390 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
1d3a0 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
1d3b0 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
1d3c0 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
1d3d0 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d  rowId..    );...
1d3e0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1d3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d430 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d440 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d450 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1d460 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1d470 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1d480 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1d490 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1d4a0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1d4b0 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28  rrorCode xBegin(
1d4c0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1d4d0 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
1d4e0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1d4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d530 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1d540 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d550 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1d560 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1d570 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1d580 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d590 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1d5a0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1d5b0 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28  ErrorCode xSync(
1d5c0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1d5d0 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
1d5e0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1d5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d630 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1d640 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d650 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1d660 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1d670 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1d680 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d690 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1d6a0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1d6b0 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69  ErrorCode xCommi
1d6c0 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
1d6d0 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
1d6e0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1d6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d730 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
1d740 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d750 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
1d760 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
1d770 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
1d780 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1d790 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
1d7a0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
1d7b0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c  teErrorCode xRol
1d7c0 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
1d7d0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
1d7e0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1d7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d830 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1d840 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d850 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d860 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1d870 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1d880 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d890 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1d8a0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1d8b0 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  int xFindFunctio
1d8c0 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
1d8d0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1d8e0 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20     int nArg,..  
1d8f0 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61        IntPtr zNa
1d900 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  me,..        ref
1d910 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
1d920 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  callback,..     
1d930 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 55     ref IntPtr pU
1d940 73 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d  serData..    );.
1d950 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1d960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9a0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1d9b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d9c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1d9d0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1d9e0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1d9f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1da00 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1da10 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
1da20 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61  eErrorCode xRena
1da30 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  me(..        Int
1da40 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
1da50 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d      IntPtr zNew.
1da60 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f  ////////////////
1da90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1daa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1dac0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1dad0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1dae0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1daf0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1db00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1db10 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1db20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1db30 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1db40 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  de xSavepoint(..
1db50 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1db60 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
1db70 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
1db80 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1db90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbd0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1dbe0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1dbf0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1dc00 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1dc10 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1dc20 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1dc30 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1dc40 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1dc50 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1dc60 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20   xRelease(..    
1dc70 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1dc80 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
1dc90 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29  Savepoint..    )
1dca0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1dcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dcf0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1dd00 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1dd10 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1dd20 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1dd30 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1dd40 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1dd50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1dd60 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1dd70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
1dd80 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
1dd90 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1dda0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
1ddb0 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
1ddc0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1ddd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de10 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
1de20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1de30 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
1de40 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
1de50 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
1de60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1de70 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
1de80 69 63 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64  ic delegate void
1de90 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28   xDestroyModule(
1dea0 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
1deb0 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ta);..#endif..  
1dec0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1ded0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1dee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1def0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1df20 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e  ...    #region N
1df30 61 74 69 76 65 20 53 74 72 75 63 74 75 72 65 73  ative Structures
1df40 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
1df50 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20  RTUAL_TABLE..   
1df60 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
1df70 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
1df80 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
1df90 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
1dfa0 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
1dfb0 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
1dfc0 63 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d  c int iVersion;.
1dfd0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1dfe0 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65 3b  xCreate xCreate;
1dff0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1e000 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65   xConnect xConne
1e010 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ct;..        pub
1e020 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78 20 78  lic xBestIndex x
1e030 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20  BestIndex;..    
1e040 20 20 20 20 70 75 62 6c 69 63 20 78 44 69 73 63      public xDisc
1e050 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65  onnect xDisconne
1e060 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ct;..        pub
1e070 6c 69 63 20 78 44 65 73 74 72 6f 79 20 78 44 65  lic xDestroy xDe
1e080 73 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20  stroy;..        
1e090 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70  public xOpen xOp
1e0a0 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  en;..        pub
1e0b0 6c 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73  lic xClose xClos
1e0c0 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
1e0d0 69 63 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74  ic xFilter xFilt
1e0e0 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  er;..        pub
1e0f0 6c 69 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b  lic xNext xNext;
1e100 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1e110 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20   xEof xEof;..   
1e120 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6c       public xCol
1e130 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  umn xColumn;..  
1e140 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f        public xRo
1e150 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20  wId xRowId;..   
1e160 20 20 20 20 20 70 75 62 6c 69 63 20 78 55 70 64       public xUpd
1e170 61 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20  ate xUpdate;..  
1e180 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65        public xBe
1e190 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20  gin xBegin;..   
1e1a0 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 79 6e       public xSyn
1e1b0 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20  c xSync;..      
1e1c0 20 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74    public xCommit
1e1d0 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20   xCommit;..     
1e1e0 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62     public xRollb
1e1f0 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a  ack xRollback;..
1e200 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1e210 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69  FindFunction xFi
1e220 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20  ndFunction;..   
1e230 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6e       public xRen
1e240 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20  ame xRename;..  
1e250 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d 65 74        /* The met
1e260 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 69  hods above are i
1e270 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66 20 74  n version 1 of t
1e280 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  he sqlite3_modul
1e290 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20 6f 62  e..         * ob
1e2a0 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62 65 6c  ject.  Those bel
1e2b0 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72 73 69  ow are for versi
1e2c0 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74 65 72  on 2 and greater
1e2d0 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  . */..        pu
1e2e0 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74 20  blic xSavepoint 
1e2f0 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20  xSavepoint;..   
1e300 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6c       public xRel
1e310 65 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a  ease xRelease;..
1e320 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1e330 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c  RollbackTo xRoll
1e340 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a  backTo;..    }..
1e350 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1e360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e3a0 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
1e3b0 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
1e3c0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
1e3d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
1e3e0 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62  uct sqlite3_vtab
1e3f0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1e400 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70   public IntPtr p
1e410 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
1e420 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 52 65 66   public int nRef
1e430 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55  ; /* NO LONGER U
1e440 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
1e450 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45  public IntPtr zE
1e460 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  rrMsg;..    }...
1e470 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1e480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4c0 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
1e4d0 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
1e4e0 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
1e4f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
1e500 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  ct sqlite3_vtab_
1e510 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20  cursor..    {.. 
1e520 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1e530 74 50 74 72 20 70 56 54 61 62 3b 0d 0a 20 20 20  tPtr pVTab;..   
1e540 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
1e550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e590 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
1e5a0 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
1e5b0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
1e5c0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1e5d0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
1e5e0 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
1e5f0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1e600 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f   public sqlite3_
1e610 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
1e620 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1e630 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
1e640 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d  aint constraint.
1e650 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
1e660 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
1e670 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
1e680 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1e690 28 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e  (constraint != n
1e6a0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1e6b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e6c0 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63       iColumn = c
1e6d0 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d  onstraint.iColum
1e6e0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
1e6f0 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61      op = constra
1e700 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20  int.op;..       
1e710 20 20 20 20 20 20 20 20 20 75 73 61 62 6c 65 20           usable 
1e720 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61  = constraint.usa
1e730 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ble;..          
1e740 20 20 20 20 20 20 69 54 65 72 6d 4f 66 66 73 65        iTermOffse
1e750 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69  t = constraint.i
1e760 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20  TermOffset;..   
1e770 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1e780 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1e790 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1e7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1e7e0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
1e7f0 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
1e800 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
1e810 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20  dexConstraintOp 
1e820 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  op;..        pub
1e830 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b  lic byte usable;
1e840 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1e850 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74   int iTermOffset
1e860 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1e8c0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
1e8d0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
1e8e0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
1e8f0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
1e900 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
1e910 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  rby..    {..    
1e920 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74      public sqlit
1e930 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
1e940 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1e950 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
1e960 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20  y orderBy..     
1e970 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1e980 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
1e990 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e9a0 20 20 20 20 20 20 20 69 66 20 28 6f 72 64 65 72         if (order
1e9b0 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  By != null)..   
1e9c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1e9d0 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c              iCol
1e9e0 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69 43  umn = orderBy.iC
1e9f0 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
1ea00 20 20 20 20 20 20 20 20 64 65 73 63 20 3d 20 6f          desc = o
1ea10 72 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20  rderBy.desc;..  
1ea20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1ea30 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1ea40 20 20 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 2f 2f 2f 2f 2f  ////////////////
1ea70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ea90 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1eaa0 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75  iColumn; /* Colu
1eab0 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20  mn number */..  
1eac0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
1ead0 65 20 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75  e desc;   /* Tru
1eae0 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c  e for DESC.  Fal
1eaf0 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a  se for ASC. */..
1eb00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
1eb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1eb60 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
1eb70 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
1eb80 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
1eb90 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
1eba0 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
1ebb0 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b  int_usage..    {
1ebc0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1ebd0 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
1ebe0 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28  onstraint_usage(
1ebf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1ec00 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
1ec10 69 6e 74 55 73 61 67 65 20 63 6f 6e 73 74 72 61  intUsage constra
1ec20 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20  intUsage..      
1ec30 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1ec40 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
1ec50 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1ec60 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72        if (constr
1ec70 61 69 6e 74 55 73 61 67 65 20 21 3d 20 6e 75 6c  aintUsage != nul
1ec80 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1ec90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1eca0 20 20 20 61 72 67 76 49 6e 64 65 78 20 3d 20 63     argvIndex = c
1ecb0 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61  onstraintUsage.a
1ecc0 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  rgvIndex;..     
1ecd0 20 20 20 20 20 20 20 20 20 20 20 6f 6d 69 74 20             omit 
1ece0 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  = constraintUsag
1ecf0 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20  e.omit;..       
1ed00 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ed10 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ed20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed60 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1ed70 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49  public int argvI
1ed80 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20  ndex; /* if >0, 
1ed90 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61  constraint is pa
1eda0 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46  rt of argv to xF
1edb0 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20  ilter */..      
1edc0 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d    public byte om
1edd0 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f  it;     /* Do no
1ede0 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f  t code a test fo
1edf0 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e  r this constrain
1ee00 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  t */..    }.... 
1ee10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
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 0d 0a  //////////////..
1ee60 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
1ee70 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
1ee80 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
1ee90 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
1eea0 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
1eeb0 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  nfo..    {..    
1eec0 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f      /* Inputs */
1eed0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1eee0 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74   int nConstraint
1eef0 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65  ; /* Number of e
1ef00 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74  ntries in aConst
1ef10 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20  raint */..      
1ef20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
1ef30 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20  aConstraint;..  
1ef40 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1ef50 20 6e 4f 72 64 65 72 42 79 3b 20 20 20 20 2f 2a   nOrderBy;    /*
1ef60 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69   Number of entri
1ef70 65 73 20 69 6e 20 61 4f 72 64 65 72 42 79 20 2a  es in aOrderBy *
1ef80 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1ef90 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42  c IntPtr aOrderB
1efa0 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f  y;..        /* O
1efb0 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  utputs */..     
1efc0 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
1efd0 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   aConstraintUsag
1efe0 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
1eff0 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20  ic int idxNum;  
1f000 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62           /* Numb
1f010 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74  er used to ident
1f020 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f  ify the index */
1f030 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f040 20 73 74 72 69 6e 67 20 69 64 78 53 74 72 3b 20   string idxStr; 
1f050 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e 67         /* String
1f060 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61 69  , possibly obtai
1f070 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  ned from sqlite3
1f080 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20  _malloc */..    
1f090 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e      public int n
1f0a0 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b  eedToFreeIdxStr;
1f0b0 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72 20   /* Free idxStr 
1f0c0 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72  using sqlite3_fr
1f0d0 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0d  ee() if true */.
1f0e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1f0f0 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75  int orderByConsu
1f100 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20 69 66  med;  /* True if
1f110 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65 61   output is alrea
1f120 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20  dy ordered */.. 
1f130 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f         public do
1f140 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43 6f  uble estimatedCo
1f150 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65 64  st; /* Estimated
1f160 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74   cost of using t
1f170 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20  his index */..  
1f180 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e        public lon
1f190 67 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b  g estimatedRows;
1f1a0 20 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20     /* Estimated 
1f1b0 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72  number of rows r
1f1c0 65 74 75 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20  eturned */..    
1f1d0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
1f1e0 65 49 6e 64 65 78 46 6c 61 67 73 20 69 64 78 46  eIndexFlags idxF
1f1f0 6c 61 67 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66  lags; /* Mask of
1f200 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43   SQLITE_INDEX_SC
1f210 41 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20  AN_* flags */.. 
1f220 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f         public lo
1f230 6e 67 20 63 6f 6c 55 73 65 64 3b 20 20 20 20 20  ng colUsed;     
1f240 20 20 20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61      /* Input: Ma
1f250 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73  sk of columns us
1f260 65 64 20 62 79 20 73 74 61 74 65 6d 65 6e 74 20  ed by statement 
1f270 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69  */..    }..#endi
1f280 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
1f290 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65  n..  }..  #endre
1f2a0 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  gion....  //////
1f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65  ///////....  #re
1f300 67 69 6f 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63  gion .NET Compac
1f310 74 20 46 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c  t Framework (onl
1f320 79 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  y) CriticalHandl
1f330 65 20 43 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41  e Class..#if PLA
1f340 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1f350 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e  MEWORK..  intern
1f360 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73  al abstract clas
1f370 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  s CriticalHandle
1f380 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a   : IDisposable..
1f390 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65    {..    private
1f3a0 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b   bool _isClosed;
1f3b0 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
1f3c0 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a  IntPtr handle;..
1f3d0 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
1f3e0 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49  CriticalHandle(I
1f3f0 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e  ntPtr invalidHan
1f400 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b  dleValue)..    {
1f410 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
1f420 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
1f430 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43  lue;..      _isC
1f440 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a  losed = false;..
1f450 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72      }....    ~Cr
1f460 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a  iticalHandle()..
1f470 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
1f480 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
1f490 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
1f4a0 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28  te void Cleanup(
1f4b0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
1f4c0 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a  if (!IsClosed)..
1f4d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1f4e0 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20   this._isClosed 
1f4f0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
1f500 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29   if (!IsInvalid)
1f510 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1f520 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61         ReleaseHa
1f530 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  ndle();..       
1f540 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
1f550 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20  nalize(this);.. 
1f560 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1f570 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
1f580 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73  public void Clos
1f590 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
1f5a0 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
1f5b0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
1f5c0 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
1f5d0 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  se()..    {..   
1f5e0 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
1f5f0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1f600 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
1f610 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62  l void Dispose(b
1f620 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a  ool disposing)..
1f630 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65      {..      Cle
1f640 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a  anup();..    }..
1f650 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
1f660 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65  abstract bool Re
1f670 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a  leaseHandle();..
1f680 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
1f690 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49  void SetHandle(I
1f6a0 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20  ntPtr value)..  
1f6b0 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c    {..      handl
1f6c0 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  e = value;..    
1f6d0 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
1f6e0 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73  void SetHandleAs
1f6f0 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b  Invalid()..    {
1f700 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65  ..      _isClose
1f710 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
1f720 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
1f730 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
1f740 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
1f750 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a   bool IsClosed..
1f760 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
1f770 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f   { return _isClo
1f780 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d  sed; }..    }...
1f790 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74  .    public abst
1f7a0 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ract bool IsInva
1f7b0 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  lid..    {..    
1f7c0 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d    get;..    }...
1f7d0 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  .  }..#endif..  
1f7e0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1f7f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1f800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f840 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
1f850 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
1f860 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
1f870 2f 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75 6e  / Handles the un
1f880 6d 61 6e 61 67 65 64 20 64 61 74 61 62 61 73 65  managed database
1f890 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70 72   pointer, and pr
1f8a0 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
1f8b0 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70  ion..    // supp
1f8c0 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20  ort for it...   
1f8d0 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
1f8e0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e   class SQLiteCon
1f8f0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20  nectionHandle : 
1f900 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
1f910 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54      {..#if SQLIT
1f920 45 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21 50  E_STANDARD && !P
1f930 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f940 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1f950 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67    internal deleg
1f960 61 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f  ate void CloseCo
1f970 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b  nnectionCallback
1f980 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1f990 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1f9a0 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74  andle hdl, IntPt
1f9b0 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  r db);....      
1f9c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1f9d0 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  c CloseConnectio
1f9e0 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43  nCallback closeC
1f9f0 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20  onnection =..   
1fa00 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
1fa10 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
1fa20 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ion;..#endif....
1fa30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1fa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1fa80 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
1fa90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1faa0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
1fab0 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
1fac0 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
1fad0 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
1fae0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
1faf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1fb40 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f    private bool o
1fb50 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20  wnHandle;....   
1fb60 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1fb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1fbb0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1fbc0 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
1fbd0 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
1fbe0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1fbf0 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20 20  andle db)..     
1fc00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1fc10 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c    if (db != null
1fc20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1fc30 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1fc40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1fc50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fc60 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f   lock (db.syncRo
1fc70 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1fc80 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1fc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fca0 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68 61      return db.ha
1fcb0 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
1fcc0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1fcd0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1fce0 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
1fcf0 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
1fd00 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1fd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd50 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1fd60 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
1fd70 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1fd80 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f  e(IntPtr db, boo
1fd90 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20  l ownHandle)..  
1fda0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
1fdb0 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20  (ownHandle)..   
1fdc0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1fdd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1fde0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1fdf0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1fe00 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1fe10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1fe20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1fe30 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48  ownHandle = ownH
1fe40 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
1fe50 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
1fe60 65 28 64 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  e(db);..        
1fe70 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
1fe80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1fe90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1feb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fed0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1fee0 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
1fef0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f  nectionHandle(bo
1ff00 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  ol ownHandle).. 
1ff10 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
1ff20 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
1ff30 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
1ff40 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
1ff50 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 77 6e           if (own
1ff60 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
1ff70 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
1ff80 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72  cked.Increment(r
1ff90 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e  ef DebugData.con
1ffa0 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
1ffb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1ffc0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ffd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20010 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
20020 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
20030 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
20040 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
20050 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
20060 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20070 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
20080 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
20090 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
200a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
200b0 20 20 20 20 20 20 20 69 66 20 28 21 6f 77 6e 48         if (!ownH
200c0 61 6e 64 6c 65 29 20 72 65 74 75 72 6e 20 74 72  andle) return tr
200d0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
200e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
200f0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
20100 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
20110 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20120 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
20130 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
20140 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
20150 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
20160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20170 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
20180 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
20190 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
201a0 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20  ANDARD..        
201b0 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
201c0 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
201d0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
201e0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f               clo
201f0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
20200 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  s, localHandle);
20210 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
20220 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
20230 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
20240 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
20250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
20260 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f  LiteBase.CloseCo
20270 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c  nnection(this, l
20280 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65  ocalHandle);..#e
20290 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  ndif....#if !NET
202a0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
202b0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
202c0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
202d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
202e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
202f0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
20300 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
20310 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
20320 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
20330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
20340 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
20350 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
20360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20370 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74     "CloseConnect
20380 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c  ion: {0}", local
20390 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72  Handle)); /* thr
203a0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
203b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
203c0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
203d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
203e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
203f0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
20400 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
20410 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
20420 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
20430 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
20450 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
20460 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
20470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
20480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20490 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
204a0 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
204b0 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c 65  ion(this, handle
204c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
204d0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
204e0 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
204f0 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
20500 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
20510 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
20520 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
20530 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
20540 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
20550 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
20560 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e  ef DebugData.con
20570 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
20580 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
20590 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
205a0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
205b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
205c0 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
205d0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
205e0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
205f0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
20600 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
20610 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
20620 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
20630 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
20640 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
20650 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
20660 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
20670 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
20680 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
20690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
206a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
206b0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
206c0 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
206d0 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
206e0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
206f0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
20700 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
20710 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
20720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20730 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69    "CloseConnecti
20740 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  on: {0}, excepti
20750 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
20760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20770 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
20780 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
20790 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
207a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207b0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
207c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
207d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
207e0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
207f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
20800 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
20810 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
20820 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20830 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
20840 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
20850 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
20860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20870 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20880 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
20890 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
208a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
208b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
208c0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
208d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
208e0 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
208f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
20900 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
20910 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
20920 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
20930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
20970 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
20980 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
20990 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
209a0 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
209b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
209c0 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
209d0 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
209e0 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f  ugData.connectio
209f0 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20  nCount);..      
20a00 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
20a10 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
20a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
20a60 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
20a70 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d   bool OwnHandle.
20a80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
20a90 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
20aa0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
20ab0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
20ac0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
20ad0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
20ae0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
20af0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
20b00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
20b10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
20b20 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20  n ownHandle;..  
20b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
20b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
20b50 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
20b60 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
20b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
20bb0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
20bc0 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
20bd0 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
20be0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
20bf0 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
20c00 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
20c10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20c30 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
20c40 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
20c50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
20c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c70 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
20c80 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
20c90 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20ca0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
20cb0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
20cc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
20cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d10 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
20d20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
20d30 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
20d40 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
20d50 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
20d60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20d70 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
20d80 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
20d90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
20da0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
20db0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
20dc0 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
20dd0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
20de0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
20df0 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
20e00 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
20e10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
20e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
20e60 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
20e70 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
20e80 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
20e90 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
20ea0 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
20eb0 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
20ec0 4c 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73 2e  Lite statements.
20ed0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20ee0 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
20ef0 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
20f00 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
20f10 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50  le..    {..#if P
20f20 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20f30 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
20f40 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f    internal reado
20f50 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  nly object syncR
20f60 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
20f70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ();..#endif.... 
20f80 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
20fd0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
20fe0 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
20ff0 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d  onHandle cnn;...
21000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
21010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21050 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
21060 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
21070 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
21080 74 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  tr(SQLiteStateme
21090 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a  ntHandle stmt)..
210a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
210b0 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74 20         if (stmt 
210c0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
210d0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
210e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
210f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
21100 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
21110 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  mt.syncRoot)..#e
21120 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
21130 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
21140 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
21150 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b  urn stmt.handle;
21160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21170 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
21180 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
21190 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
211a0 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
211b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
211c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21200 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
21210 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74  ernal SQLiteStat
21220 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69  ementHandle(SQLi
21230 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
21240 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73  le cnn, IntPtr s
21250 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tmt)..          
21260 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
21270 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
21280 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21290 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
212a0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
212b0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
212c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
212d0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
212e0 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20  nn = cnn;..     
212f0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
21300 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20  ndle(stmt);..   
21310 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
21320 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
21330 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21370 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
21380 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
21390 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
213a0 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
213b0 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
213c0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
213d0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
213e0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
213f0 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
21400 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
21410 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ta.statementCoun
21420 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  t);..#endif..   
21430 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
21440 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
21450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21480 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
21490 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f       protected o
214a0 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c  verride bool Rel
214b0 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20  easeHandle()..  
214c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
214d0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
214e0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
214f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21500 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
21510 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
21520 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e  localHandle = In
21530 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e  terlocked.Exchan
21540 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
21550 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e           ref han
21560 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  dle, IntPtr.Zero
21570 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
21580 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
21590 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
215a0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
215b0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
215c0 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74  eBase.FinalizeSt
215d0 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63  atement(cnn, loc
215e0 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
215f0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
21600 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
21610 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
21620 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
21630 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
21640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
21650 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
21660 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
21670 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
21680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21690 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
216a0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
216b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
216c0 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69           "Finali
216d0 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d  zeStatement: {0}
216e0 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
216f0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
21700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
21710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21720 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
21730 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
21740 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
21750 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
21760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
21770 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
21780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
21790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
217a0 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
217b0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
217c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
217d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
217e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217f0 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61   SQLiteBase.Fina
21800 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e  lizeStatement(cn
21810 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  n, handle);..   
21820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21830 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
21840 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
21850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21860 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
21870 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
21880 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
21890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
218a0 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
218b0 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
218c0 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43  gData.statementC
218d0 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
218e0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
218f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
21900 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
21910 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
21920 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
21930 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
21940 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
21950 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
21960 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
21970 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
21980 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
21990 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
219a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
219b0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
219c0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
219d0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
219e0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
219f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
21a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a10 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
21a20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
21a30 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
21a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a50 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
21a60 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
21a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21a80 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c            "Final
21a90 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30  izeStatement: {0
21aa0 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31  }, exception: {1
21ab0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
21ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e               han
21ad0 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  dle, e)); /* thr
21ae0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
21af0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
21b00 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
21b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21b20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
21b30 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
21b40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
21b50 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
21b60 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
21b70 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
21b80 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21ba0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
21bb0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
21bc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
21bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21be0 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61   SetHandleAsInva
21bf0 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  lid();..        
21c00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
21c10 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45         }..#if DE
21c20 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
21c30 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
21c40 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
21c50 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
21c60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
21c70 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
21c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55  /////....#if COU
21cd0 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
21ce0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61     public int Wa
21cf0 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20  sReleasedOk().. 
21d00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21d10 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
21d20 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
21d30 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
21d40 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
21d50 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
21d60 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
21d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21db0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
21dc0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
21dd0 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
21de0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
21df0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
21e00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
21e10 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
21e20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21e30 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
21e40 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
21e50 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
21e60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
21e70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
21e80 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
21e90 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
21ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
21eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
21ec0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
21ed0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
21ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21f20 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
21f30 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
21f40 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
21f50 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
21f60 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
21f70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21f80 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
21f90 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
21fa0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
21fb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
21fc0 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
21fd0 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
21fe0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
21ff0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
22000 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
22010 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
22020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22040 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
22070 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
22080 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73  ackupHandle Clas
22090 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
220a0 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
220b0 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
220c0 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 61 63  naged SQLite bac
220d0 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20  kup objects...  
220e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
220f0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61  d class SQLiteBa
22100 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69  ckupHandle : Cri
22110 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
22120 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
22130 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22140 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
22150 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
22160 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
22170 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
22180 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
22190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
221e0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
221f0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
22200 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  e cnn;....      
22210 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
22220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22250 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22260 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
22270 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
22280 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
22290 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62  teBackupHandle b
222a0 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20  ackup)..        
222b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
222c0 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c  f (backup != nul
222d0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
222e0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
222f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22310 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73    lock (backup.s
22320 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
22330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22340 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
22350 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
22360 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a  backup.handle;..
22370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22380 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
22390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
223a0 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
223b0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
223c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
223d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
223e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
223f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
22410 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
22420 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70  nal SQLiteBackup
22430 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
22440 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
22450 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70  n, IntPtr backup
22460 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
22470 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
22480 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
22490 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
224a0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
224b0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
224c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
224d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
224e0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
224f0 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
22500 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
22510 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20  e(backup);..    
22520 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
22530 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
22540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22580 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
22590 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
225a0 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d  eBackupHandle().
225b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
225c0 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
225d0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
225e0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
225f0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
22600 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
22610 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62  (ref DebugData.b
22620 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65  ackupCount);..#e
22630 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
22640 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
22650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22690 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
226a0 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
226b0 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
226c0 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
226d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
226e0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
226f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22700 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22720 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
22730 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
22740 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
22750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22760 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
22770 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
22780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
22790 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
227a0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
227b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227c0 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
227d0 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c  inishBackup(cnn,
227e0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
227f0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
22800 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
22810 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
22820 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
22830 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
22840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22850 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
22860 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
22870 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
22880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22890 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
228a0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
228b0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
228c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
228d0 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22  nishBackup: {0}"
228e0 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
228f0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
22900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
22910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22920 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
22930 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22940 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
22950 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
22960 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
22970 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
22980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
22990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
229a0 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
229b0 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
229c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
229d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
229e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229f0 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73  SQLiteBase.Finis
22a00 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e  hBackup(cnn, han
22a10 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
22a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
22a30 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
22a40 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
22a50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
22a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
22a70 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
22a80 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
22a90 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
22aa0 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
22ab0 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
22ac0 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23  backupCount);..#
22ad0 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
22ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22af0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
22b00 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
22b10 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
22b20 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
22b30 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
22b40 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
22b50 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
22b60 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
22b70 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
22b80 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
22b90 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
22ba0 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
22bb0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
22bc0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
22bd0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
22be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bf0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
22c00 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
22c10 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
22c20 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
22c30 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
22c40 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
22c50 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
22c60 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
22c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c80 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20   "FinishBackup: 
22c90 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20  {0}, exception: 
22ca0 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
22cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
22cc0 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74  andle, e)); /* t
22cd0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
22ce0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
22cf0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
22d00 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
22d10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
22d20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
22d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
22d40 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
22d50 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
22d60 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
22d70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22d80 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
22d90 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
22da0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
22db0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
22dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22dd0 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e     SetHandleAsIn
22de0 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20  valid();..      
22df0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
22e00 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
22e10 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
22e20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
22e30 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
22e40 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
22e50 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
22e60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
22e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22eb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43  ///////....#if C
22ec0 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
22ed0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
22ee0 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d  WasReleasedOk().
22ef0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
22f00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
22f10 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
22f20 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
22f30 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ta.backupCount);
22f40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
22f50 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
22f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22fa0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
22fb0 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
22fc0 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
22fd0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
22fe0 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
22ff0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
23000 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
23010 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23020 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
23030 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
23040 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
23050 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23060 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
23070 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
23080 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
23090 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
230a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
230b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
230c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
230d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
23110 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
23120 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
23130 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
23140 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
23150 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
23160 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23170 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
23180 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
23190 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
231a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
231b0 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
231c0 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
231d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
231e0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
231f0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
23200 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
23210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23250 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
23260 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 6c  #region SQLiteBl
23270 6f 62 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  obHandle Class..
23280 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
23290 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
232a0 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
232b0 65 64 20 53 51 4c 69 74 65 20 62 6c 6f 62 20 6f  ed SQLite blob o
232c0 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74  bjects...    int
232d0 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
232e0 73 73 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  ss SQLiteBlobHan
232f0 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
23300 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
23310 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
23320 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23330 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
23340 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
23350 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
23360 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
23370 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
23380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
233d0 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
233e0 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d  tionHandle cnn;.
233f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
23400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23440 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
23450 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
23460 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
23470 74 50 74 72 28 53 51 4c 69 74 65 42 6c 6f 62 48  tPtr(SQLiteBlobH
23480 61 6e 64 6c 65 20 62 6c 6f 62 29 0d 0a 20 20 20  andle blob)..   
23490 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
234a0 20 20 20 20 69 66 20 28 62 6c 6f 62 20 21 3d 20      if (blob != 
234b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
234c0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
234d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
234e0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
234f0 20 20 20 20 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e       lock (blob.
23500 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
23510 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
23520 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
23530 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23540 20 62 6c 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20   blob.handle;.. 
23550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
23560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
23570 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
23580 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
23590 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
235a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
235b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
235f0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
23600 61 6c 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  al SQLiteBlobHan
23610 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
23620 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
23630 49 6e 74 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20  IntPtr blob)..  
23640 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
23650 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
23660 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
23670 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23680 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
23690 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
236a0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
236b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
236c0 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
236d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
236e0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 6c 6f     SetHandle(blo
236f0 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
23700 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
23710 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
23720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23760 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
23770 61 74 65 20 53 51 4c 69 74 65 42 6c 6f 62 48 61  ate SQLiteBlobHa
23780 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
23790 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74      : base(IntPt
237a0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
237b0 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41   {..#if COUNT_HA
237c0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
237d0 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e    Interlocked.In
237e0 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
237f0 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29  gData.blobCount)
23800 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
23810 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
23820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23860 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23870 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
23880 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
23890 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
238a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
238b0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
238c0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
238d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
238e0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
238f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
23900 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
23910 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
23920 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
23930 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
23940 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
23950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
23960 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
23970 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
23980 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
23990 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
239a0 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e  ase.CloseBlob(cn
239b0 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  n, localHandle);
239c0 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
239d0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
239e0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
239f0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
23a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
23a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23a20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
23a30 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
23a40 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
23a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23a60 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
23a70 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
23a80 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
23a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
23aa0 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c  CloseBlob: {0}",
23ab0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
23ac0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
23ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
23ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23af0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
23b00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
23b10 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
23b20 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
23b30 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
23b40 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
23b50 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
23b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b70 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
23b80 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
23b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ba0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
23bc0 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 42  QLiteBase.CloseB
23bd0 6c 6f 62 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29  lob(cnn, handle)
23be0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
23bf0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
23c00 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
23c10 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
23c20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23c30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
23c40 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
23c50 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
23c60 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
23c70 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
23c80 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62  f DebugData.blob
23c90 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
23ca0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
23cb0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
23cc0 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
23cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
23ce0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
23cf0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
23d00 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
23d10 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
23d20 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
23d30 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
23d40 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
23d50 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
23d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
23d70 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
23d80 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
23d90 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
23da0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
23db0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
23dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23dd0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
23de0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
23df0 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
23e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e10 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
23e20 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
23e30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
23e40 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
23e50 65 42 6c 6f 62 3a 20 7b 30 7d 2c 20 65 78 63 65  eBlob: {0}, exce
23e60 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20  ption: {1}",..  
23e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e80 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29        handle, e)
23e90 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
23ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23eb0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
23ec0 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
23ed0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
23ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
23ef0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
23f00 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
23f10 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
23f20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
23f30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23f40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
23f50 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
23f60 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
23f70 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
23f80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
23f90 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
23fa0 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d  dleAsInvalid();.
23fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23fc0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
23fd0 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  }..#if DEBUG..  
23fe0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23ff0 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a   false;..#else..
24000 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
24010 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
24020 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
24030 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
24040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
24080 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
24090 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  LE..        publ
240a0 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73  ic int WasReleas
240b0 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20  edOk()..        
240c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
240d0 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
240e0 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
240f0 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f  DebugData.blobCo
24100 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
24110 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
24120 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
24130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
24170 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
24180 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
24190 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
241a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
241b0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
241c0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
241d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
241e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
241f0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
24200 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
24210 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
24220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24230 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
24240 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
24250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24260 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
24270 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
24280 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
24290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
242a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
242b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
242c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
242d0 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
242e0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
242f0 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
24300 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
24310 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
24320 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24330 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
24340 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
24350 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
24360 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24370 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
24380 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
24390 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
243a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
243b0 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
243c0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a     #endregion..}..