System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 118ffa2000bb68a096ebb416ccdd147aac6b6afd:


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 20 20 20 20 20 20 23 65 6e  sion;..      #en
4f80: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
4f90: 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
4fe0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
4ff0: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
5000: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5010: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f       /// This lo
5020: 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72  ck is used to pr
5030: 6f 74 65 63 74 20 74 68 65 20 73 74 61 74 69 63  otect the static
5040: 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   _SQLiteNativeMo
5050: 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20  duleFileName,.. 
5060: 20 20 20 20 20 2f 2f 2f 20 5f 53 51 4c 69 74 65       /// _SQLite
5070: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  NativeModuleHand
5080: 6c 65 2c 20 61 6e 64 20 70 72 6f 63 65 73 73 6f  le, and processo
5090: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
50a0: 74 66 6f 72 6d 73 20 66 69 65 6c 64 73 2e 0d 0a  tforms fields...
50b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
50c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
50d0: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
50e0: 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69  nly object stati
50f0: 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20  cSyncRoot = new 
5100: 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20  object();....   
5110: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5130: 2f 2f 2f 2f 2f 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 0d 0a 20 20  ////////////..  
5160: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5170: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
5180: 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f  s dictionary sto
5190: 72 65 73 20 74 68 65 20 6d 61 70 70 69 6e 67 73  res the mappings
51a0: 20 62 65 74 77 65 65 6e 20 70 72 6f 63 65 73 73   between process
51b0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 0d  or architecture.
51c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73  .      /// names
51d0: 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61   and platform na
51e0: 6d 65 73 2e 20 20 54 68 65 73 65 20 6d 61 70 70  mes.  These mapp
51f0: 69 6e 67 73 20 61 72 65 20 6e 6f 77 20 75 73 65  ings are now use
5200: 64 20 66 6f 72 20 74 77 6f 0d 0a 20 20 20 20 20  d for two..     
5210: 20 2f 2f 2f 20 70 75 72 70 6f 73 65 73 2e 20 20   /// purposes.  
5220: 46 69 72 73 74 2c 20 74 68 65 79 20 61 72 65 20  First, they are 
5230: 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e  used to determin
5240: 65 20 69 66 20 74 68 65 20 61 73 73 65 6d 62 6c  e if the assembl
5250: 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f  y code..      //
5260: 2f 20 62 61 73 65 20 73 68 6f 75 6c 64 20 62 65  / base should be
5270: 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66   used instead of
5280: 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 2c 20 62   the location, b
5290: 61 73 65 64 20 75 70 6f 6e 20 77 68 65 74 68 65  ased upon whethe
52a0: 72 20 6f 6e 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  r one..      ///
52b0: 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 20   or more of the 
52c0: 6e 61 6d 65 64 20 73 75 62 2d 64 69 72 65 63 74  named sub-direct
52d0: 6f 72 69 65 73 20 65 78 69 73 74 20 77 69 74 68  ories exist with
52e0: 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  in the assembly 
52f0: 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  code..      /// 
5300: 62 61 73 65 2e 20 20 53 65 63 6f 6e 64 2c 20 74  base.  Second, t
5310: 68 65 79 20 61 72 65 20 75 73 65 64 20 74 6f 20  hey are used to 
5320: 61 73 73 69 73 74 20 69 6e 20 6c 6f 61 64 69 6e  assist in loadin
5330: 67 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74  g the appropriat
5340: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c  e..      /// SQL
5350: 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ite interop asse
5360: 6d 62 6c 79 20 69 6e 74 6f 20 74 68 65 20 63 75  mbly into the cu
5370: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
5380: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5390: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
53a0: 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69  ate static Dicti
53b0: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74  onary<string, st
53c0: 72 69 6e 67 3e 20 70 72 6f 63 65 73 73 6f 72 41  ring> processorA
53d0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
53e0: 6f 72 6d 73 3b 0d 0a 20 20 20 20 20 20 23 65 6e  orms;..      #en
53f0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
5400: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
5450: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5460: 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e  .      /// For n
5470: 6f 77 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20  ow, this method 
5480: 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74 68 65  simply calls the
5490: 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65 74 68   Initialize meth
54a0: 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  od...      /// <
54b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
54c0: 20 73 74 61 74 69 63 20 55 6e 73 61 66 65 4e 61   static UnsafeNa
54d0: 74 69 76 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20  tiveMethods().. 
54e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
54f0: 20 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d    Initialize();.
5500: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
5510: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
5560: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5570: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
5580: 6d 70 74 73 20 74 6f 20 69 6e 69 74 69 61 6c 69  mpts to initiali
5590: 7a 65 20 74 68 69 73 20 63 6c 61 73 73 20 62 79  ze this class by
55a0: 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65   pre-loading the
55b0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
55c0: 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72        /// librar
55d0: 79 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73  y for the proces
55e0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
55f0: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
5600: 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
5610: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5620: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
5630: 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69  tatic void Initi
5640: 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b  alize()..      {
5650: 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
5660: 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54  NDARD || USE_INT
5670: 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54  EROP_DLL || PLAT
5680: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
5690: 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f  EWORK..#if PRELO
56a0: 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52  AD_NATIVE_LIBRAR
56b0: 59 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  Y..          //.
56c0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
56d0: 54 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 50  TE: If the "No_P
56e0: 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 20 65 6e  reLoadSQLite" en
56f0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
5700: 6c 65 20 69 73 20 73 65 74 20 28 74 6f 0d 0a 20  le is set (to.. 
5710: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
5720: 20 20 61 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69    anything), ski
5730: 70 20 61 6c 6c 20 6f 75 72 20 73 70 65 63 69 61  p all our specia
5740: 6c 20 63 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c  l code and simpl
5750: 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20  y return...     
5760: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5770: 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e     if (GetSettin
5780: 67 56 61 6c 75 65 28 22 4e 6f 5f 50 72 65 4c 6f  gValue("No_PreLo
5790: 61 64 53 51 4c 69 74 65 22 2c 20 6e 75 6c 6c 29  adSQLite", null)
57a0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
57b0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
57c0: 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
57d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72  ....          #r
57e0: 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
57f0: 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
5800: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  G..          //.
5810: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
5820: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6c  TE: Create the l
5830: 69 73 74 20 6f 66 20 73 74 61 74 69 73 74 69 63  ist of statistic
5840: 73 20 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74  s that will cont
5850: 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
5860: 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62     //       numb
5870: 65 72 20 6f 66 20 74 69 6d 65 73 20 65 61 63 68  er of times each
5880: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 68   setting value h
5890: 61 73 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20  as been read... 
58a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
58b0: 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61         DebugData
58c0: 2e 49 6e 69 74 69 61 6c 69 7a 65 53 65 74 74 69  .InitializeSetti
58d0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 28 29 3b 0d  ngReadCounts();.
58e0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
58f0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
5900: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
5910: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
5920: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
5930: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
5940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
5950: 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73 75 72  / TODO: Make sur
5960: 65 20 74 68 69 73 20 6c 69 73 74 20 69 73 20 75  e this list is u
5970: 70 64 61 74 65 64 20 69 66 20 74 68 65 20 73 75  pdated if the su
5980: 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20 20  pported..       
5990: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
59a0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
59b0: 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61 6e 64  ecture names and
59c0: 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  /or platform nam
59d0: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
59e0: 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61 6e 67    //       chang
59f0: 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es...           
5a00: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5a10: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
5a20: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
5a30: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
5a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5a50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5a60: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5a70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
5a80: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6d  TE: Create the m
5a90: 61 70 20 6f 66 20 70 72 6f 63 65 73 73 6f 72 20  ap of processor 
5aa0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
5ab0: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
5ac0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
5ad0: 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73  o platform names
5ae0: 20 75 73 69 6e 67 20 61 20 63 61 73 65 2d 69 6e   using a case-in
5af0: 73 65 6e 73 69 74 69 76 65 20 73 74 72 69 6e 67  sensitive string
5b00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5b10: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6d      //       com
5b20: 70 61 72 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  parer...        
5b30: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
5b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b50: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
5b60: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
5b70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5b80: 20 20 20 20 20 20 20 20 6e 65 77 20 44 69 63 74          new Dict
5b90: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73  ionary<string, s
5ba0: 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20 20 20 20  tring>(..       
5bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bc0: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 65     StringCompare
5bd0: 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  r.OrdinalIgnoreC
5be0: 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ase);....       
5bf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c10: 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 75 70 20   // NOTE: Setup 
5c20: 74 68 65 20 6c 69 73 74 20 6f 66 20 70 6c 61 74  the list of plat
5c30: 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73 73 6f 63  form names assoc
5c40: 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5c60: 20 20 20 20 20 20 20 74 68 65 20 73 75 70 70 6f         the suppo
5c70: 72 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  rted processor a
5c80: 72 63 68 69 74 65 63 74 75 72 65 73 2e 0d 0a 20  rchitectures... 
5c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ca0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
5cb0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
5cc0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
5cd0: 66 6f 72 6d 73 2e 41 64 64 28 22 78 38 36 22 2c  forms.Add("x86",
5ce0: 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20 20 20 20   "Win32");..    
5cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
5d00: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
5d10: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
5d20: 28 22 41 4d 44 36 34 22 2c 20 22 78 36 34 22 29  ("AMD64", "x64")
5d30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5d40: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
5d50: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
5d60: 72 6d 73 2e 41 64 64 28 22 49 41 36 34 22 2c 20  rms.Add("IA64", 
5d70: 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a 20 20 20  "Itanium");..   
5d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
5d90: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
5da0: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
5db0: 64 28 22 41 52 4d 22 2c 20 22 57 69 6e 43 45 22  d("ARM", "WinCE"
5dc0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5dd0: 20 20 7d 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54    }....#if SQLIT
5de0: 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53  E_STANDARD || US
5df0: 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c  E_INTEROP_DLL ||
5e00: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
5e10: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20  TFRAMEWORK..#if 
5e20: 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c  PRELOAD_NATIVE_L
5e30: 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20  IBRARY..        
5e40: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5e50: 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55          // BUGBU
5e60: 47 3a 20 57 68 61 74 20 61 62 6f 75 74 20 6f 74  G: What about ot
5e70: 68 65 72 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  her application 
5e80: 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20 20 20 20  domains?..      
5e90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5ea0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 53            if (_S
5eb0: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
5ec0: 65 48 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  eHandle == IntPt
5ed0: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
5ee0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
5f00: 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ng baseDirectory
5f10: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
5f30: 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
5f40: 69 74 65 63 74 75 72 65 20 3d 20 6e 75 6c 6c 3b  itecture = null;
5f50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
5f60: 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44        /* IGNORED
5f70: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
5f80: 20 20 20 20 20 20 20 53 65 61 72 63 68 46 6f 72         SearchFor
5f90: 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20 20 20  Directory(..    
5fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fb0: 20 20 72 65 66 20 62 61 73 65 44 69 72 65 63 74    ref baseDirect
5fc0: 6f 72 79 2c 20 72 65 66 20 70 72 6f 63 65 73 73  ory, ref process
5fd0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 3b  orArchitecture);
5fe0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
5ff0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6000: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
6010: 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20  OTE: Attempt to 
6020: 70 72 65 2d 6c 6f 61 64 20 74 68 65 20 53 51 4c  pre-load the SQL
6030: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
6040: 20 28 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20   (or..          
6050: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
6060: 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
6070: 79 29 20 61 6e 64 20 73 74 6f 72 65 20 62 6f 74  y) and store bot
6080: 68 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 0d  h the file name.
6090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
60a0: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 64 20     //       and 
60b0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
60c0: 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65 72 20 75  ndle for later u
60d0: 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  sage...         
60e0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
60f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
6100: 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20  * IGNORED */..  
6110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6120: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c  PreLoadSQLiteDll
6130: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
6140: 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72           baseDir
6150: 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f  ectory, processo
6160: 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a  rArchitecture,..
6170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6180: 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c 69 74        ref _SQLit
6190: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c  eNativeModuleFil
61a0: 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
61b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
61c0: 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  f _SQLiteNativeM
61d0: 6f 64 75 6c 65 48 61 6e 64 6c 65 29 3b 0d 0a 20  oduleHandle);.. 
61e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
61f0: 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a  #endif..#endif..
6200: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
6210: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6260: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
6270: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6280: 20 20 20 20 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73      /// Combines
6290: 20 74 77 6f 20 70 61 74 68 20 73 74 72 69 6e 67   two path string
62a0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
62b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
62c0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
62d0: 22 70 61 74 68 31 22 3e 0d 0a 20 20 20 20 20 20  "path1">..      
62e0: 2f 2f 2f 20 54 68 65 20 66 69 72 73 74 20 70 61  /// The first pa
62f0: 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20  th -OR- null... 
6300: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6310: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
6320: 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68 32 22  ram name="path2"
6330: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
6340: 20 73 65 63 6f 6e 64 20 70 61 74 68 20 2d 4f 52   second path -OR
6350: 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  - null...      /
6360: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
6370: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
6380: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
6390: 63 6f 6d 62 69 6e 65 64 20 70 61 74 68 20 73 74  combined path st
63a0: 72 69 6e 67 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  ring -OR- null i
63b0: 66 20 62 6f 74 68 20 6f 66 20 74 68 65 20 6f 72  f both of the or
63c0: 69 67 69 6e 61 6c 20 70 61 74 68 0d 0a 20 20 20  iginal path..   
63d0: 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 73 20 61     /// strings a
63e0: 72 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  re null...      
63f0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
6400: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
6410: 61 74 69 63 20 73 74 72 69 6e 67 20 4d 61 79 62  atic string Mayb
6420: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
6430: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
6440: 70 61 74 68 31 2c 0d 0a 20 20 20 20 20 20 20 20  path1,..        
6450: 20 20 73 74 72 69 6e 67 20 70 61 74 68 32 0d 0a    string path2..
6460: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
6470: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
6480: 69 66 20 28 70 61 74 68 31 20 21 3d 20 6e 75 6c  if (path1 != nul
6490: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
64a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
64b0: 66 20 28 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c  f (path2 != null
64c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
64d0: 20 20 20 20 20 72 65 74 75 72 6e 20 50 61 74 68       return Path
64e0: 2e 43 6f 6d 62 69 6e 65 28 70 61 74 68 31 2c 20  .Combine(path1, 
64f0: 70 61 74 68 32 29 3b 0d 0a 20 20 20 20 20 20 20  path2);..       
6500: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
6510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
6520: 65 74 75 72 6e 20 70 61 74 68 31 3b 0d 0a 20 20  eturn path1;..  
6530: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
6540: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
6550: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6560: 20 20 20 20 20 20 69 66 20 28 70 61 74 68 32 20        if (path2 
6570: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
6580: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6590: 72 6e 20 70 61 74 68 32 3b 0d 0a 20 20 20 20 20  rn path2;..     
65a0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
65b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
65c0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
65d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
65e0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
65f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6630: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
6640: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6650: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
6660: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 58  nd returns the X
6670: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
6680: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
6690: 68 65 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20  he assembly..   
66a0: 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e     /// containin
66b0: 67 20 74 68 65 20 6d 61 6e 61 67 65 64 20 53 79  g the managed Sy
66c0: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
66d0: 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20   components...  
66e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
66f0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
6700: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
6710: 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69  // The XML confi
6720: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61  guration file na
6730: 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  me -OR- null if 
6740: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
6750: 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f  ermined..      /
6760: 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65  // or does not e
6770: 78 69 73 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  xist...      ///
6780: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
6790: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
67a0: 63 20 73 74 72 69 6e 67 20 47 65 74 58 6d 6c 43  c string GetXmlC
67b0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d  onfigFileName().
67c0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
67d0: 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
67e0: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
67f0: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
6800: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
6810: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
6820: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 64  ORK..          d
6830: 69 72 65 63 74 6f 72 79 20 3d 20 41 70 70 44 6f  irectory = AppDo
6840: 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
6850: 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
6860: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  ;..          fil
6870: 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d  eName = MaybeCom
6880: 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
6890: 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  ry, XmlConfigFil
68a0: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
68b0: 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
68c0: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
68d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
68e0: 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d  eturn fileName;.
68f0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
6900: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d       directory =
6910: 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65   GetAssemblyDire
6920: 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20 20  ctory();..      
6930: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d      fileName = M
6940: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
6950: 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f  directory, XmlCo
6960: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a  nfigFileName);..
6970: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
6980: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
6990: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
69a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c        return fil
69b0: 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  eName;....      
69c0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
69d0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
69e0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
6a30: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6a40: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
6a50: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
6a60: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
6a70: 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74  e specified sett
6a80: 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 20 58  ing, using the X
6a90: 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ML..      /// co
6aa0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
6ab0: 20 61 6e 64 2f 6f 72 20 74 68 65 20 65 6e 76 69   and/or the envi
6ac0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
6ad0: 73 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  s for the curren
6ae0: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  t..      /// pro
6af0: 63 65 73 73 20 61 6e 64 2f 6f 72 20 74 68 65 20  cess and/or the 
6b00: 63 75 72 72 65 6e 74 20 73 79 73 74 65 6d 2c 20  current system, 
6b10: 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e 0d  when available..
6b20: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
6b30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6b40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
6b50: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
6b60: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
6b70: 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20  setting...      
6b80: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6b90: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6ba0: 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a  ame="default">..
6bb0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
6bc0: 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
6bd0: 65 64 20 69 66 20 74 68 65 20 73 65 74 74 69 6e  ed if the settin
6be0: 67 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73  g has not been s
6bf0: 65 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20  et explicitly.. 
6c00: 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e       /// or cann
6c10: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
6c20: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
6c30: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
6c40: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
6c50: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
6c60: 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 2d  of the setting -
6c70: 4f 52 2d 20 74 68 65 20 64 65 66 61 75 6c 74 20  OR- the default 
6c80: 76 61 6c 75 65 20 73 70 65 63 69 66 69 65 64 20  value specified 
6c90: 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  by..      /// <p
6ca0: 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65  aramref name="de
6cb0: 66 61 75 6c 74 22 20 2f 3e 20 69 66 20 69 74 20  fault" /> if it 
6cc0: 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74  has not been set
6cd0: 20 65 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a   explicitly or..
6ce0: 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74        /// cannot
6cf0: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 20   be determined. 
6d00: 20 42 79 20 64 65 66 61 75 6c 74 2c 20 61 6c 6c   By default, all
6d10: 20 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20 65   references to e
6d20: 78 69 73 74 69 6e 67 0d 0a 20 20 20 20 20 20 2f  xisting..      /
6d30: 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  // environment v
6d40: 61 72 69 61 62 6c 65 73 20 77 69 6c 6c 20 62 65  ariables will be
6d50: 20 65 78 70 61 6e 64 65 64 20 74 6f 20 74 68 65   expanded to the
6d60: 69 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  ir corresponding
6d70: 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 2f   values..      /
6d80: 2f 2f 20 77 69 74 68 69 6e 20 74 68 65 20 76 61  // within the va
6d90: 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
6da0: 65 64 20 75 6e 6c 65 73 73 20 65 69 74 68 65 72  ed unless either
6db0: 20 74 68 65 20 22 4e 6f 5f 45 78 70 61 6e 64 22   the "No_Expand"
6dc0: 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22   or..      /// "
6dd0: 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70 61 72 61 6d  No_Expand_<param
6de0: 72 65 66 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 20  ref name="name" 
6df0: 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  />" environment 
6e00: 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20  variable is set 
6e10: 5b 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  [to..      /// a
6e20: 6e 79 74 68 69 6e 67 5d 2e 0d 0a 20 20 20 20 20  nything]...     
6e30: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
6e40: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
6e50: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
6e60: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
6e70: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
6e80: 20 6e 61 6d 65 2c 20 20 20 20 2f 2a 20 69 6e 20   name,    /* in 
6e90: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  */..          st
6ea0: 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 2f 2a  ring @default /*
6eb0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
6ec0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69    )..      {..#i
6ed0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
6ee0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
6ef0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6f00: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
6f10: 66 20 74 68 65 20 73 70 65 63 69 61 6c 20 22 4e  f the special "N
6f20: 6f 5f 53 51 4c 69 74 65 47 65 74 53 65 74 74 69  o_SQLiteGetSetti
6f30: 6e 67 56 61 6c 75 65 22 20 65 6e 76 69 72 6f 6e  ngValue" environ
6f40: 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
6f50: 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
6f60: 65 20 69 73 20 73 65 74 20 5b 74 6f 20 61 6e 79  e is set [to any
6f70: 74 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65 74  thing], this met
6f80: 68 6f 64 20 77 69 6c 6c 20 61 6c 77 61 79 73 0d  hod will always.
6f90: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
6fa0: 20 20 20 20 72 65 74 75 72 6e 20 74 68 65 20 64      return the d
6fb0: 65 66 61 75 6c 74 20 76 61 6c 75 65 2e 0d 0a 20  efault value... 
6fc0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6fd0: 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69 72         if (Envir
6fe0: 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f  onment.GetEnviro
6ff0: 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a  nmentVariable(..
7000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7010: 22 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53 65 74  "No_SQLiteGetSet
7020: 74 69 6e 67 56 61 6c 75 65 22 29 20 21 3d 20 6e  tingValue") != n
7030: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
7040: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
7050: 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
7060: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
7070: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
7080: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
70d0: 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20         if (name 
70e0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
70f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
7100: 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20  default;....    
7110: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
7160: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
7170: 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c   Debug Build Onl
7180: 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  y..#if DEBUG..  
7190: 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
71a0: 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69  a.IncrementSetti
71b0: 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65  ngReadCount(name
71c0: 2c 20 66 61 6c 73 65 29 3b 0d 0a 23 65 6e 64 69  , false);..#endi
71d0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
71e0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
71f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7240: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
7250: 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  alue = null;....
7260: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7270: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7280: 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65            bool e
7290: 78 70 61 6e 64 20 3d 20 74 72 75 65 3b 0d 0a 0d  xpand = true;...
72a0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45  .          if (E
72b0: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
72c0: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
72d0: 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21  e("No_Expand") !
72e0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
72f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7300: 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c      expand = fal
7310: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
7320: 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65  ..          else
7330: 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74   if (Environment
7340: 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  .GetEnvironmentV
7350: 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20  ariable(..      
7360: 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70              Help
7370: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
7380: 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e  Format(CultureIn
7390: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
73a0: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
73b0: 20 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70 61          "No_Expa
73c0: 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20  nd_{0}", name)) 
73d0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
73e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
73f0: 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61       expand = fa
7400: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
7410: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76  }....          v
7420: 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65  alue = Environme
7430: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
7440: 74 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b  tVariable(name);
7450: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
7460: 20 28 65 78 70 61 6e 64 20 26 26 20 21 53 74 72   (expand && !Str
7470: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
7480: 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  y(value))..     
7490: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
74a0: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70   Environment.Exp
74b0: 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  andEnvironmentVa
74c0: 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d  riables(value);.
74d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
74e0: 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d  (value != null).
74f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
7500: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a  eturn value;....
7510: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
7520: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
7530: 20 49 66 20 74 68 65 20 22 4e 6f 5f 53 51 4c 69   If the "No_SQLi
7540: 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22  teXmlConfigFile"
7550: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
7560: 69 61 62 6c 65 20 69 73 0d 0a 20 20 20 20 20 20  iable is..      
7570: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 65 74      //       set
7580: 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20   [to anything], 
7590: 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c  this method will
75a0: 20 4e 45 56 45 52 20 72 65 61 64 20 66 72 6f 6d   NEVER read from
75b0: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
75c0: 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20 63 6f 6e  //       XML con
75d0: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e  figuration file.
75e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
75f0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
7600: 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
7610: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
7620: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
7630: 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c     "No_SQLiteXml
7640: 43 6f 6e 66 69 67 46 69 6c 65 22 29 20 21 3d 20  ConfigFile") != 
7650: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
7660: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7670: 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
7680: 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  t;..          }.
7690: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
76a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
76f0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
7700: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
7710: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
7720: 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61         DebugData
7730: 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e  .IncrementSettin
7740: 67 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c  gReadCount(name,
7750: 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d   true);..#endif.
7760: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
7770: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
7780: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
77d0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
77e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
77f0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
7800: 65 4e 61 6d 65 20 3d 20 47 65 74 58 6d 6c 43 6f  eName = GetXmlCo
7810: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 3b 0d  nfigFileName();.
7820: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7830: 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 20 3d 3d   if (fileName ==
7840: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
7850: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
7860: 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20   @default;....  
7870: 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 44              XmlD
7880: 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d 65 6e 74  ocument document
7890: 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63 75 6d 65   = new XmlDocume
78a0: 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt();....       
78b0: 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e         document.
78c0: 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65 29 3b 0d  Load(fileName);.
78d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
78e0: 20 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d   XmlElement elem
78f0: 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53  ent = document.S
7900: 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28  electSingleNode(
7910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7920: 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
7930: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43  s.StringFormat(C
7940: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
7950: 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  iantCulture,..  
7960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7970: 22 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f  "/configuration/
7980: 61 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b  appSettings/add[
7990: 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61  @key='{0}']", na
79a0: 6d 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20  me)) as..       
79b0: 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c             XmlEl
79c0: 65 6d 65 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  ement;....      
79d0: 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
79e0: 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ent != null)..  
79f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
7a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a10: 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 48 61 73   if (element.Has
7a20: 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75 65  Attribute("value
7a30: 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
7a40: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
7a50: 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65 74 41 74   = element.GetAt
7a60: 74 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29  tribute("value")
7a70: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
7a80: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7a90: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
7aa0: 20 20 20 20 20 20 20 69 66 20 28 65 78 70 61 6e         if (expan
7ab0: 64 20 26 26 20 21 53 74 72 69 6e 67 2e 49 73 4e  d && !String.IsN
7ac0: 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65  ullOrEmpty(value
7ad0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
7ae0: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
7af0: 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78  = Environment.Ex
7b00: 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  pandEnvironmentV
7b10: 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b  ariables(value);
7b20: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
7b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7b40: 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
7b50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7b60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
7b70: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
7b80: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
7b90: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
7ba0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
7bb0: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
7bc0: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
7bd0: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
7be0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
7bf0: 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
7c00: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
7c10: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
7c20: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
7c30: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
7c40: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
7c50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
7c70: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
7c80: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
7c90: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
7ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7cb0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
7cc0: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
7cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ce0: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
7cf0: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61  ry pre-loader fa
7d00: 69 6c 65 64 20 74 6f 20 67 65 74 20 73 65 74 74  iled to get sett
7d10: 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ing " +..       
7d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
7d30: 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65 3a 20 7b  \"{0}\" value: {
7d40: 31 7d 22 2c 20 6e 61 6d 65 2c 20 65 29 29 3b 20  1}", name, e)); 
7d50: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
7d60: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
7d70: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
7d80: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
7d90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7da0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
7db0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
7dc0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
7dd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
7de0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
7df0: 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20  default;..      
7e00: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
7e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e50: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
7e60: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7e70: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72  MEWORK..      pr
7e80: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
7e90: 69 6e 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67  ing ListToString
7ea0: 28 49 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c  (IList<string> l
7eb0: 69 73 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ist)..      {.. 
7ec0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 73           if (lis
7ed0: 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t == null)..    
7ee0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
7ef0: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
7f00: 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65      StringBuilde
7f10: 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53  r result = new S
7f20: 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d  tringBuilder();.
7f30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
7f40: 65 61 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65  each (string ele
7f50: 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20  ment in list).. 
7f60: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
7f70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c            if (el
7f80: 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ement == null)..
7f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fa0: 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20    continue;.... 
7fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7fc0: 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e  (result.Length >
7fd0: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
7fe0: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70         result.Ap
7ff0: 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20  pend(' ');....  
8000: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
8010: 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e  lt.Append(elemen
8020: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  t);..          }
8030: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
8040: 74 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74  turn result.ToSt
8050: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d  ring();..      }
8060: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
8070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
80c0: 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
80d0: 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63  CheckForArchitec
80e0: 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d  turesAndPlatform
80f0: 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  s(..          st
8100: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d  ring directory,.
8110: 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 4c  .          ref L
8120: 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63  ist<string> matc
8130: 68 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29  hes..          )
8140: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
8150: 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20       int result 
8160: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
8170: 20 20 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d    if (matches ==
8180: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
8190: 20 20 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20        matches = 
81a0: 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  new List<string>
81b0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
81c0: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
81d0: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
81e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
81f0: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
8200: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
8210: 65 63 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20  ectory) &&..    
8220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
8230: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
8240: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d  turePlatforms !=
8250: 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
8260: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8270: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65              fore
8280: 61 63 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69  ach (KeyValuePai
8290: 72 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  r<string, string
82a0: 3e 20 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20  > pair..        
82b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82c0: 20 20 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72      in processor
82d0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
82e0: 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20  forms)..        
82f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
8300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8310: 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79     if (Directory
8320: 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d  .Exists(MaybeCom
8330: 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
8340: 72 79 2c 20 70 61 69 72 2e 4b 65 79 29 29 29 0d  ry, pair.Key))).
8350: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8360: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8380: 20 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28      matches.Add(
8390: 70 61 69 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20  pair.Key);..    
83a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83b0: 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d        result++;.
83c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
83d0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
83e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83f0: 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d    string value =
8400: 20 70 61 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a   pair.Value;....
8410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8420: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
8430: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
8440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8450: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
8460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8470: 20 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63         if (Direc
8480: 74 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62  tory.Exists(Mayb
8490: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72  eCombinePath(dir
84a0: 65 63 74 6f 72 79 2c 20 76 61 6c 75 65 29 29 29  ectory, value)))
84b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
84c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84e0: 20 20 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64       matches.Add
84f0: 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  (value);..      
8500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8510: 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20      result++;.. 
8520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8530: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
8540: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
8550: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
8560: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
8570: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
8580: 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  sult;..      }..
8590: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
85a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61  /....      priva
85f0: 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43  te static bool C
8600: 68 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65  heckAssemblyCode
8610: 42 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Base(..         
8620: 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
8630: 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ly,..          r
8640: 65 66 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61  ef string fileNa
8650: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  me..          ).
8660: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
8670: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
8680: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8690: 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79      if (assembly
86a0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
86b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
86c0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
86d0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
86e0: 6e 67 20 63 6f 64 65 42 61 73 65 20 3d 20 61 73  ng codeBase = as
86f0: 73 65 6d 62 6c 79 2e 43 6f 64 65 42 61 73 65 3b  sembly.CodeBase;
8700: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8710: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
8720: 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 64 65 42  ullOrEmpty(codeB
8730: 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
8740: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8750: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
8760: 20 20 20 20 20 20 20 20 55 72 69 20 75 72 69 20          Uri uri 
8770: 3d 20 6e 65 77 20 55 72 69 28 63 6f 64 65 42 61  = new Uri(codeBa
8780: 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  se);..          
8790: 20 20 20 20 73 74 72 69 6e 67 20 6c 6f 63 61 6c      string local
87a0: 46 69 6c 65 4e 61 6d 65 20 3d 20 75 72 69 2e 4c  FileName = uri.L
87b0: 6f 63 61 6c 50 61 74 68 3b 0d 0a 0d 0a 20 20 20  ocalPath;....   
87c0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
87d0: 46 69 6c 65 2e 45 78 69 73 74 73 28 6c 6f 63 61  File.Exists(loca
87e0: 6c 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  lFileName))..   
87f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
8800: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
8810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
8820: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d  ring directory =
8830: 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f   Path.GetDirecto
8840: 72 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  ryName(..       
8850: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c             local
8860: 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68  FileName); /* th
8870: 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  row */....      
8880: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 78          string x
8890: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
88a0: 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50   = MaybeCombineP
88b0: 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ath(..          
88c0: 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
88d0: 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  y, XmlConfigFile
88e0: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
88f0: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
8900: 2e 45 78 69 73 74 73 28 78 6d 6c 43 6f 6e 66 69  .Exists(xmlConfi
8910: 67 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  gFileName))..   
8920: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
8930: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
8940: 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43  0 && TRACE_DETEC
8950: 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20  TION..          
8960: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
8970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
8980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8990: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
89a0: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
89b0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
89c0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
89d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
89e0: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
89f0: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
8a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a10: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
8a20: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
8a30: 20 66 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e 66 69   found XML confi
8a40: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 22 20  guration file " 
8a50: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
8a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69               "vi
8a70: 61 20 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20  a code base for 
8a80: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
8a90: 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22  ing assembly: \"
8aa0: 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20  {0}\"",..       
8ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ac0: 20 20 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65     xmlConfigFile
8ad0: 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  Name)); /* throw
8ae0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
8af0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8b00: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
8b10: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
8b20: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8b40: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
8b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b60: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
8b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
8b80: 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46  ileName = localF
8b90: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
8ba0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8bb0: 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
8bc0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
8bd0: 20 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c             List<
8be0: 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 20  string> matches 
8bf0: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
8c00: 20 20 20 20 20 20 20 20 20 69 66 20 28 43 68 65           if (Che
8c10: 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75 72  ckForArchitectur
8c20: 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 64  esAndPlatforms(d
8c30: 69 72 65 63 74 6f 72 79 2c 20 72 65 66 20 6d 61  irectory, ref ma
8c40: 74 63 68 65 73 29 20 3e 20 30 29 0d 0a 20 20 20  tches) > 0)..   
8c50: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
8c60: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
8c70: 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43  0 && TRACE_DETEC
8c80: 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20  TION..          
8c90: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
8ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
8cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8cc0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
8cd0: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
8ce0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
8cf0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
8d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
8d10: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
8d20: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
8d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d40: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
8d50: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
8d60: 20 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 73 75   found native su
8d70: 62 2d 64 69 72 65 63 74 6f 72 69 65 73 20 22 20  b-directories " 
8d80: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
8d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 69               "vi
8da0: 61 20 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20  a code base for 
8db0: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
8dc0: 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22  ing assembly: \"
8dd0: 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20  {0}\"",..       
8de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8df0: 20 20 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28     ListToString(
8e00: 6d 61 74 63 68 65 73 29 29 29 3b 20 2f 2a 20 74  matches))); /* t
8e10: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
8e20: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
8e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e40: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
8e50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e70: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
8e80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8e90: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
8ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8eb0: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f     fileName = lo
8ec0: 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  calFileName;..  
8ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ee0: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
8ef0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
8f00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
8f10: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
8f20: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
8f30: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
8f40: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
8f50: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
8f60: 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
8f70: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
8f80: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
8f90: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
8fa0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
8fb0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
8fc0: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
8fd0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
8fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
8ff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9000: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
9010: 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
9020: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
9030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9040: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
9050: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
9060: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
9070: 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
9080: 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
9090: 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68  der failed to ch
90a0: 65 63 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20  eck code base " 
90b0: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
90c0: 20 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75           "for cu
90d0: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
90e0: 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22  g assembly: {0}"
90f0: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
9100: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
9110: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
9120: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
9130: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9140: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
9150: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
9160: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
9170: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
9180: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
9190: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
91a0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
91b0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
91c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9200: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
9210: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
9220: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
9230: 75 72 6e 73 20 74 68 65 20 64 69 72 65 63 74 6f  urns the directo
9240: 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d  ry for the assem
9250: 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65  bly currently be
9260: 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ing..      /// e
9270: 78 65 63 75 74 65 64 2e 0d 0a 20 20 20 20 20 20  xecuted...      
9280: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9290: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
92a0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
92b0: 68 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  he directory for
92c0: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
92d0: 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78  rrently being ex
92e0: 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c  ecuted -OR- null
92f0: 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69   if..      /// i
9300: 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
9310: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
9320: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
9330: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
9340: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 41 73  tic string GetAs
9350: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
9360: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
9370: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
9380: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9390: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
93a0: 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
93b0: 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
93c0: 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
93d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
93e0: 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  assembly == null
93f0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
9400: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
9410: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9420: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
9430: 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69  me = null;....#i
9440: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
9450: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9460: 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
9470: 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79  blyName assembly
9480: 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e  Name = assembly.
9490: 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20  GetName();....  
94a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
94b0: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20  assemblyName == 
94c0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
94d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
94e0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
94f0: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
9500: 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43  = assemblyName.C
9510: 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73 65 0d  odeBase;..#else.
9520: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
9530: 66 20 28 21 43 68 65 63 6b 41 73 73 65 6d 62 6c  f (!CheckAssembl
9540: 79 43 6f 64 65 42 61 73 65 28 61 73 73 65 6d 62  yCodeBase(assemb
9550: 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e 61 6d 65  ly, ref fileName
9560: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
9570: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
9580: 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69   assembly.Locati
9590: 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  on;..#endif.... 
95a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
95b0: 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
95c0: 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
95d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
95e0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
95f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9600: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
9610: 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72  ry = Path.GetDir
9620: 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e  ectoryName(fileN
9630: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
9640: 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
9650: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
9660: 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20  directory))..   
9670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
9680: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
9690: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
96a0: 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  urn directory;..
96b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
96c0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
96d0: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
96e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
96f0: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
9700: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
9710: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
9720: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
9730: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
9740: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
9750: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
9760: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
9770: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9780: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9790: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
97a0: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
97b0: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
97c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97d0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
97e0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
97f0: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
9800: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
9810: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
9820: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
9830: 67 65 74 20 64 69 72 65 63 74 6f 72 79 20 22 20  get directory " 
9840: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
9850: 20 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75           "for cu
9860: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
9870: 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22  g assembly: {0}"
9880: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
9890: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
98a0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
98b0: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
98c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
98d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
98e0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
98f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
9900: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
9910: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
9920: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
9930: 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
9940: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
9950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
99a0: 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f     #region Optio
99b0: 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74  nal Native SQLit
99c0: 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f  e Library Pre-Lo
99d0: 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20  ading Code..    
99e0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e    //..      // N
99f0: 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c  OTE: If we are l
9a00: 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73  ooking for the s
9a10: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44  tandard SQLite D
9a20: 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c  LL ("sqlite3.dll
9a30: 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  "),..      //   
9a40: 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20      the interop 
9a50: 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74  DLL ("SQLite.Int
9a60: 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77  erop.dll"), or w
9a70: 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e  e are running on
9a80: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
9a90: 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63       .NET Compac
9aa0: 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20  t Framework, we 
9ab0: 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74  should include t
9ac0: 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69  his code (only i
9ad0: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  f the..      // 
9ae0: 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68 61        feature ha
9af0: 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20  s actually been 
9b00: 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20  enabled).  This 
9b10: 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f  code would be to
9b20: 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20  tally..      // 
9b30: 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20        redundant 
9b40: 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68  if this module h
9b50: 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20  as been bundled 
9b60: 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d  into the mixed-m
9b70: 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ode..      //   
9b80: 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20      assembly... 
9b90: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c       //..#if SQL
9ba0: 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
9bb0: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
9bc0: 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
9bd0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a  ACTFRAMEWORK....
9be0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9bf0: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f  // NOTE: Only co
9c00: 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74  mpile in the nat
9c10: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
9c20: 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68 65  load code if the
9c30: 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20   feature..      
9c40: 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
9c50: 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68  n enabled for th
9c60: 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20  is build...     
9c70: 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44   //..#if PRELOAD
9c80: 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
9c90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
9ca0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
9cb0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
9cc0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
9cd0: 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  able containing 
9ce0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20  the processor.. 
9cf0: 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65       /// archite
9d00: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
9d10: 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20  rent process... 
9d20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9d30: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
9d40: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
9d50: 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53  ly string PROCES
9d60: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
9d70: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50   =..          "P
9d80: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
9d90: 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20  CTURE";....     
9da0: 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
9df0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
9e00: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
9e10: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9e20: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
9e30: 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
9e40: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
9e50: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
9e60: 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ry or null...   
9e70: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9e80: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
9e90: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
9ea0: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
9eb0: 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  uleFileName = nu
9ec0: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll;....      ///
9ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f10: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
9f20: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9f30: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
9f40: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
9f50: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
9f60: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72  QLite library or
9f70: 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20   the value..    
9f80: 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72    /// IntPtr.Zer
9f90: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
9fa0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9fb0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
9fc0: 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74  ntPtr _SQLiteNat
9fd0: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
9fe0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
9ff0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
a000: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a050: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
a060: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a070: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74  /// Determines t
a080: 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
a090: 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64  e (without any d
a0a0: 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61  irectory informa
a0b0: 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion)..      ///
a0c0: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
a0d0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
a0e0: 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
a0f0: 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  by this class...
a100: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a110: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a120: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
a130: 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69   /// The base fi
a140: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
a150: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
a160: 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d  brary to be pre-
a170: 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20  loaded by..     
a180: 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20   /// this class 
a190: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73  -OR- null if its
a1a0: 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65   value cannot be
a1b0: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
a1c0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
a1d0: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
a1e0: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
a1f0: 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
a200: 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d  yFileNameOnly().
a210: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
a220: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
a230: 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74  ameOnly = GetSet
a240: 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
a250: 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
a260: 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79  adSQLite_Library
a270: 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e  FileNameOnly", n
a280: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
a290: 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f     if (fileNameO
a2a0: 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nly != null)..  
a2b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
a2c0: 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b  rn fileNameOnly;
a2d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
a2e0: 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b  turn SQLITE_DLL;
a2f0: 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20   /* COMPAT */.. 
a300: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
a310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
a360: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
a370: 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68        /// Search
a380: 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  es for the nativ
a390: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
a3a0: 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72   in the director
a3b0: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  y containing..  
a3c0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65      /// the asse
a3d0: 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
a3e0: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 61 73  eing executed as
a3f0: 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73   well as the bas
a400: 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
a410: 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63     /// for the c
a420: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
a430: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
a440: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a450: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
a460: 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72  am name="baseDir
a470: 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20  ectory">..      
a480: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
a490: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
a4a0: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
a4b0: 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
a4c0: 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f  e base..      //
a4d0: 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  / directory cont
a4e0: 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76  aining the nativ
a4f0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
a500: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
a510: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
a520: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
a530: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
a540: 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
a550: 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
a560: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69  his parameter wi
a570: 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  ll be modified t
a580: 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e  o refer to the n
a590: 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ame..      /// o
a5a0: 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20  f the immediate 
a5b0: 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20  directory (i.e. 
a5c0: 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  the offset from 
a5d0: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
a5e0: 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ry)..      /// c
a5f0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
a600: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
a610: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
a620: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
a630: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
a640: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
a650: 6f 20 28 73 75 63 63 65 73 73 29 20 69 66 20 74  o (success) if t
a660: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
a670: 20 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f 75   library was fou
a680: 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  nd; otherwise,..
a690: 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28        /// zero (
a6a0: 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20  failure)...     
a6b0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
a6c0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
a6d0: 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63  tatic bool Searc
a6e0: 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a  hForDirectory(..
a6f0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
a700: 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
a710: 72 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f 75  ry,        /* ou
a720: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
a730: 72 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65  ref string proce
a740: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
a750: 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
a760: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
a770: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
a780: 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
a790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a7a0: 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
a7b0: 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65  _NoSearchForDire
a7c0: 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
a7d0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
a7e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a7f0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
a800: 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d   /* DISABLED */.
a810: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
a820: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
a830: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
a840: 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
a850: 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
a860: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
a870: 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
a880: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
a890: 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
a8a0: 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
a8b0: 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
a8c0: 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
a8d0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a8e0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
a8f0: 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
a900: 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
a910: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
a920: 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
a930: 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
a940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a950: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
a960: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a970: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
a980: 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f  Build the list o
a990: 66 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 69  f base directori
a9a0: 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72  es and processor
a9b0: 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20  /platform..     
a9c0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61       //       na
a9d0: 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74  mes.  These list
a9e0: 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74  s will be used t
a9f0: 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68  o help locate th
aa00: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
aa10: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
aa20: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
aa30: 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73   (or interop ass
aa40: 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f  embly) to pre-lo
aa50: 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20  ad into..       
aa60: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73     //       this
aa70: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
aa80: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
aa90: 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65     string[] dire
aaa0: 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
aab0: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
aac0: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
aad0: 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ),..#if !PLATFOR
aae0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
aaf0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
ab00: 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72    AppDomain.Curr
ab10: 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
ab20: 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66  rectory,..#endif
ab30: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a  ..          };..
ab40: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
ab50: 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f 72  ng[] subDirector
ab60: 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  ies = {..       
ab70: 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65 73         GetProces
ab80: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
ab90: 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ), GetPlatformNa
aba0: 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  me(null)..      
abb0: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
abc0: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
abd0: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
abe0: 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
abf0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ac00: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
ac10: 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
ac20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ac30: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
ac40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
ac50: 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
ac60: 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
ac70: 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
ac80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
ac90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aca0: 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
acb0: 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
acc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
acd0: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
ace0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
acf0: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
ad00: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
ad10: 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
ad20: 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
ad30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
ad40: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
ad50: 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69  directory, subDi
ad60: 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20  rectory),..     
ad70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad80: 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
ad90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ada0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
adb0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
adc0: 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69  OTE: If the SQLi
add0: 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73  te DLL file exis
ade0: 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65  ts, return succe
adf0: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
ae00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
ae10: 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69  Prior to returni
ae20: 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65  ng, set the base
ae30: 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
ae40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae50: 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
ae60: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
ae70: 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65  e to reflect the
ae80: 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20   location..     
ae90: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
aea0: 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77        where it w
aeb0: 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  as found...     
aec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
aed0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aee0: 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
aef0: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
af00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
af20: 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
af30: 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74  rectory = direct
af40: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
af50: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
af60: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
af70: 65 20 3d 20 73 75 62 44 69 72 65 63 74 6f 72 79  e = subDirectory
af80: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
af90: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
afa0: 74 72 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a  true; /* FOUND *
afb0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
afc0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
afd0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
afe0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
aff0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20    return false; 
b000: 2f 2a 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d  /* NOT FOUND */.
b010: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
b020: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
b030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
b070: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
b080: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
b090: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
b0a0: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
b0b0: 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  ry of the curren
b0c0: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  t application.. 
b0d0: 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e       /// domain.
b0e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
b0f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
b100: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
b110: 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20     /// The base 
b120: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
b130: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
b140: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52  ation domain -OR
b150: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
b160: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
b170: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
b180: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
b190: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
b1a0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
b1b0: 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72   GetBaseDirector
b1c0: 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  y()..      {..  
b1d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b1e0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
b1f0: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
b200: 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f  Lite_BaseDirecto
b210: 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  ry" environment 
b220: 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20  variable..      
b230: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
b240: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
b250: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73  atim for the bas
b260: 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  e directory...  
b270: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b280: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
b290: 65 63 74 6f 72 79 20 3d 20 47 65 74 53 65 74 74  ectory = GetSett
b2a0: 69 6e 67 56 61 6c 75 65 28 22 50 72 65 4c 6f 61  ingValue("PreLoa
b2b0: 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65  dSQLite_BaseDire
b2c0: 63 74 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20 20  ctory",..       
b2d0: 20 20 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d         null);...
b2e0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64  .          if (d
b2f0: 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c  irectory != null
b300: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
b310: 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72   return director
b320: 79 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  y;....#if !PLATF
b330: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
b340: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
b350: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
b360: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
b370: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65  reLoadSQLite_Use
b380: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
b390: 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a  y" environment..
b3a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
b3b0: 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73     variable is s
b3c0: 65 74 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29  et (to anything)
b3d0: 2c 20 74 68 65 6e 20 61 74 74 65 6d 70 74 20 74  , then attempt t
b3e0: 6f 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20  o use the..     
b3f0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69       //       di
b400: 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
b410: 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79  ng the currently
b420: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
b430: 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  bly..          /
b440: 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20 53 79  /       (i.e. Sy
b450: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
b460: 29 20 69 6e 74 73 65 61 64 20 6f 66 20 74 68 65  ) intsead of the
b470: 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20   application..  
b480: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
b490: 20 64 6f 6d 61 69 6e 20 62 61 73 65 20 64 69 72   domain base dir
b4a0: 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20  ectory...       
b4b0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b4c0: 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56   if (GetSettingV
b4d0: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
b4e0: 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
b4f0: 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d  dSQLite_UseAssem
b500: 62 6c 79 44 69 72 65 63 74 6f 72 79 22 2c 20 6e  blyDirectory", n
b510: 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ull) != null).. 
b520: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b530: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
b540: 6f 72 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c  ory = GetAssembl
b550: 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  yDirectory();...
b560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
b570: 66 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20  f (directory != 
b580: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
b590: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b5a0: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
b5b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
b5c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
b5d0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
b5e0: 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20  rwise, fallback 
b5f0: 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 62 61 73  on using the bas
b600: 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74  e directory of t
b610: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
b620: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 61         current a
b630: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
b640: 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  n...          //
b650: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
b660: 72 6e 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72  rn AppDomain.Cur
b670: 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44  rentDomain.BaseD
b680: 69 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65  irectory;..#else
b690: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
b6a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
b6b0: 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61  E: Otherwise, fa
b6c0: 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20  llback on using 
b6d0: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f  the directory co
b6e0: 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20  ntaining..      
b6f0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
b700: 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
b710: 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  ting assembly...
b720: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
b730: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
b740: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
b750: 6f 72 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ory();..#endif..
b760: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
b770: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
b780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
b7c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
b7d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
b7e0: 6d 69 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e  mines if the dyn
b7f0: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
b800: 79 20 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75  y file name requ
b810: 69 72 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20  ires a suffix.. 
b820: 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64       /// and add
b830: 73 20 69 74 20 69 66 20 6e 65 63 65 73 73 61 72  s it if necessar
b840: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
b850: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b860: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
b870: 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  "fileName">..   
b880: 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69     /// The origi
b890: 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  nal dynamic link
b8a0: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
b8b0: 6d 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a  me to inspect...
b8c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
b8d0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
b8e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
b8f0: 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c  // The dynamic l
b900: 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
b910: 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20   name, possibly 
b920: 6d 6f 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c  modified to incl
b930: 75 64 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f  ude an..      //
b940: 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20  / extension...  
b950: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
b960: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
b970: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
b980: 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
b990: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
b9a0: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20  ing fileName /* 
b9b0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
b9c0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
b9d0: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
b9e0: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
b9f0: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
ba00: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ba10: 20 20 20 20 20 20 20 20 69 66 20 28 48 65 6c 70          if (Help
ba20: 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64  erMethods.IsWind
ba30: 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ows())..        
ba40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ba50: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
ba60: 66 69 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74  fileName.EndsWit
ba70: 68 28 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  h(DllFileExtensi
ba80: 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on,..           
ba90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
baa0: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
bab0: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
bac0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
bad0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
bae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
baf0: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20  return fileName 
bb00: 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  + DllFileExtensi
bb10: 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on;..           
bb20: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
bb30: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
bb40: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
bb50: 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
bb60: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ame;..      }...
bb70: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
bb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
bbd0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
bbe0: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
bbf0: 75 72 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73  urns the process
bc00: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
bc10: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  of the current..
bc20: 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
bc30: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
bc40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bc50: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
bc60: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f       /// The pro
bc70: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
bc80: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
bc90: 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20  nt process -OR- 
bca0: 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20  null if it..    
bcb0: 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
bcc0: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
bcd0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
bce0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
bcf0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
bd00: 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  etProcessorArchi
bd10: 74 65 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20  tecture()..     
bd20: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
bd30: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
bd40: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
bd50: 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65  LoadSQLite_Proce
bd60: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
bd70: 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  " environment.. 
bd80: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
bd90: 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65    variable is se
bda0: 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74  t, use it verbat
bdb0: 69 6d 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  im for the curre
bdc0: 6e 74 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  nt processor..  
bdd0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
bde0: 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a   architecture...
bdf0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
be00: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
be10: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
be20: 74 75 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e  ture = GetSettin
be30: 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
be40: 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
be50: 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41  QLite_ProcessorA
be60: 72 63 68 69 74 65 63 74 75 72 65 22 2c 20 6e 75  rchitecture", nu
be70: 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
be80: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
be90: 72 63 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e  rchitecture != n
bea0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
beb0: 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65      return proce
bec0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
bed0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
bee0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
bef0: 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69  BUGBUG: Will thi
bf00: 73 20 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69  s always be reli
bf10: 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20  able?..         
bf20: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   //..          p
bf30: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
bf40: 74 75 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e  ture = GetSettin
bf50: 67 56 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52  gValue(PROCESSOR
bf60: 5f 41 52 43 48 49 54 45 43 54 55 52 45 2c 20 6e  _ARCHITECTURE, n
bf70: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
bf80: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
bf90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfc0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
bfd0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
bfe0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
bff0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
c000: 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65      // HACK: Che
c010: 63 6b 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73  ck for an "impos
c020: 73 69 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e  sible" situation
c030: 2e 20 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65  .  If the pointe
c040: 72 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20  r size..        
c050: 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32    //       is 32
c060: 2d 62 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65  -bits, the proce
c070: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
c080: 65 20 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44  e cannot be "AMD
c090: 36 34 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  64"...          
c0a0: 2f 2f 20 20 20 20 20 20 20 49 6e 20 74 68 61 74  //       In that
c0b0: 20 63 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c   case, we are al
c0c0: 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68  most certainly h
c0d0: 69 74 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20  itting a bug in 
c0e0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
c0f0: 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e  /       operatin
c100: 67 20 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20  g system and/or 
c110: 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68  Visual Studio th
c120: 61 74 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20  at causes the.. 
c130: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
c140: 20 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48    PROCESSOR_ARCH
c150: 49 54 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e  ITECTURE environ
c160: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
c170: 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
c180: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
c190: 20 77 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20   wrong value in 
c1a0: 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63  some circumstanc
c1b0: 65 73 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65  es.  Please refe
c1c0: 72 20 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20  r to ticket..   
c1d0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
c1e0: 5b 39 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72  [9ac9862611] for
c1f0: 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61   further informa
c200: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
c210: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
c220: 66 20 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20  f ((IntPtr.Size 
c230: 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20  == sizeof(int)) 
c240: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
c250: 20 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28    String.Equals(
c260: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
c270: 63 74 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d  cture, "AMD64",.
c280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c290: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69     StringCompari
c2a0: 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
c2b0: 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eCase))..       
c2c0: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
c2d0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
c2e0: 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20  CE_DETECTION..  
c2f0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
c300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c310: 20 4e 4f 54 45 3a 20 57 68 65 6e 20 74 72 61 63   NOTE: When trac
c320: 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20  ing is enabled, 
c330: 73 61 76 65 20 74 68 65 20 6f 72 69 67 69 6e 61  save the origina
c340: 6c 6c 79 20 64 65 74 65 63 74 65 64 0d 0a 20 20  lly detected..  
c350: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
c360: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61       processor a
c370: 72 63 68 69 74 65 63 74 75 72 65 20 62 65 66 6f  rchitecture befo
c380: 72 65 20 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d  re changing it..
c390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
c3a0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
c3b0: 20 73 74 72 69 6e 67 20 73 61 76 65 64 50 72 6f   string savedPro
c3c0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
c3d0: 72 65 20 3d 20 70 72 6f 63 65 73 73 6f 72 41 72  re = processorAr
c3e0: 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e  chitecture;..#en
c3f0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
c400: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
c410: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
c420: 57 65 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65  We know that ope
c430: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73 20 74  rating systems t
c440: 68 61 74 20 72 65 74 75 72 6e 20 22 41 4d 44 36  hat return "AMD6
c450: 34 22 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20  4" as..         
c460: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
c470: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
c480: 69 74 65 63 74 75 72 65 20 61 72 65 20 61 63 74  itecture are act
c490: 75 61 6c 6c 79 20 61 20 73 75 70 65 72 73 65 74  ually a superset
c4a0: 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20   of..           
c4b0: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
c4c0: 22 78 38 36 22 20 70 72 6f 63 65 73 73 6f 72 20  "x86" processor 
c4d0: 61 72 63 68 69 74 65 63 74 75 72 65 3b 20 74 68  architecture; th
c4e0: 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d  erefore, return.
c4f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
c500: 2f 20 20 20 20 20 20 20 22 78 38 36 22 20 77 68  /       "x86" wh
c510: 65 6e 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73  en the pointer s
c520: 69 7a 65 20 69 73 20 33 32 2d 62 69 74 73 2e 0d  ize is 32-bits..
c530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
c540: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
c550: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
c560: 65 63 74 75 72 65 20 3d 20 22 78 38 36 22 3b 0d  ecture = "x86";.
c570: 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
c580: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
c590: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
c5a0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
c5b0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
c5e0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
c5f0: 53 68 6f 77 20 74 68 61 74 20 77 65 20 68 69 74  Show that we hit
c600: 20 61 20 66 61 69 72 6c 79 20 75 6e 75 73 75 61   a fairly unusua
c610: 6c 20 73 69 74 75 61 74 69 6f 6e 20 28 69 2e 65  l situation (i.e
c620: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c630: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
c640: 65 20 22 77 72 6f 6e 67 22 20 70 72 6f 63 65 73  e "wrong" proces
c650: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
c660: 20 77 61 73 20 64 65 74 65 63 74 65 64 29 2e 0d   was detected)..
c670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c680: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
c690: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
c6a0: 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
c6b0: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
c6c0: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
c6d0: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
c6e0: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
c6f0: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
c700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
c710: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
c720: 72 65 2d 6c 6f 61 64 65 72 20 64 65 74 65 63 74  re-loader detect
c730: 65 64 20 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74  ed {0}-bit point
c740: 65 72 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  er " +..        
c750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73                "s
c760: 69 7a 65 20 77 69 74 68 20 70 72 6f 63 65 73 73  ize with process
c770: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
c780: 5c 22 7b 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22  \"{1}\", using "
c790: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
c7a0: 20 20 20 20 20 20 20 20 20 20 22 70 72 6f 63 65            "proce
c7b0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
c7c0: 65 20 5c 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61  e \"{2}\" instea
c7d0: 64 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  d...",..        
c7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
c7f0: 74 50 74 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a  tPtr.Size * 8 /*
c800: 20 62 69 74 73 20 2a 2f 2c 20 73 61 76 65 64 50   bits */, savedP
c810: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
c820: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
c830: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
c840: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
c850: 72 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  re)); /* throw *
c860: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
c870: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
c880: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
c890: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c8a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
c8b0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
c8c0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
c8d0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
c8e0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
c8f0: 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
c900: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
c910: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
c920: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c930: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
c940: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20      // NOTE: On 
c950: 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
c960: 20 46 72 61 6d 65 77 6f 72 6b 2c 20 61 74 74 65   Framework, atte
c970: 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 20 6e  mpt to use the n
c980: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20  ative..         
c990: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 57 69       //       Wi
c9a0: 6e 33 32 20 41 50 49 20 66 75 6e 63 74 69 6f 6e  n32 API function
c9b0: 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20   (via P/Invoke) 
c9c0: 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69 64 65  that can provide
c9d0: 20 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20   us..           
c9e0: 20 20 20 2f 2f 20 20 20 20 20 20 20 77 69 74 68     //       with
c9f0: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
ca00: 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
ca10: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
ca20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
ca30: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
ca40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ca50: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
ca70: 4f 54 45 3a 20 54 68 65 20 6f 75 74 70 75 74 20  OTE: The output 
ca80: 6f 66 20 74 68 65 20 47 65 74 53 79 73 74 65 6d  of the GetSystem
ca90: 49 6e 66 6f 20 66 75 6e 63 74 69 6f 6e 20 77 69  Info function wi
caa0: 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 20  ll be..         
cab0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
cac0: 20 20 70 6c 61 63 65 64 20 68 65 72 65 2e 20 20    placed here.  
cad0: 4f 6e 6c 79 20 74 68 65 20 70 72 6f 63 65 73 73  Only the process
cae0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
caf0: 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 20  field..         
cb00: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
cb10: 20 20 69 73 20 75 73 65 64 20 62 79 20 74 68 69    is used by thi
cb20: 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  s method...     
cb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
cb40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cb50: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
cb60: 65 74 68 6f 64 73 57 69 6e 33 32 2e 53 59 53 54  ethodsWin32.SYST
cb70: 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e  EM_INFO systemIn
cb80: 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  fo;....         
cb90: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
cba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
cbb0: 2f 20 4e 4f 54 45 3a 20 51 75 65 72 79 20 74 68  / NOTE: Query th
cbc0: 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61  e system informa
cbd0: 74 69 6f 6e 20 76 69 61 20 50 2f 49 6e 76 6f 6b  tion via P/Invok
cbe0: 65 2c 20 74 68 75 73 0d 0a 20 20 20 20 20 20 20  e, thus..       
cbf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
cc00: 20 20 20 20 66 69 6c 6c 69 6e 67 20 74 68 65 20      filling the 
cc10: 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
cc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
cc30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cc40: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
cc50: 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 47 65 74  MethodsWin32.Get
cc60: 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 73  SystemInfo(out s
cc70: 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20  ystemInfo);.... 
cc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc90: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
cca0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
ccb0: 52 65 74 75 72 6e 20 74 68 65 20 70 72 6f 63 65  Return the proce
ccc0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
ccd0: 65 20 76 61 6c 75 65 20 61 73 20 61 20 73 74 72  e value as a str
cce0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
ccf0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
cd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
cd10: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
cd20: 75 72 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ure =..         
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73               sys
cd40: 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63 65 73 73  temInfo.wProcess
cd50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2e 54  orArchitecture.T
cd60: 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
cd70: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
cd80: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
cd90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cda0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
cdb0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
cdc0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
cdd0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
cde0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
cdf0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
ce00: 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72   Upon failure, r
ce10: 65 74 75 72 6e 20 61 6e 20 65 6d 70 74 79 20 73  eturn an empty s
ce20: 74 72 69 6e 67 2e 20 20 54 68 69 73 20 77 69 6c  tring.  This wil
ce30: 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20 20 20 20  l prevent..     
ce40: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
ce50: 20 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 6d 65    the calling me
ce60: 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e 73 69 64  thod from consid
ce70: 65 72 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f  ering this metho
ce80: 64 20 63 61 6c 6c 20 61 0d 0a 20 20 20 20 20 20  d call a..      
ce90: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
cea0: 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a 20 20 20   "failure"...   
ceb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
cec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
ced0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
cee0: 72 65 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74  re = String.Empt
cef0: 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  y;..          }.
cf00: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
cf10: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
cf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
cf60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
cf70: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
cf80: 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ture;..      }..
cf90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
cfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfe0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
cff0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
d000: 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f 63  / Given the proc
d010: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
d020: 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20  re, returns the 
d030: 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61 74  name of the plat
d040: 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  form...      ///
d050: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d060: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
d070: 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
d080: 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
d090: 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
d0a0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
d0b0: 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61 74  e to be translat
d0c0: 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d  ed to a platform
d0d0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
d0e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
d0f0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
d100: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
d110: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72  latform name for
d120: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
d130: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
d140: 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d  cture -OR- null.
d150: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69 74  .      /// if it
d160: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
d170: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
d180: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
d190: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
d1a0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c 61  ic string GetPla
d1b0: 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20  tformName(..    
d1c0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
d1d0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
d1e0: 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  re /* in */..   
d1f0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
d200: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
d210: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
d220: 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
d230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
d240: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
d250: 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
d260: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
d270: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
d280: 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
d290: 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65 73 73  lOrEmpty(process
d2a0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 29  orArchitecture))
d2b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d2c0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
d2d0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
d2e0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
d2f0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
d300: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d310: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
d320: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
d330: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
d340: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
d350: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
d360: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
d370: 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d  platformName;...
d380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
d390: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
d3a0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
d3b0: 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d 0a  s.TryGetValue(..
d3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d3d0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
d3e0: 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f 75 74  rchitecture, out
d3f0: 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d   platformName)).
d400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
d410: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d420: 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61 74 66      return platf
d430: 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ormName;..      
d440: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
d450: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d460: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
d470: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
d480: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
d490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
d4d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
d4e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  >..      /// Att
d4f0: 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68  empts to load th
d500: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
d510: 6c 69 62 72 61 72 79 20 62 61 73 65 64 20 6f 6e  library based on
d520: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
d530: 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74        /// direct
d540: 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73 73 6f  ory and processo
d550: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d  r architecture..
d560: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
d570: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
d580: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
d590: 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20  seDirectory">.. 
d5a0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73       /// The bas
d5b0: 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 75  e directory to u
d5c0: 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66  se, null for def
d5d0: 61 75 6c 74 20 28 74 68 65 20 62 61 73 65 20 64  ault (the base d
d5e0: 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20  irectory of..   
d5f0: 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72 65     /// the curre
d600: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
d610: 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20 64 69  omain).  This di
d620: 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 63  rectory should c
d630: 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
d640: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20    /// processor 
d650: 61 72 63 68 69 74 65 63 74 75 72 65 20 73 70 65  architecture spe
d660: 63 69 66 69 63 20 73 75 62 2d 64 69 72 65 63 74  cific sub-direct
d670: 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ories...      //
d680: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
d690: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
d6a0: 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
d6b0: 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
d6c0: 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73    /// The reques
d6d0: 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ted processor ar
d6e0: 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c  chitecture, null
d6f0: 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68   for default (th
d700: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
d710: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
d720: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
d730: 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20 54 68  nt process).  Th
d740: 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64  is caller should
d750: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f  ..      /// almo
d760: 73 74 20 61 6c 77 61 79 73 20 73 70 65 63 69 66  st always specif
d770: 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73 20  y null for this 
d780: 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20  parameter...    
d790: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d7a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
d7b0: 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64   name="nativeMod
d7c0: 75 6c 65 46 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  uleFileName">.. 
d7d0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 61 6e       /// The can
d7e0: 64 69 64 61 74 65 20 6e 61 74 69 76 65 20 6d 6f  didate native mo
d7f0: 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 74  dule file name t
d800: 6f 20 6c 6f 61 64 20 77 69 6c 6c 20 62 65 20 73  o load will be s
d810: 74 6f 72 65 64 20 68 65 72 65 2c 0d 0a 20 20 20  tored here,..   
d820: 20 20 20 2f 2f 2f 20 69 66 20 6e 65 63 65 73 73     /// if necess
d830: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
d840: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
d850: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d860: 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  "nativeModuleHan
d870: 64 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  dle">..      ///
d880: 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   The native modu
d890: 6c 65 20 68 61 6e 64 6c 65 20 61 73 20 72 65 74  le handle as ret
d8a0: 75 72 6e 65 64 20 62 79 20 4c 6f 61 64 4c 69 62  urned by LoadLib
d8b0: 72 61 72 79 20 77 69 6c 6c 20 62 65 20 73 74 6f  rary will be sto
d8c0: 72 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68  red..      /// h
d8d0: 65 72 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72  ere, if necessar
d8e0: 79 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77  y.  This value w
d8f0: 69 6c 6c 20 62 65 20 49 6e 74 50 74 72 2e 5a 65  ill be IntPtr.Ze
d900: 72 6f 20 69 66 20 74 68 65 20 63 61 6c 6c 20 74  ro if the call t
d910: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 61  o..      /// Loa
d920: 64 4c 69 62 72 61 72 79 20 66 61 69 6c 73 2e 0d  dLibrary fails..
d930: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
d940: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
d950: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
d960: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
d970: 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  the native modul
d980: 65 20 77 61 73 20 6c 6f 61 64 65 64 20 73 75 63  e was loaded suc
d990: 63 65 73 73 66 75 6c 6c 79 3b 20 6f 74 68 65 72  cessfully; other
d9a0: 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  wise,..      ///
d9b0: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
d9c0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
d9d0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
d9e0: 69 63 20 62 6f 6f 6c 20 50 72 65 4c 6f 61 64 53  ic bool PreLoadS
d9f0: 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20  QLiteDll(..     
da00: 20 20 20 20 20 73 74 72 69 6e 67 20 62 61 73 65       string base
da10: 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20  Directory,      
da20: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
da30: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
da40: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
da50: 65 63 74 75 72 65 2c 20 20 20 20 2f 2a 20 69 6e  ecture,    /* in
da60: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   */..          r
da70: 65 66 20 73 74 72 69 6e 67 20 6e 61 74 69 76 65  ef string native
da80: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 20  ModuleFileName, 
da90: 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
daa0: 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
dab0: 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  nativeModuleHand
dac0: 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d  le    /* out */.
dad0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
dae0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
daf0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
db00: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73  / NOTE: If the s
db10: 70 65 63 69 66 69 65 64 20 62 61 73 65 20 64 69  pecified base di
db20: 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c  rectory is null,
db30: 20 75 73 65 20 74 68 65 20 64 65 66 61 75 6c 74   use the default
db40: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
db50: 20 20 20 20 20 28 69 2e 65 2e 20 61 74 74 65 6d       (i.e. attem
db60: 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69 63 61  pt to automatica
db70: 6c 6c 79 20 64 65 74 65 63 74 20 69 74 29 2e 0d  lly detect it)..
db80: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
db90: 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73           if (bas
dba0: 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  eDirectory == nu
dbb0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
dbc0: 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79     baseDirectory
dbd0: 20 3d 20 47 65 74 42 61 73 65 44 69 72 65 63 74   = GetBaseDirect
dbe0: 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
dbf0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
dc00: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65    // NOTE: If we
dc10: 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79   failed to query
dc20: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
dc30: 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  ory, stop now...
dc40: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
dc50: 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73 65          if (base
dc60: 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c  Directory == nul
dc70: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
dc80: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
dc90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
dca0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
dcb0: 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74 68  TE: Determine th
dcc0: 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65  e base file name
dcd0: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
dce0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
dcf0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
dd00: 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20 6e      If this is n
dd10: 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73  ot known by this
dd20: 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f   class, we canno
dd30: 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20  t continue...   
dd40: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
dd50: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
dd60: 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61  NameOnly = GetNa
dd70: 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e  tiveLibraryFileN
dd80: 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ameOnly();....  
dd90: 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65          if (file
dda0: 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c  NameOnly == null
ddb0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ddc0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
ddd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
dde0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
ddf0: 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76 65  E: If the native
de00: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
de10: 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62 61  exists in the ba
de20: 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  se directory..  
de30: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
de40: 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f   itself, stop no
de50: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
de60: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
de70: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
de80: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d  xUpDllFileName(M
de90: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
dea0: 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a  baseDirectory,..
deb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
dec0: 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d  leNameOnly));...
ded0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46  .          if (F
dee0: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
def0: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
df00: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
df10: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
df20: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
df30: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
df40: 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
df50: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69  r architecture i
df60: 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d  s null, use the.
df70: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
df80: 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20      default...  
df90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
dfa0: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
dfb0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
dfc0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
dfd0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
dfe0: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
dff0: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
e000: 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
e010: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
e020: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
e030: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
e040: 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73  query the proces
e050: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
e060: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
e070: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
e080: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
e090: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
e0a0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
e0b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
e0c0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
e0d0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
e0e0: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
e0f0: 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
e100: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
e110: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
e120: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
e130: 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69       library usi
e140: 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
e150: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
e160: 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
e170: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  /..          fil
e180: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
e190: 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
e1a0: 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62 65 43  mbinePath(MaybeC
e1b0: 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20  ombinePath(..   
e1c0: 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
e1d0: 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73  irectory, proces
e1e0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
e1f0: 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29  , fileNameOnly))
e200: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
e210: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
e220: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c  NOTE: If the fil
e230: 65 20 6e 61 6d 65 20 62 61 73 65 64 20 6f 6e 20  e name based on 
e240: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
e250: 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 0d  chitecture name.
e260: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73  .          // is
e270: 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74 72 79 20   not found, try 
e280: 75 73 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69  using the associ
e290: 61 74 65 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61  ated platform na
e2a0: 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
e2b0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
e2c0: 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69  (!File.Exists(fi
e2d0: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
e2e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e2f0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
e300: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
e310: 41 74 74 65 6d 70 74 20 74 6f 20 74 72 61 6e 73  Attempt to trans
e320: 6c 61 74 65 20 74 68 65 20 70 72 6f 63 65 73 73  late the process
e330: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
e340: 74 6f 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20  to a..          
e350: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61      //       pla
e360: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
e370: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
e380: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
e390: 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  ing platformName
e3a0: 20 3d 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61   = GetPlatformNa
e3b0: 6d 65 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  me(processorArch
e3c0: 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20  itecture);....  
e3d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
e3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e3f0: 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
e400: 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c 61 74 65  led to translate
e410: 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   the platform na
e420: 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  me, stop now... 
e430: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
e440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
e450: 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20  f (platformName 
e460: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
e470: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
e480: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
e490: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
e4b0: 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
e4c0: 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
e4d0: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
e4e0: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
e4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
e500: 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73        library us
e510: 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ing the platform
e520: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
e530: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
e540: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
e550: 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e   = FixUpDllFileN
e560: 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  ame(MaybeCombine
e570: 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Path(MaybeCombin
e580: 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  ePath(..        
e590: 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
e5a0: 72 65 63 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72  rectory, platfor
e5b0: 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e 61 6d 65  mName), fileName
e5c0: 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
e5d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
e5e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
e5f0: 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20  TE: If the file 
e600: 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20  does not exist, 
e610: 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f 20 6c  skip trying to l
e620: 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20 20 20  oad it...       
e630: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
e640: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
e650: 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
e660: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
e670: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
e680: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
e690: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e6a0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
e6b0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
e6c0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50  CT_20 && TRACE_P
e6d0: 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20  RELOAD..        
e6e0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
e6f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e720: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
e730: 77 20 65 78 61 63 74 6c 79 20 77 68 65 72 65 20  w exactly where 
e740: 77 65 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f  we are trying to
e750: 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
e760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e770: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
e780: 69 74 65 20 6c 69 62 72 61 72 79 20 66 72 6f 6d  ite library from
e790: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e7a0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
e7b0: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
e7c0: 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
e7d0: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
e7e0: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
e7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
e800: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
e810: 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
e820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e830: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
e840: 20 70 72 65 2d 6c 6f 61 64 65 72 20 69 73 20 74   pre-loader is t
e850: 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61  rying to load na
e860: 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  tive " +..      
e870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e880: 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20  "SQLite library 
e890: 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c  \"{0}\"...", fil
e8a0: 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f  eName)); /* thro
e8b0: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
e8c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
e8d0: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
e8e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
e8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
e900: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
e910: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e920: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
e930: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e940: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
e950: 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f  E: Attempt to lo
e960: 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  ad the native li
e970: 62 72 61 72 79 2e 20 20 54 68 69 73 20 77 69 6c  brary.  This wil
e980: 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20  l either..      
e990: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
e9a0: 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69 64 20   return a valid 
e9b0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
e9c0: 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e 74  ndle, return Int
e9d0: 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20  Ptr.Zero,..     
e9e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
e9f0: 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20 65 78    or throw an ex
ea00: 63 65 70 74 69 6f 6e 2e 20 20 54 68 69 73 20 6d  ception.  This m
ea10: 75 73 74 20 75 73 65 20 74 68 65 20 61 70 70 72  ust use the appr
ea20: 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 20  opriate..       
ea30: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
ea40: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20  P/Invoke method 
ea50: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
ea60: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
ea70: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ea80: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
ea90: 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46     nativeModuleF
eaa0: 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61  ileName = fileNa
eab0: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
eac0: 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48     nativeModuleH
ead0: 61 6e 64 6c 65 20 3d 20 4e 61 74 69 76 65 4c 69  andle = NativeLi
eae0: 62 72 61 72 79 48 65 6c 70 65 72 2e 4c 6f 61 64  braryHelper.Load
eaf0: 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61 6d 65  Library(fileName
eb00: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
eb10: 20 20 20 20 72 65 74 75 72 6e 20 28 6e 61 74 69      return (nati
eb20: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21  veModuleHandle !
eb30: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
eb40: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
eb50: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
eb60: 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
eb70: 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  AD..          ca
eb80: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
eb90: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
eba0: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
ebb0: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
ebc0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
ebd0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
ebe0: 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
ebf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ec00: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
ec10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ec20: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
ec30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ec40: 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72   NOTE: First, gr
ec50: 61 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33  ab the last Win3
ec60: 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d  2 error number..
ec70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ec80: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ec90: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73           int las
eca0: 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c  tError = Marshal
ecb0: 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72  .GetLastWin32Err
ecc0: 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  or(); /* throw *
ecd0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
ece0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
ecf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
ed00: 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65  NOTE: Show where
ed10: 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f   we failed to lo
ed20: 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ad the native SQ
ed30: 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Lite..          
ed40: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
ed50: 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 61 6c   library from al
ed60: 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57 69 6e  ong with the Win
ed70: 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e  32 error code an
ed80: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
ed90: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78       //       ex
eda0: 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74  ception informat
edb0: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ion...          
edc0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
edd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
ede0: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
edf0: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
ee00: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee20: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
ee30: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
ee40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee50: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
ee60: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
ee70: 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 6e 61  ailed to load na
ee80: 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  tive " +..      
ee90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eea0: 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20  "SQLite library 
eeb0: 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c 61 73 74  \"{0}\" (getLast
eec0: 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20 7b 32  Error = {1}): {2
eed0: 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
eee0: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
eef0: 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72 2c 20  ame, lastError, 
ef00: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
ef10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ef20: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
ef30: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
ef40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ef50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
ef60: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
ef70: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
ef80: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
ef90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
efa0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
efb0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e    }..#endif..#en
efc0: 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  dif..      #endr
efd0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
efe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f020: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
f030: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f040: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 2f  FRAMEWORK..    /
f050: 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
f060: 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  On the .NET Comp
f070: 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 74  act Framework, t
f080: 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65 72 6f  he native intero
f090: 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73 74 0d  p assembly must.
f0a0: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 65  .    //       be
f0b0: 20 75 73 65 64 20 62 65 63 61 75 73 65 20 69 74   used because it
f0c0: 20 70 72 6f 76 69 64 65 73 20 73 65 76 65 72 61   provides severa
f0d0: 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20 74 6f  l workarounds to
f0e0: 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d 0a 20   .NET Compact.. 
f0f0: 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72 61 6d     //       Fram
f100: 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69 6f 6e  ework limitation
f110: 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f 72 20  s important for 
f120: 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69 6f 6e  proper operation
f130: 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a 20 20   of the core..  
f140: 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73 74 65    //       Syste
f150: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 66 75  m.Data.SQLite fu
f160: 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65 2e 67  nctionality (e.g
f170: 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74 6f 20  . being able to 
f180: 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20 20 20  bind..    //    
f190: 20 20 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e     parameters an
f1a0: 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20  d handle column 
f1b0: 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65 73 20  values of types 
f1c0: 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62 6c 65  Int64 and Double
f1d0: 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  )...    //..    
f1e0: 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73  internal const s
f1f0: 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c  tring SQLITE_DLL
f200: 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72   = "SQLite.Inter
f210: 6f 70 2e 31 30 33 2e 64 6c 6c 22 3b 0d 0a 23 65  op.103.dll";..#e
f220: 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  lif SQLITE_STAND
f230: 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ARD..    //..   
f240: 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
f250: 69 73 65 2c 20 69 66 20 74 68 65 20 73 74 61 6e  ise, if the stan
f260: 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72  dard SQLite libr
f270: 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 20  ary is enabled, 
f280: 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d  use it...    //.
f290: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
f2a0: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
f2b0: 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33  E_DLL = "sqlite3
f2c0: 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f 49 4e  ";..#elif USE_IN
f2d0: 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20 20 2f  TEROP_DLL..    /
f2e0: 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
f2f0: 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68  Otherwise, if th
f300: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
f310: 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
f320: 20 69 73 20 65 6e 61 62 6c 65 64 2c 0d 0a 20 20   is enabled,..  
f330: 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 69    //       use i
f340: 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  t...    //..    
f350: 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73  internal const s
f360: 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c  tring SQLITE_DLL
f370: 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72   = "SQLite.Inter
f380: 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d  op.dll";..#else.
f390: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
f3a0: 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c 79 2c 20 61  NOTE: Finally, a
f3b0: 73 73 75 6d 65 20 74 68 61 74 20 74 68 65 20 6d  ssume that the m
f3c0: 69 78 65 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62  ixed-mode assemb
f3d0: 6c 79 20 69 73 20 62 65 69 6e 67 20 75 73 65 64  ly is being used
f3e0: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
f3f0: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74  nternal const st
f400: 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20  ring SQLITE_DLL 
f410: 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  = "System.Data.S
f420: 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e  QLite.dll";..#en
f430: 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68  dif....    // Th
f440: 69 73 20 73 65 63 74 69 6f 6e 20 75 73 65 73 20  is section uses 
f450: 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20 74 68  interop calls th
f460: 61 74 20 61 6c 73 6f 20 66 65 74 63 68 20 74 65  at also fetch te
f470: 78 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74  xt length to opt
f480: 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e  imize conversion
f490: 2e 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e 20 75  ...    // When u
f4a0: 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72  sing the standar
f4b0: 64 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65  d dll, we can re
f4c0: 70 6c 61 63 65 20 74 68 65 73 65 20 63 61 6c 6c  place these call
f4d0: 73 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71  s with normal sq
f4e0: 6c 69 74 65 20 63 61 6c 6c 73 20 61 6e 64 0d 0a  lite calls and..
f4f0: 20 20 20 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69      // do unopti
f500: 6d 69 7a 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e  mized conversion
f510: 73 20 69 6e 73 74 65 61 64 20 61 66 74 65 72 77  s instead afterw
f520: 61 72 64 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  ards..    #regio
f530: 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20  n interop added 
f540: 74 65 78 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73  textlength calls
f550: 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f  ....#if !SQLITE_
f560: 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
f570: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f580: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
f590: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f5a0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
f5b0: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
f5c0: 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  r_name_interop(I
f5d0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
f5e0: 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
f5f0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
f600: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f610: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
f620: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f630: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
f640: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
f650: 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
f660: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
f670: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
f680: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
f690: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f6a0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f6b0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
f6c0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
f6d0: 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
f6e0: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
f6f0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
f700: 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
f710: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
f720: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f730: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f740: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
f750: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
f760: 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74 65 72  n_decltype_inter
f770: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
f780: 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
f790: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
f7a0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f7b0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
f7c0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f7d0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
f7e0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79  e3_column_declty
f7f0: 70 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  pe16_interop(Int
f800: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
f810: 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
f820: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
f830: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f840: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
f850: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
f860: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
f870: 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  umn_name_interop
f880: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
f890: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
f8a0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
f8b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f8c0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
f8d0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f8e0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
f8f0: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69  _column_name16_i
f900: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
f910: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
f920: 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
f930: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f940: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
f950: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
f960: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
f970: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
f980: 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  igin_name_intero
f990: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
f9a0: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
f9b0: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
f9c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f9d0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
f9e0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f9f0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
fa00: 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f  3_column_origin_
fa10: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
fa20: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
fa30: 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
fa40: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
fa50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fa60: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
fa70: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
fa80: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
fa90: 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
faa0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
fab0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
fac0: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
fad0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
fae0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
faf0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
fb00: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
fb10: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
fb20: 74 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74  table_name16_int
fb30: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
fb40: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
fb50: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
fb60: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
fb70: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
fb80: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
fb90: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
fba0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
fbb0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
fbc0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
fbd0: 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
fbe0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
fbf0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
fc00: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
fc10: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
fc20: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
fc30: 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49  text16_interop(I
fc40: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
fc50: 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
fc60: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
fc70: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fc80: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
fc90: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
fca0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65  IntPtr sqlite3_e
fcb0: 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e  rrmsg_interop(In
fcc0: 74 50 74 72 20 64 62 2c 20 72 65 66 20 69 6e 74  tPtr db, ref int
fcd0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
fce0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
fcf0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
fd00: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
fd10: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
fd20: 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
fd30: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
fd40: 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c   db, IntPtr pSql
fd50: 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65  , int nBytes, re
fd60: 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72  f IntPtr stmt, r
fd70: 65 66 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d  ef IntPtr ptrRem
fd80: 61 69 6e 2c 20 72 65 66 20 69 6e 74 20 6e 52 65  ain, ref int nRe
fd90: 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  main);....    [D
fda0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
fdb0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
fdc0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
fdd0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
fde0: 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f  e sqlite3_table_
fdf0: 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f  column_metadata_
fe00: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
fe10: 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
fe20: 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
fe30: 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
fe40: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
fe50: 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49 6e  DataType, ref In
fe60: 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
fe70: 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   ref int notNull
fe80: 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61 72  , ref int primar
fe90: 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61 75  yKey, ref int au
fea0: 74 6f 49 6e 63 2c 20 72 65 66 20 69 6e 74 20 64  toInc, ref int d
feb0: 74 4c 65 6e 2c 20 72 65 66 20 69 6e 74 20 63 73  tLen, ref int cs
fec0: 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  Len);....    [Dl
fed0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
fee0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
fef0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ff00: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
ff10: 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65 72  value_text_inter
ff20: 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
ff30: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
ff40: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ff50: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
ff60: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ff70: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
ff80: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
ff90: 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
ffa0: 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29   p, ref int len)
ffb0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
ffc0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ffd0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ffe0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
fff0: 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f   sqlite3_malloc_
10000 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  size_interop(Int
10010 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 49  Ptr p);....#if I
10020 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20  NTEROP_LOG..    
10030 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10040 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
10050 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10060 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
10070 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ode sqlite3_conf
10080 69 67 5f 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29  ig_log_interop()
10090 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  ;..#endif..#endi
100a0 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54  f..// !SQLITE_ST
100b0 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65  ANDARD....    #e
100c0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
100d0 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f  // These functio
100e0 6e 73 20 61 64 64 20 65 78 69 73 74 69 6e 67 20  ns add existing 
100f0 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e  functionality on
10100 20 74 6f 70 20 6f 66 20 53 51 4c 69 74 65 20 61   top of SQLite a
10110 6e 64 20 72 65 71 75 69 72 65 20 61 20 6c 69 74  nd require a lit
10120 74 6c 65 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20  tle effort to.. 
10130 20 20 20 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e     // get workin
10140 67 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65  g when using the
10150 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
10160 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 23   library...    #
10170 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61  region interop a
10180 64 64 65 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69  dded functionali
10190 74 79 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54  ty....#if !SQLIT
101a0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
101b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
101c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
101d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
101e0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74  xtern IntPtr int
101f0 65 72 6f 70 5f 6c 69 62 76 65 72 73 69 6f 6e 28  erop_libversion(
10200 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
10210 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
10220 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
10230 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
10240 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 73 6f 75  tPtr interop_sou
10250 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  rceid();....    
10260 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10270 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
10280 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10290 65 72 6e 20 69 6e 74 20 69 6e 74 65 72 6f 70 5f  ern int interop_
102a0 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
102b0 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61  ed(IntPtr zOptNa
102c0 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  me);....    [Dll
102d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
102e0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
102f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10300 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 63  IntPtr interop_c
10310 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
10320 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20  (int N);....    
10330 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10340 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
10350 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10360 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
10370 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
10380 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
10390 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c   db);....    [Dl
103a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
103b0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
103c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
103d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
103e0 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
103f0 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70  function_interop
10400 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
10410 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  [] strName, int 
10420 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65  nArgs, int nType
10430 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
10440 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
10450 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c  func, SQLiteCall
10460 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69  back fstep, SQLi
10470 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20  teFinalCallback 
10480 66 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64  ffinal, int need
10490 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20  CollSeq);....   
104a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
104b0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
104c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
104d0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
104e0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e  Code sqlite3_fin
104f0 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e  alize_interop(In
10500 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
10510 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10520 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
10530 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10540 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
10550 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
10560 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74  ackup_finish_int
10570 65 72 6f 70 28 49 6e 74 50 74 72 20 62 61 63 6b  erop(IntPtr back
10580 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  up);....    [Dll
10590 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
105a0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
105b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
105c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
105d0 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f  sqlite3_blob_clo
105e0 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  se_interop(IntPt
105f0 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 20 20 20 20  r blob);....    
10600 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10610 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
10620 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10630 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
10640 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
10650 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20  _interop(byte[] 
10660 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79  utf8Filename, by
10670 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51  te[] vfsName, SQ
10680 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
10690 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65 78 74  m flags, int ext
106a0 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74 50 74  Funcs, ref IntPt
106b0 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  r db);....    [D
106c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
106d0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
106e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
106f0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
10700 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  e sqlite3_open16
10710 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20  _interop(byte[] 
10720 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79  utf8Filename, by
10730 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51  te[] vfsName, SQ
10740 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
10750 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65 78 74  m flags, int ext
10760 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74 50 74  Funcs, ref IntPt
10770 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  r db);....    [D
10780 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10790 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
107a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
107b0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
107c0 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f  e sqlite3_reset_
107d0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
107e0 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tmt);....    [Dl
107f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10800 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
10810 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10820 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
10830 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nges_interop(Int
10840 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66  Ptr db);..#endif
10850 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
10860 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
10870 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
10880 2f 20 54 68 65 20 73 74 61 6e 64 61 72 64 20 61  / The standard a
10890 70 69 20 63 61 6c 6c 20 65 71 75 69 76 61 6c 65  pi call equivale
108a0 6e 74 73 20 6f 66 20 74 68 65 20 61 62 6f 76 65  nts of the above
108b0 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a   interop calls..
108c0 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e      #region stan
108d0 64 61 72 64 20 76 65 72 73 69 6f 6e 73 20 6f 66  dard versions of
108e0 20 69 6e 74 65 72 6f 70 20 66 75 6e 63 74 69 6f   interop functio
108f0 6e 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45  ns....#if SQLITE
10900 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66  _STANDARD....#if
10910 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10920 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10930 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10940 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10950 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10960 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10970 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10980 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10990 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
109a0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
109b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
109c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
109d0 6c 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50  lite3_close(IntP
109e0 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
109f0 49 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43  INTEROP_LEGACY_C
10a00 4c 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  LOSE..#if !PLATF
10a10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10a20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10a30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10a40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10a50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10a60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10a70 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
10a80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10a90 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10aa0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10ab0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
10ac0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
10ad0 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72 20 64  lose_v2(IntPtr d
10ae0 62 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a  b); /* 3.7.14+ *
10af0 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  /..#endif....#if
10b00 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10b10 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10b20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10b30 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10b40 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10b50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10b60 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10b70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10b80 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10b90 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10ba0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
10bb0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
10bc0 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
10bd0 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ction(IntPtr db,
10be0 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c   byte[] strName,
10bf0 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20   int nArgs, int 
10c00 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76  nType, IntPtr pv
10c10 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c  User, SQLiteCall
10c20 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74  back func, SQLit
10c30 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c  eCallback fstep,
10c40 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c   SQLiteFinalCall
10c50 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d  back ffinal);...
10c60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10c70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10c80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10c90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10ca0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10cb0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10cc0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10cd0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10ce0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10cf0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10d00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10d10 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
10d20 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  e sqlite3_finali
10d30 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ze(IntPtr stmt);
10d40 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10d50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10d60 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10d70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10d80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10d90 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10da0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10db0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
10dc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10dd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
10de0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10df0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
10e00 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
10e10 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74 50 74  kup_finish(IntPt
10e20 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
10e30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10e40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10e50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10e60 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
10e70 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10e80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10e90 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10ea0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10eb0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10ec0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10ed0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
10ee0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
10ef0 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49 6e 74  qlite3_reset(Int
10f00 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
10f10 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10f20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10f30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10f40 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
10f50 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10f60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10f70 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10f80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10f90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10fa0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10fb0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
10fc0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69  ntPtr sqlite3_bi
10fd0 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d  nd_parameter_nam
10fe0 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
10ff0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
11000 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11010 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11020 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11030 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11040 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11050 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11060 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11070 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11080 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11090 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
110a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
110b0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
110c0 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
110d0 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
110e0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
110f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11100 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11110 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11120 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11130 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11140 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11150 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11160 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11170 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11180 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11190 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
111a0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
111b0 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
111c0 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
111d0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
111e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
111f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11200 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11210 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
11220 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11230 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11240 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11250 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11260 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11270 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
11280 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11290 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
112a0 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
112b0 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
112c0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
112d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
112e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
112f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11300 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11310 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11320 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11330 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11340 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11350 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11360 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11370 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
11380 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
11390 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28  lumn_decltype16(
113a0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
113b0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
113c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
113d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
113e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
113f0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11400 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11410 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11420 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11430 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11440 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11450 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11460 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
11470 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
11480 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  mn_name(IntPtr s
11490 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
114a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
114b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
114c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
114d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
114e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
114f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
11500 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11510 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11520 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11530 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11540 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11550 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
11560 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
11570 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
11580 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
11590 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
115a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
115b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
115c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
115d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
115e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
115f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11600 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11610 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11620 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11630 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
11640 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
11650 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
11660 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
11670 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
11680 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11690 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
116a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
116b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
116c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
116d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
116e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
116f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11700 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11710 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11720 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
11730 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
11740 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31  umn_origin_name1
11750 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
11760 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
11770 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11780 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11790 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
117a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
117b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
117c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
117d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
117e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
117f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11800 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11810 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
11820 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
11830 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28  lumn_table_name(
11840 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
11850 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
11860 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11870 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11880 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11890 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
118a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
118b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
118c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
118d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
118e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
118f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11900 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
11910 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
11920 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28  mn_table_name16(
11930 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
11940 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
11950 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11960 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11970 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11980 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11990 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
119a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
119b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
119c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
119d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
119e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
119f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
11a00 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
11a10 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73  mn_text(IntPtr s
11a20 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
11a30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11a40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11a50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11a60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
11a70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11a80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
11a90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11aa0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11ab0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11ac0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11ad0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11ae0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
11af0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31  te3_column_text1
11b00 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
11b10 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
11b20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11b30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11b40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11b50 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11b60 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11b70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11b80 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11b90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11ba0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11bb0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11bc0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
11bd0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
11be0 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62 29 3b  rmsg(IntPtr db);
11bf0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11c00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11c10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11c20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
11c30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11c40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
11c50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11c60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11c70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11c80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11c90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11ca0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
11cb0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65  Code sqlite3_pre
11cc0 70 61 72 65 28 49 6e 74 50 74 72 20 64 62 2c 20  pare(IntPtr db, 
11cd0 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
11ce0 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74   nBytes, ref Int
11cf0 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e  Ptr stmt, ref In
11d00 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
11d10 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52 45 50  ....#if USE_PREP
11d20 41 52 45 5f 56 32 0d 0a 23 69 66 20 21 50 4c 41  ARE_V2..#if !PLA
11d30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11d40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11d50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11d60 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11d70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11d80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11d90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11da0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11db0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
11dc0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11dd0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
11de0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
11df0 5f 70 72 65 70 61 72 65 5f 76 32 28 49 6e 74 50  _prepare_v2(IntP
11e00 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
11e10 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
11e20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
11e30 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
11e40 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d  emain);..#endif.
11e50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11e60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11e70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11e80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11e90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
11ea0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11eb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11ec0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
11ed0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11ee0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11ef0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11f00 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
11f10 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  ode sqlite3_tabl
11f20 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74  e_column_metadat
11f30 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  a(IntPtr db, byt
11f40 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
11f50 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
11f60 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20  [] colName, ref 
11f70 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79  IntPtr ptrDataTy
11f80 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  pe, ref IntPtr p
11f90 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69  trCollSeq, ref i
11fa0 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20  nt notNull, ref 
11fb0 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  int primaryKey, 
11fc0 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 29  ref int autoInc)
11fd0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11fe0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11ff0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12000 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12010 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12020 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12030 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12040 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12050 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12060 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12070 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12080 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
12090 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28  ite3_value_text(
120a0 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
120b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
120c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
120d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
120e0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
120f0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12100 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12110 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12120 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12130 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
12140 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
12150 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
12160 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
12170 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74 50 74  lue_text16(IntPt
12180 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d  r p);....#endif.
12190 0a 20 20 20 20 2f 2f 20 53 51 4c 49 54 45 5f 53  .    // SQLITE_S
121a0 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
121b0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
121c0 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69   // These functi
121d0 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d 20 61  ons are custom a
121e0 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75 69 76  nd have no equiv
121f0 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6c  alent standard l
12200 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a  ibrary method...
12210 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68      // All of th
12220 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74 6f 20  em are "nice to 
12230 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e  haves" and not n
12240 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65 65 64  ecessarily "need
12250 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20 20 20   to haves"...   
12260 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69   #region no equi
12270 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20  valent standard 
12280 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53  method....#if !S
12290 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
122a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
122b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
122c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
122d0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
122e0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
122f0 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70  _collseq_interop
12300 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
12310 20 72 65 66 20 69 6e 74 20 74 79 70 65 2c 20 72   ref int type, r
12320 65 66 20 69 6e 74 20 65 6e 63 2c 20 72 65 66 20  ef int enc, ref 
12330 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
12340 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12350 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
12360 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12370 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
12380 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d  _context_collcom
12390 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  pare_interop(Int
123a0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
123b0 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65  e[] p1, int p1le
123c0 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e  n, byte[] p2, in
123d0 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t p2len);....   
123e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
123f0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
12400 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12410 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
12420 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 75 72  Code sqlite3_cur
12430 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f  sor_rowid_intero
12440 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
12450 6e 74 20 63 75 72 73 6f 72 2c 20 72 65 66 20 6c  nt cursor, ref l
12460 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20  ong rowid);.... 
12470 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12480 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
12490 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
124a0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
124b0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 69  orCode sqlite3_i
124c0 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f  ndex_column_info
124d0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
124e0 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74 61 6c  db, byte[] catal
124f0 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65 78  og, byte[] Index
12500 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c  Name, byte[] Col
12510 75 6d 6e 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74  umnName, ref int
12520 20 73 6f 72 74 4f 72 64 65 72 2c 20 72 65 66 20   sortOrder, ref 
12530 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 72 65 66  int onError, ref
12540 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f   IntPtr Collatio
12550 6e 2c 20 72 65 66 20 69 6e 74 20 63 6f 6c 6c 6c  n, ref int colll
12560 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
12570 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12580 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
12590 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
125a0 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  int sqlite3_tabl
125b0 65 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70  e_cursor_interop
125c0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
125d0 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52  t db, int tableR
125e0 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e  ootPage);....#en
125f0 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f  dif..// !SQLITE_
12600 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
12610 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
12620 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50    // Standard AP
12630 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61  I calls global a
12640 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20  cross versions. 
12650 20 54 68 65 72 65 20 61 72 65 20 61 20 66 65 77   There are a few
12660 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e   instances of in
12670 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20  terop calls..   
12680 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e   // scattered in
12690 20 68 65 72 65 2c 20 62 75 74 20 74 68 65 79 20   here, but they 
126a0 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20  are only active 
126b0 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  when PLATFORM_CO
126c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69  MPACTFRAMEWORK i
126d0 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20  s declared...   
126e0 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72   #region standar
126f0 64 20 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c  d sqlite api cal
12700 6c 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  ls....#if !PLATF
12710 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12720 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12730 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12740 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12750 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12760 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12770 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12780 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12790 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
127a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
127b0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
127c0 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
127d0 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
127e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
127f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12800 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12810 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12820 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12830 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12840 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12850 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12860 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12870 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12880 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
12890 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e  te3_libversion_n
128a0 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20  umber();....#if 
128b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
128c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
128d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
128e0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
128f0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12900 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12910 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12920 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12930 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12940 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12950 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
12960 50 74 72 20 73 71 6c 69 74 65 33 5f 73 6f 75 72  Ptr sqlite3_sour
12970 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  ceid();....#if !
12980 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12990 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
129a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
129b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
129c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
129d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
129e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
129f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12a00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
12a10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12a20 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
12a30 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
12a40 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74  ption_used(IntPt
12a50 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a  r zOptName);....
12a60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12a70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12a80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12a90 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12aa0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12ab0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12ac0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12ad0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12ae0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12af0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12b00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12b10 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
12b20 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65  compileoption_ge
12b30 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66  t(int N);....#if
12b40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12b50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12b60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12b70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12b80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12b90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12ba0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
12bb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12bc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
12bd0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12be0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
12bf0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
12c00 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61  lite3_enable_sha
12c10 72 65 64 5f 63 61 63 68 65 28 0d 0a 20 20 20 20  red_cache(..    
12c20 20 20 20 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b      int enable);
12c30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12c40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12c50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12c60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12c70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12c80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12c90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12ca0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12cb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12cc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12cd0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12ce0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
12cf0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61  Code sqlite3_ena
12d00 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
12d10 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  on(..        Int
12d20 50 74 72 20 64 62 2c 20 69 6e 74 20 65 6e 61 62  Ptr db, int enab
12d30 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  le);....#if !PLA
12d40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12d50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12d60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12d70 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12d80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12d90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12da0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12db0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12dc0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12dd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12de0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
12df0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
12e00 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
12e10 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
12e20 20 64 62 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65   db, byte[] file
12e30 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f  Name, byte[] pro
12e40 63 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  cName, ref IntPt
12e50 72 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69  r pError);....#i
12e60 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12e70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12e80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12e90 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12ea0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12eb0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12ec0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12ed0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12ee0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
12ef0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
12f00 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
12f10 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
12f20 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61 64 5f  qlite3_overload_
12f30 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20  function(IntPtr 
12f40 64 62 2c 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65  db, IntPtr zName
12f50 2c 20 69 6e 74 20 6e 41 72 67 73 29 3b 0d 0a 0d  , int nArgs);...
12f60 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a 23 69  .#if WINDOWS..#i
12f70 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12f80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12f90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12fa0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12fb0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12fc0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12fd0 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
12fe0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
12ff0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13000 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13010 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
13020 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
13030 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
13040 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
13050 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33  he "sqlite3_win3
13060 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 22  2_set_directory"
13070 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
13080 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73  rary function is
13090 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f  ..    //       o
130a0 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e  nly supported on
130b0 20 57 69 6e 64 6f 77 73 2e 0d 0a 20 20 20 20 2f   Windows...    /
130c0 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
130d0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
130e0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
130f0 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f  lite3_win32_set_
13100 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74 20 74  directory(uint t
13110 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61 6c 75  ype, string valu
13120 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 44 45 42 55  e);....#if !DEBU
13130 47 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 75 6c  G // NOTE: Shoul
13140 64 20 62 65 20 22 57 49 4e 33 32 48 45 41 50 20  d be "WIN32HEAP 
13150 26 26 20 21 4d 45 4d 44 45 42 55 47 22 0d 0a 23  && !MEMDEBUG"..#
13160 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13170 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13180 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13190 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
131a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
131b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
131c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
131d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
131e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
131f0 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  dif..    //..   
13200 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73   // NOTE: The "s
13210 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73  qlite3_win32_res
13220 65 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20  et_heap" SQLite 
13230 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e  core library fun
13240 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f  ction is..    //
13250 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70         only supp
13260 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73  orted on Windows
13270 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20   when the Win32 
13280 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72  native allocator
13290 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20   is in..    //  
132a0 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62       use (i.e. b
132b0 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52  y default, in "R
132c0 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f  elease" builds o
132d0 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
132e0 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20  Lite..    //    
132f0 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65     only).  By de
13300 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67  fault, in "Debug
13310 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
13320 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20  em.Data.SQLite, 
13330 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
13340 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63    MEMDEBUG alloc
13350 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20  ator is used... 
13360 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
13370 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13380 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
13390 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f  e sqlite3_win32_
133a0 72 65 73 65 74 5f 68 65 61 70 28 29 3b 0d 0a 0d  reset_heap();...
133b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
133c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
133d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
133e0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
133f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13400 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13410 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13420 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13430 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13440 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
13450 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
13460 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63  "sqlite3_win32_c
13470 6f 6d 70 61 63 74 5f 68 65 61 70 22 20 53 51 4c  ompact_heap" SQL
13480 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
13490 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20   function is..  
134a0 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20    //       only 
134b0 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e  supported on Win
134c0 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20 57 69  dows when the Wi
134d0 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63  n32 native alloc
134e0 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20  ator is in..    
134f0 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28 69 2e  //       use (i.
13500 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69  e. by default, i
13510 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c  n "Release" buil
13520 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
13530 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f  a.SQLite..    //
13540 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42         only).  B
13550 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44  y default, in "D
13560 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20  ebug" builds of 
13570 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
13580 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  te, the..    // 
13590 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61        MEMDEBUG a
135a0 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64  llocator is used
135b0 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
135c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
135d0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
135e0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69  rCode sqlite3_wi
135f0 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70  n32_compact_heap
13600 28 72 65 66 20 75 69 6e 74 20 6c 61 72 67 65 73  (ref uint larges
13610 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e  t);..#endif..#en
13620 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
13630 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13640 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13650 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13660 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13670 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13680 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13690 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
136a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
136b0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
136c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
136d0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
136e0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e  qlite3_malloc(in
136f0 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  t n);....#if !PL
13700 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13710 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13720 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13730 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13740 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13750 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13760 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13770 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13780 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13790 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
137a0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
137b0 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
137c0 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74 20 6e  (IntPtr p, int n
137d0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
137e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
137f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13800 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13810 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13820 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13830 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13840 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13850 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13860 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13870 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13880 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
13890 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72 20  te3_free(IntPtr 
138a0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
138b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
138c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
138d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
138e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
138f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13900 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13910 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
13920 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13930 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13940 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13950 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
13960 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
13970 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75  open_v2(byte[] u
13980 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 72 65 66  tf8Filename, ref
13990 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69   IntPtr db, SQLi
139a0 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20  teOpenFlagsEnum 
139b0 66 6c 61 67 73 2c 20 62 79 74 65 5b 5d 20 76 66  flags, byte[] vf
139c0 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  sName);....#if !
139d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
139e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
139f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13a00 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13a10 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13a20 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13a30 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
13a40 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
13a50 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13a60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13a70 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
13a80 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
13a90 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13aa0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13ab0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
13ac0 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  e sqlite3_open16
13ad0 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
13ae0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29  , ref IntPtr db)
13af0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
13b00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13b10 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13b20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13b30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13b40 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13b50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13b60 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13b70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13b80 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13b90 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13ba0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
13bb0 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74  e3_interrupt(Int
13bc0 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
13bd0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13be0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13bf0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13c00 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13c10 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13c20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13c30 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
13c40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13c50 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61   long sqlite3_la
13c60 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
13c70 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e  IntPtr db);..#en
13c80 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
13c90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13ca0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13cb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13cc0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13cd0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13ce0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13cf0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
13d00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13d10 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13d20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13d30 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
13d40 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50  te3_changes(IntP
13d50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
13d60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13d70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13d80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13d90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13da0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13db0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13dc0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
13dd0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13de0 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
13df0 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e  ory_used();..#en
13e00 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
13e10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13e20 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13e30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13e40 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13e50 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13e60 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13e70 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13e80 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
13e90 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
13ea0 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72 65  highwater(int re
13eb0 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69  setFlag);..#endi
13ec0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
13ed0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13ee0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13ef0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13f00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13f10 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13f20 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13f30 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13f40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13f50 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13f60 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13f70 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
13f80 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68  rCode sqlite3_sh
13f90 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66  utdown();....#if
13fa0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
13fb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13fc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13fd0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13fe0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13ff0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14000 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14010 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14020 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14030 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14040 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
14050 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
14060 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
14070 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  ut(IntPtr db, in
14080 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  t ms);....#if !P
14090 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
140a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
140b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
140c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
140d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
140e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
140f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14100 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14110 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14120 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14130 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
14140 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
14150 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67  e3_clear_binding
14160 73 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  s(IntPtr stmt);.
14170 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14180 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14190 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
141a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
141b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
141c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
141d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
141e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
141f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14200 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
14210 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14220 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
14230 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
14240 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d  _blob(IntPtr stm
14250 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79  t, int index, By
14260 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
14270 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54  nSize, IntPtr nT
14280 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69  ransient);....#i
14290 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
142a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
142b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
142c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
142d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
142e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
142f0 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
14300 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14310 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
14320 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
14330 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
14340 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64  mt, int index, d
14350 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
14360 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
14370 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14380 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14390 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
143a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
143b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
143c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
143d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
143e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
143f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14400 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14410 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
14420 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
14430 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74  3_bind_int(IntPt
14440 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14450 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  x, int value);..
14460 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
14470 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
14480 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
14490 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
144a0 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61  ; however, it ha
144b0 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  s the..    //   
144c0 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65      correct type
144d0 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61   signature for a
144e0 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62  n unsigned (32-b
144f0 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
14500 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
14510 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14520 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14530 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14540 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
14550 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
14560 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14570 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14580 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14590 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
145a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
145b0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
145c0 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
145d0 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  t")]..#endif..  
145e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
145f0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
14600 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
14610 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74  _bind_uint(IntPt
14620 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14630 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d  x, uint value);.
14640 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14650 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14660 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
14670 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14680 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14690 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
146a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
146b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
146c0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
146d0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
146e0 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74  bind_int64(IntPt
146f0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14700 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  x, long value);.
14710 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
14720 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
14730 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74  This really just
14740 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f   calls "sqlite3_
14750 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77  bind_int64"; how
14760 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65  ever, it has the
14770 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63  ..    //       c
14780 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e  orrect type sign
14790 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73  ature for an uns
147a0 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62  igned long (64-b
147b0 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
147c0 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
147d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
147e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
147f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14800 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
14810 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
14820 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  4", CallingConve
14830 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14840 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14850 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14860 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
14870 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
14880 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
14890 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
148a0 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20  nt index, ulong 
148b0 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
148c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
148d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
148e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
148f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
14900 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
14910 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
14920 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
14930 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
14940 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14950 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
14960 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14970 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
14980 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
14990 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d  _null(IntPtr stm
149a0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
149b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
149c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
149d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
149e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
149f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14a00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14a10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14a20 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14a30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14a40 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14a50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14a60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
14a70 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
14a80 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74  text(IntPtr stmt
14a90 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74  , int index, byt
14aa0 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
14ab0 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
14ac0 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
14ad0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14ae0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14af0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14b00 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14b10 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14b20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14b30 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
14b40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14b50 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
14b60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14b70 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
14b80 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
14b90 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e  rameter_count(In
14ba0 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
14bb0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14bc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14bd0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14be0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
14bf0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
14c00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14c10 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
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 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14c40 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14c50 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14c60 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
14c70 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78  _parameter_index
14c80 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79  (IntPtr stmt, by
14c90 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a  te[] strName);..
14ca0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14cb0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14cc0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14cd0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14ce0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14cf0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14d00 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14d10 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14d20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14d30 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14d40 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14d50 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
14d60 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50  olumn_count(IntP
14d70 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
14d80 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14d90 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14da0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14db0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14dc0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14dd0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14de0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
14df0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14e00 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
14e10 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
14e20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
14e30 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
14e40 6c 69 74 65 33 5f 73 74 65 70 28 49 6e 74 50 74  lite3_step(IntPt
14e50 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
14e60 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14e70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14e80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14e90 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14ea0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14eb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14ec0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
14ed0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14ee0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
14ef0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14f00 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
14f10 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
14f20 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 73 74  adonly(IntPtr st
14f30 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a  mt); /* 3.7.4+ *
14f40 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
14f50 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14f60 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14f70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14f80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14f90 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14fa0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
14fb0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14fc0 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
14fd0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
14fe0 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
14ff0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
15000 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
15010 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15020 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15030 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15040 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
15050 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15060 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15070 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
15080 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15090 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
150a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
150b0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
150c0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
150d0 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
150e0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
150f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15100 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15110 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15120 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
15130 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
15140 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15150 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
15160 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
15170 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
15180 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e  _column_int64(In
15190 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
151a0 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
151b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
151c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
151d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
151e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
151f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15200 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15210 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15220 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15230 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15240 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15250 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15260 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
15270 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e  3_column_blob(In
15280 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
15290 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
152a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
152b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
152c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
152d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
152e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
152f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15300 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
15310 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15320 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
15330 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
15340 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
15350 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
15360 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  tes(IntPtr stmt,
15370 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
15380 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15390 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
153a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
153b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
153c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
153d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
153e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
153f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15400 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
15410 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
15420 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15430 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
15440 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50  umn_bytes16(IntP
15450 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
15460 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
15470 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15480 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15490 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
154a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
154b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
154c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
154d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
154e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
154f0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15500 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15510 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
15520 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f  inity sqlite3_co
15530 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72  lumn_type(IntPtr
15540 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
15550 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
15560 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15570 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
15580 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
15590 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
155a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
155b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
155c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
155d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
155e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
155f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15600 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
15610 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
15620 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28  reate_collation(
15630 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
15640 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
15650 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
15660 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61  ser, SQLiteColla
15670 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23  tion func);....#
15680 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15690 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
156a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
156b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
156c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
156d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
156e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
156f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15700 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
15710 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
15720 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15730 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72  int sqlite3_aggr
15740 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50  egate_count(IntP
15750 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
15760 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15770 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15780 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15790 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
157a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
157b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
157c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
157d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
157e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
157f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
15800 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15810 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
15820 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74  value_blob(IntPt
15830 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
15840 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15850 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15860 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15870 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15880 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15890 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
158a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
158b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
158c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
158d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
158e0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
158f0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
15900 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  s(IntPtr p);....
15910 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15920 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15930 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15940 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
15950 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
15960 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15970 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
15980 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15990 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
159a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
159b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
159c0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
159d0 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74  ue_bytes16(IntPt
159e0 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
159f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15a00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15a10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15a20 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15a30 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15a40 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15a50 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
15a60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f  static extern do
15a70 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  uble sqlite3_val
15a80 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72  ue_double(IntPtr
15a90 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
15aa0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15ab0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15ac0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
15ad0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
15ae0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
15af0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15b00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
15b10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15b20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
15b30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
15b40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
15b50 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
15b60 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29  ue_int(IntPtr p)
15b70 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15b80 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15b90 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15ba0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15bb0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15bc0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15bd0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
15be0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15bf0 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
15c00 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
15c10 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23  64(IntPtr p);..#
15c20 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
15c30 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15c40 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
15c50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15c60 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
15c70 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15c80 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15c90 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15ca0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15cb0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
15cc0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
15cd0 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
15ce0 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76  finity sqlite3_v
15cf0 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72  alue_type(IntPtr
15d00 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
15d10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15d20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15d30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15d40 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
15d50 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
15d60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15d70 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
15d80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
15d90 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
15da0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
15db0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
15dc0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
15dd0 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
15de0 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
15df0 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74  int nSize, IntPt
15e00 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
15e10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15e20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15e30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15e40 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15e50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15e60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15e70 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
15e80 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
15e90 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
15ea0 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
15eb0 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
15ec0 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
15ed0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
15ee0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15ef0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15f00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15f10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
15f20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
15f30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15f40 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
15f50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15f60 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
15f70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15f80 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
15f90 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
15fa0 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f  _error(IntPtr co
15fb0 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74  ntext, byte[] st
15fc0 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  rErr, int nLen);
15fd0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15fe0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15ff0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16000 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16010 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16020 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16030 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16040 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
16050 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
16060 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16070 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16080 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
16090 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63  3_result_error_c
160a0 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ode(IntPtr conte
160b0 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43  xt, SQLiteErrorC
160c0 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  ode value);....#
160d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
160e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
160f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16100 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16110 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16120 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16130 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
16140 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16150 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16160 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16170 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16180 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
16190 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67  ult_error_toobig
161a0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29  (IntPtr context)
161b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
161c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
161d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
161e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
161f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16200 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16210 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16220 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16230 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16240 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
16250 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
16260 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
16270 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
16280 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e  nomem(IntPtr con
16290 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
162a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
162b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
162c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
162d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
162e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
162f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16300 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
16310 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16320 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
16330 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16340 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
16350 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76  sqlite3_result_v
16360 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  alue(IntPtr cont
16370 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75  ext, IntPtr valu
16380 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
16390 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
163a0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
163b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
163c0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
163d0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
163e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
163f0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
16400 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16410 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
16420 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
16430 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
16440 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
16450 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74  blob(IntPtr cont
16460 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  ext, int nLen);.
16470 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16480 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16490 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
164a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
164b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
164c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
164d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
164e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
164f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
16500 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16510 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16520 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
16530 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50  _result_int(IntP
16540 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
16550 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
16560 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16570 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16580 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16590 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
165a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
165b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
165c0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
165d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
165e0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
165f0 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ult_int64(IntPtr
16600 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76   context, long v
16610 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
16620 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16630 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16640 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16650 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16660 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16670 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16680 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16690 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
166a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
166b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
166c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
166d0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
166e0 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50  result_null(IntP
166f0 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
16700 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
16710 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
16720 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16730 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
16740 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
16750 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16760 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
16770 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16780 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
16790 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
167a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
167b0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
167c0 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72  sult_text(IntPtr
167d0 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
167e0 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e   value, int nLen
167f0 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
16800 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
16810 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
16820 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
16830 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16840 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
16850 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
16860 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16870 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
16880 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16890 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
168a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
168b0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
168c0 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61   sqlite3_aggrega
168d0 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74  te_context(IntPt
168e0 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e  r context, int n
168f0 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
16900 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16910 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16920 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16930 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16940 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16950 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16960 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
16970 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
16980 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
16990 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
169a0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
169b0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
169c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
169d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
169e0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
169f0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  e sqlite3_bind_t
16a00 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ext16(IntPtr stm
16a10 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74  t, int index, st
16a20 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20  ring value, int 
16a30 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nlen, IntPtr pvR
16a40 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
16a50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16a60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16a70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16a80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
16a90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
16aa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16ab0 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
16ac0 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
16ad0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
16ae0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16af0 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
16b00 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
16b10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
16b20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
16b30 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
16b40 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28  _result_error16(
16b50 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
16b60 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
16b70 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69  int nLen);....#i
16b80 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16b90 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16ba0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16bb0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16bc0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16bd0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16be0 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
16bf0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
16c00 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
16c10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16c20 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
16c30 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
16c40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
16c50 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
16c60 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
16c70 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28  3_result_text16(
16c80 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
16c90 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
16ca0 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72  int nLen, IntPtr
16cb0 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
16cc0 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44  .#if INTEROP_COD
16cd0 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e  EC || INTEROP_IN
16ce0 43 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66 20 21  CLUDE_SEE..#if !
16cf0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16d00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16d10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16d20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16d30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16d40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16d50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16d60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16d70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
16d80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16d90 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
16da0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
16db0 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64  te3_key(IntPtr d
16dc0 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
16dd0 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23  nt keylen);....#
16de0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16df0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16e00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16e10 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
16e20 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
16e30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16e40 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
16e50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
16e60 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
16e70 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
16e80 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16e90 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16ea0 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 49 6e  sqlite3_rekey(In
16eb0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
16ec0 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
16ed0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
16ee0 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45   INTEROP_INCLUDE
16ef0 5f 5a 49 50 56 46 53 0d 0a 23 69 66 20 21 50 4c  _ZIPVFS..#if !PL
16f00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
16f10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
16f20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16f30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
16f40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
16f50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16f60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
16f70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16f80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
16f90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16fa0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a  ic extern void z
16fb0 69 70 76 66 73 49 6e 69 74 5f 76 32 28 29 3b 0d  ipvfsInit_v2();.
16fc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16fd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16fe0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
16ff0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
17000 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17010 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17020 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17030 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17040 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17050 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17060 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17070 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49  ern void zipvfsI
17080 6e 69 74 5f 76 33 28 69 6e 74 20 72 65 67 44 66  nit_v3(int regDf
17090 6c 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  lt);..#endif....
170a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
170b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
170c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
170d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
170e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
170f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17100 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
17110 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17120 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
17130 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
17140 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
17150 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70 72   void sqlite3_pr
17160 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 49  ogress_handler(I
17170 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 70  ntPtr db, int op
17180 73 2c 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73  s, SQLiteProgres
17190 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  sCallback func, 
171a0 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
171b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
171c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
171d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
171e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
171f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
17200 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
17210 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
17220 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
17230 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
17240 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
17250 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
17260 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
17270 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
17280 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  r(IntPtr db, SQL
17290 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c  iteAuthorizerCal
172a0 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
172b0 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
172c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
172d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
172e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
172f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17300 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17310 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
17320 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
17330 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
17340 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
17350 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
17360 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
17370 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75  IntPtr sqlite3_u
17380 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74  pdate_hook(IntPt
17390 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61  r db, SQLiteUpda
173a0 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
173b0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
173c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
173d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
173e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
173f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17400 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17410 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
17420 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17430 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
17440 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
17450 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
17460 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
17470 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
17480 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28  te3_commit_hook(
17490 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
174a0 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20  eCommitCallback 
174b0 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
174c0 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
174d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
174e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
174f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17500 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
17510 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
17520 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
17530 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
17540 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17550 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
17560 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17570 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
17580 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49   sqlite3_trace(I
17590 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
175a0 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75  TraceCallback fu
175b0 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
175c0 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69  r);....    // Si
175d0 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  nce sqlite3_conf
175e0 69 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  ig() takes a var
175f0 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
17600 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
17610 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
17620 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
17630 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
17640 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61 6e  alls that we wan
17650 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21  t to use...#if !
17660 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17670 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17680 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17690 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
176a0 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
176b0 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
176c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
176d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
176e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
176f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17700 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
17710 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
17720 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
17730 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
17740 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
17750 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
17760 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51  3_config_none(SQ
17770 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
17780 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  m op);....#if !P
17790 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
177a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
177b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
177c0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
177d0 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
177e0 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
177f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
17800 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
17810 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
17820 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
17830 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
17840 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
17850 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
17860 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
17870 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
17880 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
17890 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69  _config_int(SQLi
178a0 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
178b0 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  op, int value);.
178c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
178d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
178e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
178f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
17900 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
17910 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
17920 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17930 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17940 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17950 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17960 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
17970 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
17980 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
17990 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
179a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
179b0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
179c0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
179d0 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66 69  _log(SQLiteConfi
179e0 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c  gOpsEnum op, SQL
179f0 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66  iteLogCallback f
17a00 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
17a10 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
17a20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
17a30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
17a40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17a50 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
17a60 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66  "sqlite3_db_conf
17a70 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
17a80 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
17a90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
17aa0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
17ab0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17ac0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
17ad0 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63   = "sqlite3_db_c
17ae0 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66  onfig")]..#endif
17af0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17b00 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
17b10 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
17b20 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 69  ite3_db_config_i
17b30 6e 74 5f 72 65 66 69 6e 74 28 49 6e 74 50 74 72  nt_refint(IntPtr
17b40 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69   db, SQLiteConfi
17b50 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69  gDbOpsEnum op, i
17b60 6e 74 20 76 61 6c 75 65 2c 20 72 65 66 20 69 6e  nt value, ref in
17b70 74 20 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23 69  t result);....#i
17b80 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
17b90 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
17ba0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17bb0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
17bc0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
17bd0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
17be0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
17bf0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17c00 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
17c10 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
17c20 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
17c30 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f  ntPtr sqlite3_ro
17c40 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50  llback_hook(IntP
17c50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c  tr db, SQLiteRol
17c60 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75  lbackCallback fu
17c70 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
17c80 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
17c90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
17ca0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
17cb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17cc0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
17cd0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
17ce0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
17cf0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
17d00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
17d10 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
17d20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
17d30 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
17d40 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65  qlite3_db_handle
17d50 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
17d60 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17d70 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17d80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17d90 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17da0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17db0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17dc0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17dd0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17de0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17df0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17e00 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17e10 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
17e20 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65  de sqlite3_db_re
17e30 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74  lease_memory(Int
17e40 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
17e50 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
17e60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17e70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17e80 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
17e90 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
17ea0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
17eb0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
17ec0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17ed0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
17ee0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
17ef0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
17f00 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66  Ptr sqlite3_db_f
17f10 69 6c 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64  ilename(IntPtr d
17f20 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65  b, IntPtr dbName
17f30 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
17f40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17f50 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
17f60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
17f70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17f80 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
17f90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17fa0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
17fb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17fc0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17fd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17fe0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
17ff0 65 33 5f 64 62 5f 72 65 61 64 6f 6e 6c 79 28 49  e3_db_readonly(I
18000 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
18010 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66   dbName);....#if
18020 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18030 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18040 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18050 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
18060 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62  nt = "sqlite3_db
18070 5f 66 69 6c 65 6e 61 6d 65 22 2c 20 43 61 6c 6c  _filename", Call
18080 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
18090 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
180a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
180b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
180c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
180d0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
180e0 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 29  e3_db_filename")
180f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
18100 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18110 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18120 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
18130 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 64 62  _bytes(IntPtr db
18140 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 29  , byte[] dbName)
18150 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
18160 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18170 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
18180 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18190 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
181a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
181b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
181c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
181d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
181e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
181f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
18200 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
18210 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49  ite3_next_stmt(I
18220 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
18230 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
18240 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
18250 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
18260 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18270 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18280 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18290 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
182a0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
182b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
182c0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
182d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
182e0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
182f0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
18300 74 65 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20  te3_exec(IntPtr 
18310 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71  db, byte[] strSq
18320 6c 2c 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c  l, IntPtr pvCall
18330 62 61 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50  back, IntPtr pvP
18340 61 72 61 6d 2c 20 72 65 66 20 49 6e 74 50 74 72  aram, ref IntPtr
18350 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66   errMsg);....#if
18360 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18370 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18380 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18390 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
183a0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
183b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
183c0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
183d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
183e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
183f0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18400 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
18410 74 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73  t sqlite3_releas
18420 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79  e_memory(int nBy
18430 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tes);....#if !PL
18440 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18450 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
18460 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18470 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
18480 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
18490 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
184a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
184b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
184c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
184d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
184e0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
184f0 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f  lite3_get_autoco
18500 6d 6d 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b  mmit(IntPtr db);
18510 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18520 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18530 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18540 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18550 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18560 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18570 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18580 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18590 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
185a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
185b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
185c0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
185d0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74  Code sqlite3_ext
185e0 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64  ended_result_cod
185f0 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  es(IntPtr db, in
18600 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66  t onoff);....#if
18610 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18620 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18630 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18640 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
18650 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
18660 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
18670 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
18680 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18690 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
186a0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
186b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
186c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
186d0 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e  lite3_errcode(In
186e0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
186f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18700 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18710 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18720 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
18730 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
18740 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
18750 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
18760 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18770 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
18780 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18790 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
187a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
187b0 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65  lite3_extended_e
187c0 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62  rrcode(IntPtr db
187d0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
187e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
187f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
18800 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
18810 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
18820 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
18830 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
18840 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
18850 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18860 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
18870 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18880 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
18890 6c 69 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c  lite3_errstr(SQL
188a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29  iteErrorCode rc)
188b0 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d  ; /* 3.7.15+ */.
188c0 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20  ...    // Since 
188d0 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61  sqlite3_log() ta
188e0 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
188f0 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
18900 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
18910 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
18920 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
18930 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20  ossible calls.  
18940 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20  For now, we are 
18950 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20  only exposing a 
18960 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61  single string, a
18970 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e  nd..    // depen
18980 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20  d on the caller 
18990 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74  to format the st
189a0 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54  ring...#if !PLAT
189b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
189c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
189d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
189e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
189f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
18a00 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
18a10 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
18a20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18a30 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
18a40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18a50 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
18a60 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45  ite3_log(SQLiteE
18a70 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64  rrorCode iErrCod
18a80 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61  e, byte[] zForma
18a90 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
18aa0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18ab0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
18ac0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18ad0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
18ae0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
18af0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
18b00 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
18b10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18b20 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
18b30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18b40 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
18b50 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
18b60 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74  file_control(Int
18b70 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a  Ptr db, byte[] z
18b80 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20  DbName, int op, 
18b90 49 6e 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d  IntPtr pArg);...
18ba0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18bb0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18bc0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18bd0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
18be0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
18bf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
18c00 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
18c10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18c20 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
18c30 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
18c40 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
18c50 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
18c60 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74  _backup_init(Int
18c70 50 74 72 20 64 65 73 74 44 62 2c 20 62 79 74 65  Ptr destDb, byte
18c80 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e  [] zDestName, In
18c90 74 50 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62  tPtr sourceDb, b
18ca0 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d  yte[] zSourceNam
18cb0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#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 62 61 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50  backup_step(IntP
18d90 74 72 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e  tr backup, int n
18da0 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Page);....#if !P
18db0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18dc0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
18dd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18de0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
18df0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
18e00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
18e10 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
18e20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18e30 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
18e40 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18e50 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
18e60 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65  qlite3_backup_re
18e70 6d 61 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62  maining(IntPtr b
18e80 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  ackup);....#if !
18e90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
18ea0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
18eb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18ec0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18ed0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18ee0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18ef0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18f00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18f10 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18f20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18f30 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
18f40 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70  sqlite3_backup_p
18f50 61 67 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  agecount(IntPtr 
18f60 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20  backup);....#if 
18f70 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18f80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18f90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18fa0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
18fb0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18fc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18fd0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
18fe0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18ff0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19000 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19010 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19020 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19030 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28  ite3_blob_close(
19040 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d  IntPtr blob);...
19050 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19060 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19070 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19080 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
19090 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
190a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
190b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
190c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
190d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
190e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
190f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
19100 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 6c  n int sqlite3_bl
19110 6f 62 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  ob_bytes(IntPtr 
19120 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  blob);....#if !P
19130 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19140 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
19150 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19160 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
19170 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
19180 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
19190 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
191a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
191b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
191c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
191d0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
191e0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
191f0 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49 6e 74  e3_blob_open(Int
19200 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64  Ptr db, byte[] d
19210 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62  bName, byte[] tb
19220 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f  lName, byte[] co
19230 6c 4e 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f 77 49  lName, long rowI
19240 64 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 72 65  d, int flags, re
19250 66 20 49 6e 74 50 74 72 20 70 74 72 42 6c 6f 62  f IntPtr ptrBlob
19260 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19270 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19280 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19290 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
192a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
192b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
192c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
192d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
192e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
192f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
19300 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19310 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
19320 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
19330 6c 6f 62 5f 72 65 61 64 28 49 6e 74 50 74 72 20  lob_read(IntPtr 
19340 62 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73  blob, [MarshalAs
19350 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c  (UnmanagedType.L
19360 50 41 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20  PArray)] byte[] 
19370 62 75 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e  buffer, int coun
19380 74 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d  t, int offset);.
19390 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
193a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
193b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
193c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
193d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
193e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
193f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19400 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19410 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19420 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19430 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19440 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
19450 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
19460 5f 72 65 6f 70 65 6e 28 49 6e 74 50 74 72 20 62  _reopen(IntPtr b
19470 6c 6f 62 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 29  lob, long rowId)
19480 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
19490 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
194a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
194b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
194c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
194d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
194e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
194f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19500 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19510 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19520 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19530 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
19540 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
19550 6f 62 5f 77 72 69 74 65 28 49 6e 74 50 74 72 20  ob_write(IntPtr 
19560 62 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73  blob, [MarshalAs
19570 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c  (UnmanagedType.L
19580 50 41 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20  PArray)] byte[] 
19590 62 75 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e  buffer, int coun
195a0 74 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d  t, int offset);.
195b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
195c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
195d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
195e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
195f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19600 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19610 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19620 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19630 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19640 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19650 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19660 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
19670 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c  ode sqlite3_decl
19680 61 72 65 5f 76 74 61 62 28 49 6e 74 50 74 72 20  are_vtab(IntPtr 
19690 64 62 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c 29  db, IntPtr zSQL)
196a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
196b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
196c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
196d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
196e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
196f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19700 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19710 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19720 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19730 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19740 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19750 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
19760 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74  ite3_mprintf(Int
19770 50 74 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72  Ptr format, __ar
19780 67 6c 69 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e  glist);..    #en
19790 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
197a0 2f 20 53 51 4c 69 74 65 20 41 50 49 20 63 61 6c  / SQLite API cal
197b0 6c 73 20 74 68 61 74 20 61 72 65 20 70 72 6f 76  ls that are prov
197c0 69 64 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b 6e  ided by "well-kn
197d0 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73 20  own" extensions 
197e0 74 68 61 74 20 6d 61 79 20 62 65 20 73 74 61 74  that may be stat
197f0 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c  ically..    // l
19800 69 6e 6b 65 64 20 77 69 74 68 20 74 68 65 20 53  inked with the S
19810 51 4c 69 74 65 20 63 6f 72 65 20 6e 61 74 69 76  QLite core nativ
19820 65 20 6c 69 62 72 61 72 79 20 63 75 72 72 65 6e  e library curren
19830 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20  tly in use...   
19840 20 23 72 65 67 69 6f 6e 20 65 78 74 65 6e 73 69   #region extensi
19850 6f 6e 20 73 71 6c 69 74 65 20 61 70 69 20 63 61  on sqlite api ca
19860 6c 6c 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  lls..#if INTEROP
19870 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a  _VIRTUAL_TABLE..
19880 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
19890 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
198a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
198b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
198c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
198d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
198e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
198f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19900 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
19910 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
19920 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19930 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
19940 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
19950 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20  e_module(IntPtr 
19960 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c  db, IntPtr name,
19970 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64   ref sqlite3_mod
19980 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e 74 50  ule module, IntP
19990 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20  tr pClientData, 
199a0 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78  xDestroyModule x
199b0 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66  Destroy);....#if
199c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
199d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
199e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
199f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
19a00 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
19a10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
19a20 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
19a30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19a40 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
19a50 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
19a60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
19a70 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f  id sqlite3_dispo
19a80 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72  se_module(IntPtr
19a90 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64   pModule);..#end
19aa0 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  if..    #endregi
19ab0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
19ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
19b10 67 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74 65  gion sqlite inte
19b20 72 6f 70 20 61 70 69 20 63 61 6c 6c 73 20 28 2e  rop api calls (.
19b30 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
19b40 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66  ework only)..#if
19b50 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
19b60 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53  TFRAMEWORK && !S
19b70 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
19b80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19b90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
19ba0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19bb0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
19bc0 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
19bd0 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49  _rowid_interop(I
19be0 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c 6f  ntPtr db, ref lo
19bf0 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20  ng rowId);....  
19c00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19c10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
19c20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19c30 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
19c40 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69  e3_memory_used_i
19c50 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20  nterop(ref long 
19c60 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b  bytes);....    [
19c70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19c80 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
19c90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19ca0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
19cb0 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
19cc0 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72 65 73  _interop(int res
19cd0 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67  etFlag, ref long
19ce0 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20   bytes);....    
19cf0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19d00 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
19d10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19d20 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
19d30 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
19d40 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
19d50 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
19d60 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62   index, ref doub
19d70 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  le value);....  
19d80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19d90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
19da0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19db0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
19dc0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
19dd0 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  nd_int64_interop
19de0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
19df0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e  t index, ref lon
19e00 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
19e10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19e20 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
19e30 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
19e40 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  nd_int64_interop
19e50 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ")]..    interna
19e60 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19e70 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
19e80 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
19e90 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
19ea0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
19eb0 65 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61  ex, ref ulong va
19ec0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
19ed0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19ee0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19ef0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19f00 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f   void sqlite3_co
19f10 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  lumn_double_inte
19f20 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
19f30 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
19f40 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
19f50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19f60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
19f70 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19f80 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
19f90 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
19fa0 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
19fb0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
19fc0 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c  ex, ref long val
19fd0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
19fe0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19ff0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1a000 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1a010 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
1a020 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  ue_double_intero
1a030 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
1a040 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
1a050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a060 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1a070 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a080 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1a090 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
1a0a0 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
1a0b0 72 20 70 2c 20 72 65 66 20 49 6e 74 36 34 20 76  r p, ref Int64 v
1a0c0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
1a0d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a0e0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1a0f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a100 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
1a110 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74  esult_double_int
1a120 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74  erop(IntPtr cont
1a130 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20  ext, ref double 
1a140 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
1a150 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a160 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1a170 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1a180 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1a190 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74  result_int64_int
1a1a0 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74  erop(IntPtr cont
1a1b0 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76  ext, ref Int64 v
1a1c0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
1a1d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a1e0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1a1f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a200 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1a210 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
1a220 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f  le_module_intero
1a230 70 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  p(..        IntP
1a240 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61  tr db, IntPtr na
1a250 6d 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64 75  me, IntPtr pModu
1a260 6c 65 2c 20 69 6e 74 20 69 56 65 72 73 69 6f 6e  le, int iVersion
1a270 2c 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74  , xCreate xCreat
1a280 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 43 6f 6e  e,..        xCon
1a290 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78  nect xConnect, x
1a2a0 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49  BestIndex xBestI
1a2b0 6e 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63  ndex, xDisconnec
1a2c0 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a  t xDisconnect,..
1a2d0 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79          xDestroy
1a2e0 20 78 44 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e   xDestroy, xOpen
1a2f0 20 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78   xOpen, xClose x
1a300 43 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72 20 78  Close, xFilter x
1a310 46 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  Filter,..       
1a320 20 78 4e 65 78 74 20 78 4e 65 78 74 2c 20 78 45   xNext xNext, xE
1a330 6f 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e  of xEof, xColumn
1a340 20 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64   xColumn, xRowId
1a350 20 78 52 6f 77 49 64 2c 20 78 55 70 64 61 74 65   xRowId, xUpdate
1a360 20 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20   xUpdate,..     
1a370 20 20 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e     xBegin xBegin
1a380 2c 20 78 53 79 6e 63 20 78 53 79 6e 63 2c 20 78  , xSync xSync, x
1a390 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20  Commit xCommit, 
1a3a0 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62  xRollback xRollb
1a3b0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78 46  ack,..        xF
1a3c0 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e  indFunction xFin
1a3d0 64 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61  dFunction, xRena
1a3e0 6d 65 20 78 52 65 6e 61 6d 65 2c 20 78 53 61 76  me xRename, xSav
1a3f0 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e  epoint xSavepoin
1a400 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 52 65 6c  t,..        xRel
1a410 65 61 73 65 20 78 52 65 6c 65 61 73 65 2c 20 78  ease xRelease, x
1a420 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c  RollbackTo xRoll
1a430 62 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70  backTo, IntPtr p
1a440 43 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20  ClientData,..   
1a450 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f 64       xDestroyMod
1a460 75 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  ule xDestroyModu
1a470 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  le);..#endif..  
1a480 20 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f    // PLATFORM_CO
1a490 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26  MPACTFRAMEWORK &
1a4a0 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  & !SQLITE_STANDA
1a4b0 52 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  RD..    #endregi
1a4c0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
1a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a510 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
1a520 67 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65  gion Native Dele
1a530 67 61 74 65 73 0d 0a 23 69 66 20 49 4e 54 45 52  gates..#if INTER
1a540 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
1a550 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a560 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a570 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1a580 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1a590 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a5a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1a5b0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1a5c0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1a5d0 6f 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d  orCode xCreate(.
1a5e0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1a5f0 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  pDb,..        In
1a600 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20  tPtr pAux,..    
1a610 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
1a620 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
1a630 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  gv,..        ref
1a640 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1a650 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
1a660 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29  tr pError..    )
1a670 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1a680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6c0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1a6d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a6e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1a6f0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1a700 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1a710 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a720 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1a730 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1a740 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
1a750 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
1a760 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
1a770 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
1a780 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
1a790 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
1a7a0 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
1a7b0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
1a7c0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
1a7d0 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
1a7e0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1a840 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a850 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a860 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1a870 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1a880 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a890 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1a8a0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1a8b0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1a8c0 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d  ode xBestIndex(.
1a8d0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1a8e0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
1a8f0 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20  IntPtr pIndex.. 
1a900 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1a960 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a970 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a980 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1a990 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1a9a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a9b0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1a9c0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1a9d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1a9e0 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20   xDisconnect(.. 
1a9f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1aa00 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
1aa10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1aa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1aa60 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1aa70 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1aa80 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1aa90 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1aaa0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1aab0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1aac0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1aad0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1aae0 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28  orCode xDestroy(
1aaf0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1ab00 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
1ab10 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1ab20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab60 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1ab70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ab80 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1ab90 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1aba0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1abb0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1abc0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1abd0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1abe0 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28  ErrorCode xOpen(
1abf0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1ac00 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
1ac10 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 75 72   ref IntPtr pCur
1ac20 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  sor..    );.... 
1ac30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1ac40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ac80 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ac90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1aca0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1acb0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1acc0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1acd0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1ace0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1acf0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1ad00 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a  orCode xClose(..
1ad10 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1ad20 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
1ad30 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1ad40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad80 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
1ad90 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ada0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
1adb0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
1adc0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
1add0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1ade0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1adf0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
1ae00 45 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65  ErrorCode xFilte
1ae10 72 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  r(..        IntP
1ae20 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
1ae30 20 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c       int idxNum,
1ae40 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1ae50 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20   idxStr,..      
1ae60 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
1ae70 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
1ae80 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1ae90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1aee0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1aef0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1af00 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1af10 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1af20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1af30 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1af40 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1af50 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
1af60 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20  ode xNext(..    
1af70 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
1af80 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
1af90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1afe0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1aff0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b000 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1b010 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1b020 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b030 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1b040 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1b050 65 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28 0d  egate int xEof(.
1b060 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1b070 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
1b080 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1b090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0d0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1b0e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b0f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1b100 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1b110 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1b120 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1b130 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1b140 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
1b150 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75  eErrorCode xColu
1b160 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  mn(..        Int
1b170 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
1b180 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
1b190 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  ntext,..        
1b1a0 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 29  int index..    )
1b1b0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1b1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b200 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1b210 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b220 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1b230 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1b240 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1b250 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b260 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1b270 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1b280 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
1b290 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  wId(..        In
1b2a0 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
1b2b0 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
1b2c0 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d  rowId..    );...
1b2d0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1b2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b320 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b330 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b340 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1b350 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1b360 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1b370 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1b380 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1b390 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1b3a0 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65  rrorCode xUpdate
1b3b0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
1b3c0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
1b3d0 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
1b3e0 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
1b3f0 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c  ,..        ref l
1b400 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29  ong rowId..    )
1b410 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1b420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b460 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1b470 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b480 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1b490 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1b4a0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1b4b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1b4c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1b4d0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1b4e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65  iteErrorCode xBe
1b4f0 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  gin(..        In
1b500 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
1b510 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1b520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b560 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1b570 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b580 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1b590 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1b5a0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1b5b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1b5c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1b5d0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1b5e0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
1b5f0 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ync(..        In
1b600 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
1b610 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
1b620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b660 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
1b670 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b680 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
1b690 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
1b6a0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
1b6b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1b6c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
1b6d0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
1b6e0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
1b6f0 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20  ommit(..        
1b700 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
1b710 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1b720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b760 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1b770 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b780 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b790 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1b7a0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1b7b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1b7c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1b7d0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1b7e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1b7f0 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  xRollback(..    
1b800 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1b810 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
1b820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
1b870 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b880 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b890 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
1b8a0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
1b8b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1b8c0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
1b8d0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
1b8e0 61 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75 6e  ate int xFindFun
1b8f0 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ction(..        
1b900 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
1b910 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c         int nArg,
1b920 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1b930 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20   zName,..       
1b940 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62   ref SQLiteCallb
1b950 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ack callback,.. 
1b960 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
1b970 72 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20 20  r pUserData..   
1b980 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
1b990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1b9e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b9f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1ba00 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1ba10 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1ba20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1ba30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1ba40 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
1ba50 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1ba60 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
1ba70 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1ba80 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
1ba90 4e 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  New..    );.... 
1baa0 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1baf0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1bb00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1bb10 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1bb20 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1bb30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1bb40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1bb50 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1bb60 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1bb70 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e  orCode xSavepoin
1bb80 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
1bb90 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1bba0 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
1bbb0 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
1bbc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1bbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1bc10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1bc20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1bc30 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
1bc40 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
1bc50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1bc60 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
1bc70 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
1bc80 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
1bc90 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a  Code xRelease(..
1bca0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1bcb0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
1bcc0 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
1bcd0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1bce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1bd30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1bd40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1bd50 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1bd60 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1bd70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1bd80 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1bd90 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1bda0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1bdb0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20   xRollbackTo(.. 
1bdc0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1bdd0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
1bde0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
1bdf0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1be00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1be50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1be60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1be70 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1be80 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1be90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1bea0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1beb0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1bec0 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64  void xDestroyMod
1bed0 75 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65  ule(IntPtr pClie
1bee0 6e 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66  ntData);..#endif
1bef0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1bf00 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1bf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf50 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
1bf60 6f 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63 74  on Native Struct
1bf70 75 72 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ures..#if INTERO
1bf80 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
1bf90 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
1bfa0 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
1bfb0 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
1bfc0 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
1bfd0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a  sqlite3_module..
1bfe0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
1bff0 75 62 6c 69 63 20 69 6e 74 20 69 56 65 72 73 69  ublic int iVersi
1c000 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  on;..        pub
1c010 6c 69 63 20 78 43 72 65 61 74 65 20 78 43 72 65  lic xCreate xCre
1c020 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ate;..        pu
1c030 62 6c 69 63 20 78 43 6f 6e 6e 65 63 74 20 78 43  blic xConnect xC
1c040 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20  onnect;..       
1c050 20 70 75 62 6c 69 63 20 78 42 65 73 74 49 6e 64   public xBestInd
1c060 65 78 20 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a  ex xBestIndex;..
1c070 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1c080 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63  Disconnect xDisc
1c090 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20  onnect;..       
1c0a0 20 70 75 62 6c 69 63 20 78 44 65 73 74 72 6f 79   public xDestroy
1c0b0 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20 20 20   xDestroy;..    
1c0c0 20 20 20 20 70 75 62 6c 69 63 20 78 4f 70 65 6e      public xOpen
1c0d0 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20   xOpen;..       
1c0e0 20 70 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78   public xClose x
1c0f0 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  Close;..        
1c100 70 75 62 6c 69 63 20 78 46 69 6c 74 65 72 20 78  public xFilter x
1c110 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20 20  Filter;..       
1c120 20 70 75 62 6c 69 63 20 78 4e 65 78 74 20 78 4e   public xNext xN
1c130 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ext;..        pu
1c140 62 6c 69 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d  blic xEof xEof;.
1c150 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1c160 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b  xColumn xColumn;
1c170 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1c180 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d   xRowId xRowId;.
1c190 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1c1a0 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65 3b  xUpdate xUpdate;
1c1b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1c1c0 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d   xBegin xBegin;.
1c1d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1c1e0 78 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20  xSync xSync;..  
1c1f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f        public xCo
1c200 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20  mmit xCommit;.. 
1c210 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
1c220 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63  ollback xRollbac
1c230 6b 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  k;..        publ
1c240 69 63 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  ic xFindFunction
1c250 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d   xFindFunction;.
1c260 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1c270 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b  xRename xRename;
1c280 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65  ..        /* The
1c290 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61   methods above a
1c2a0 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20  re in version 1 
1c2b0 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6d  of the sqlite3_m
1c2c0 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  odule..         
1c2d0 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73 65  * object.  Those
1c2e0 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76   below are for v
1c2f0 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 67 72 65  ersion 2 and gre
1c300 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  ater. */..      
1c310 20 20 70 75 62 6c 69 63 20 78 53 61 76 65 70 6f    public xSavepo
1c320 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d  int xSavepoint;.
1c330 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1c340 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73  xRelease xReleas
1c350 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
1c360 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78  ic xRollbackTo x
1c370 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20  RollbackTo;..   
1c380 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
1c390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c3d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
1c3e0 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
1c3f0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
1c400 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1c410 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
1c420 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  vtab..    {..   
1c430 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
1c440 74 72 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20  tr pModule;..   
1c450 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1c460 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47  nRef; /* NO LONG
1c470 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  ER USED */..    
1c480 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
1c490 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20  r zErrMsg;..    
1c4a0 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
1c500 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
1c510 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
1c520 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1c530 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76  struct sqlite3_v
1c540 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20  tab_cursor..    
1c550 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
1c560 63 20 49 6e 74 50 74 72 20 70 56 54 61 62 3b 0d  c IntPtr pVTab;.
1c570 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
1c580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1c5d0 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
1c5e0 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
1c5f0 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
1c600 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
1c610 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
1c620 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  aint..    {..   
1c630 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
1c640 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
1c650 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  aint(..         
1c660 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f     SQLiteIndexCo
1c670 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61  nstraint constra
1c680 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
1c690 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
1c6a0 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
1c6b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c6c0 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20   if (constraint 
1c6d0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1c6e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c6f0 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e           iColumn
1c700 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43   = constraint.iC
1c710 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
1c720 20 20 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e          op = con
1c730 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20  straint.op;..   
1c740 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 61               usa
1c750 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  ble = constraint
1c760 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20  .usable;..      
1c770 20 20 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f            iTermO
1c780 66 66 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69  ffset = constrai
1c790 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d  nt.iTermOffset;.
1c7a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1c7b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1c7c0 20 20 20 20 20 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 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1c810 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1c820 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  nt iColumn;..   
1c830 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
1c840 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
1c850 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20  tOp op;..       
1c860 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61   public byte usa
1c870 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ble;..        pu
1c880 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66  blic int iTermOf
1c890 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  fset;..    }....
1c8a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1c8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1c8f0 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
1c900 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
1c910 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
1c920 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
1c930 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
1c940 6f 72 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a  orderby..    {..
1c950 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1c960 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
1c970 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20  erby(..         
1c980 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72     SQLiteIndexOr
1c990 64 65 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20  derBy orderBy.. 
1c9a0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1c9b0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
1c9c0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1c9d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
1c9e0 72 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d  rderBy != null).
1c9f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1ca00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca10 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42  iColumn = orderB
1ca20 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  y.iColumn;..    
1ca30 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63              desc
1ca40 20 3d 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b   = orderBy.desc;
1ca50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1ca60 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1ca70 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1ca80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1caa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1cac0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1cad0 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20  int iColumn; /* 
1cae0 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f  Column number */
1caf0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1cb00 20 62 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a   byte desc;   /*
1cb10 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
1cb20 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20   False for ASC. 
1cb30 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  */..    }....   
1cb40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1cb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1cb90 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
1cba0 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
1cbb0 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
1cbc0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
1cbd0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
1cbe0 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20  straint_usage.. 
1cbf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
1cc00 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
1cc10 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
1cc20 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
1cc30 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
1cc40 73 74 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e  straintUsage con
1cc50 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20  straintUsage..  
1cc60 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1cc70 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
1cc80 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1cc90 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
1cca0 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d  nstraintUsage !=
1ccb0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1ccc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1ccd0 20 20 20 20 20 20 20 61 72 67 76 49 6e 64 65 78         argvIndex
1cce0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61   = constraintUsa
1ccf0 67 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20  ge.argvIndex;.. 
1cd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
1cd10 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  mit = constraint
1cd20 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20  Usage.omit;..   
1cd30 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1cd40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1cd50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1cd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cda0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61      public int a
1cdb0 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20  rgvIndex; /* if 
1cdc0 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  >0, constraint i
1cdd0 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74  s part of argv t
1cde0 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20  o xFilter */..  
1cdf0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
1ce00 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44  e omit;     /* D
1ce10 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73  o not code a tes
1ce20 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74  t for this const
1ce30 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d  raint */..    }.
1ce40 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1ce50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
1cea0 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
1ceb0 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
1cec0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ced0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
1cee0 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a  ex_info..    {..
1cef0 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74          /* Input
1cf00 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  s */..        pu
1cf10 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72  blic int nConstr
1cf20 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20  aint; /* Number 
1cf30 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43  of entries in aC
1cf40 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
1cf50 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
1cf60 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b  Ptr aConstraint;
1cf70 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1cf80 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20 20   int nOrderBy;  
1cf90 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65    /* Number of e
1cfa0 6e 74 72 69 65 73 20 69 6e 20 61 4f 72 64 65 72  ntries in aOrder
1cfb0 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  By */..        p
1cfc0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 4f 72  ublic IntPtr aOr
1cfd0 64 65 72 42 79 3b 0d 0a 20 20 20 20 20 20 20 20  derBy;..        
1cfe0 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20  /* Outputs */.. 
1cff0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1d000 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74  tPtr aConstraint
1d010 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20  Usage;..        
1d020 70 75 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75  public int idxNu
1d030 6d 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  m;           /* 
1d040 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69  Number used to i
1d050 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65  dentify the inde
1d060 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  x */..        pu
1d070 62 6c 69 63 20 73 74 72 69 6e 67 20 69 64 78 53  blic string idxS
1d080 74 72 3b 20 20 20 20 20 20 20 20 2f 2a 20 53 74  tr;        /* St
1d090 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f  ring, possibly o
1d0a0 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c  btained from sql
1d0b0 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a  ite3_malloc */..
1d0c0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
1d0d0 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78  nt needToFreeIdx
1d0e0 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78  Str; /* Free idx
1d0f0 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65  Str using sqlite
1d100 33 5f 66 72 65 65 28 29 20 69 66 20 74 72 75 65  3_free() if true
1d110 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1d120 6c 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79 43  lic int orderByC
1d130 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75  onsumed;  /* Tru
1d140 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20 61  e if output is a
1d150 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a  lready ordered *
1d160 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1d170 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74  c double estimat
1d180 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d  edCost; /* Estim
1d190 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69  ated cost of usi
1d1a0 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f  ng this index */
1d1b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1d1c0 20 6c 6f 6e 67 20 65 73 74 69 6d 61 74 65 64 52   long estimatedR
1d1d0 6f 77 73 3b 20 20 20 2f 2a 20 45 73 74 69 6d 61  ows;   /* Estima
1d1e0 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  ted number of ro
1d1f0 77 73 20 72 65 74 75 72 6e 65 64 20 2a 2f 0d 0a  ws returned */..
1d200 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
1d210 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20  QLiteIndexFlags 
1d220 69 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61 73  idxFlags; /* Mas
1d230 6b 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44 45  k of SQLITE_INDE
1d240 58 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20 2a  X_SCAN_* flags *
1d250 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
1d260 63 20 6c 6f 6e 67 20 63 6f 6c 55 73 65 64 3b 20  c long colUsed; 
1d270 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74          /* Input
1d280 3a 20 4d 61 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e  : Mask of column
1d290 73 20 75 73 65 64 20 62 79 20 73 74 61 74 65 6d  s used by statem
1d2a0 65 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23  ent */..    }..#
1d2b0 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72  endif..    #endr
1d2c0 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65  egion..  }..  #e
1d2d0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
1d2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1d330 20 23 72 65 67 69 6f 6e 20 2e 4e 45 54 20 43 6f   #region .NET Co
1d340 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20  mpact Framework 
1d350 28 6f 6e 6c 79 29 20 43 72 69 74 69 63 61 6c 48  (only) CriticalH
1d360 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 23 69 66  andle Class..#if
1d370 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1d380 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e  TFRAMEWORK..  in
1d390 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
1d3a0 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c 48 61  class CriticalHa
1d3b0 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73 61 62  ndle : IDisposab
1d3c0 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69  le..  {..    pri
1d3d0 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f  vate bool _isClo
1d3e0 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63  sed;..    protec
1d3f0 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e 64 6c  ted IntPtr handl
1d400 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63  e;....    protec
1d410 74 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ted CriticalHand
1d420 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69  le(IntPtr invali
1d430 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20  dHandleValue).. 
1d440 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64     {..      hand
1d450 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64  le = invalidHand
1d460 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  leValue;..      
1d470 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73  _isClosed = fals
1d480 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
1d490 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65   ~CriticalHandle
1d4a0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
1d4b0 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b   Dispose(false);
1d4c0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
1d4d0 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65 61  rivate void Clea
1d4e0 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  nup()..    {..  
1d4f0 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73 65      if (!IsClose
1d500 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  d)..      {..   
1d510 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f       this._isClo
1d520 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
1d530 20 20 20 20 20 69 66 20 28 21 49 73 49 6e 76 61       if (!IsInva
1d540 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lid)..        {.
1d550 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 61  .          Relea
1d560 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20  seHandle();..   
1d570 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
1d580 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
1d590 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
1d5a0 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
1d5b0 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
1d5c0 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  Close()..    {..
1d5d0 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
1d5e0 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ue);..    }.... 
1d5f0 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
1d600 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d  ispose()..    {.
1d610 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74  .      Dispose(t
1d620 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rue);..    }....
1d630 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
1d640 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f  rtual void Dispo
1d650 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e  se(bool disposin
1d660 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  g)..    {..     
1d670 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20   Cleanup();..   
1d680 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63   }....    protec
1d690 74 65 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f  ted abstract boo
1d6a0 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
1d6b0 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63  );....    protec
1d6c0 74 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64  ted void SetHand
1d6d0 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29  le(IntPtr value)
1d6e0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68  ..    {..      h
1d6f0 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a  andle = value;..
1d700 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
1d710 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e 64  lic void SetHand
1d720 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20  leAsInvalid().. 
1d730 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43     {..      _isC
1d740 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
1d750 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
1d760 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
1d770 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
1d780 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73  blic bool IsClos
1d790 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ed..    {..     
1d7a0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69   get { return _i
1d7b0 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20  sClosed; }..    
1d7c0 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
1d7d0 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73  abstract bool Is
1d7e0 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a  Invalid..    {..
1d7f0 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20        get;..    
1d800 7d 0d 0a 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66  }....  }..#endif
1d810 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a  ..  #endregion..
1d820 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1d830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d870 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
1d880 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
1d890 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  nHandle Class.. 
1d8a0 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68     // Handles th
1d8b0 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61  e unmanaged data
1d8c0 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e  base pointer, an
1d8d0 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  d provides final
1d8e0 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20  ization..    // 
1d8f0 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d  support for it..
1d900 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
1d910 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
1d920 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1d930 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
1d940 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53  le..    {..#if S
1d950 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26  QLITE_STANDARD &
1d960 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  & !PLATFORM_COMP
1d970 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d980 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64        internal d
1d990 65 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f  elegate void Clo
1d9a0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c  seConnectionCall
1d9b0 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
1d9c0 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
1d9d0 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49  ionHandle hdl, I
1d9e0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
1d9f0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
1da00 74 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65  tatic CloseConne
1da10 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c  ctionCallback cl
1da20 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d  oseConnection =.
1da30 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1da40 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
1da50 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66  nection;..#endif
1da60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1da70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ///....#if PLATF
1dac0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1dad0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
1dae0 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
1daf0 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
1db00 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
1db10 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1db20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1db30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1db70 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
1db80 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d  ol ownHandle;...
1db90 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dbe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
1dbf0 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
1dc00 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
1dc10 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  tr(SQLiteConnect
1dc20 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20  ionHandle db).. 
1dc30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1dc40 20 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20        if (db != 
1dc50 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1dc60 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1dc70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1dc80 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1dc90 20 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79       lock (db.sy
1dca0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1dcb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dcc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1dcd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
1dce0 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  b.handle;..     
1dcf0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1dd00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1dd10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1dd20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
1dd30 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1dd40 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1dd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1dd90 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
1dda0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1ddb0 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c  andle(IntPtr db,
1ddc0 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29   bool ownHandle)
1ddd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
1dde0 74 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d  this(ownHandle).
1ddf0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1de00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1de10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1de20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1de30 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1de40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1de50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1de60 68 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20  his.ownHandle = 
1de70 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ownHandle;..    
1de80 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
1de90 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20  andle(db);..    
1dea0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1deb0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1dec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ded0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dee0 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1df10 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
1df20 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1df30 65 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65  e(bool ownHandle
1df40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
1df50 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
1df60 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
1df70 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
1df80 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1df90 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20  (ownHandle)..   
1dfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
1dfb0 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
1dfc0 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
1dfd0 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
1dfe0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
1dff0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1e000 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1e010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e040 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1e050 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
1e060 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
1e070 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
1e080 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1e090 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e0a0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1e0b0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1e0c0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1e0d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e0e0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
1e0f0 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74 75 72  ownHandle) retur
1e100 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
1e110 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1e120 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1e130 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
1e140 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e150 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1e160 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1e170 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
1e180 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
1e190 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
1e1a0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
1e1b0 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
1e1c0 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54  o);....#if SQLIT
1e1d0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
1e1e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1e1f0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
1e200 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1e210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e220 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   closeConnection
1e230 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
1e240 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  le);..#else..   
1e250 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1e260 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
1e270 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1e280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e290 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
1e2a0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
1e2b0 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  s, localHandle);
1e2c0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
1e2d0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1e2e0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1e2f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e300 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1e310 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e320 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1e330 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
1e340 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
1e350 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e370 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
1e380 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
1e390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3a0 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e         "CloseCon
1e3b0 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c  nection: {0}", l
1e3c0 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
1e3d0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1e3e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1e3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1e400 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1e410 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e420 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1e430 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
1e440 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1e450 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
1e460 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1e470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e480 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
1e490 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1e4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
1e4d0 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
1e4e0 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 68 61  nection(this, ha
1e4f0 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
1e500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e510 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
1e520 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
1e530 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e550 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
1e560 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
1e570 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
1e580 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
1e590 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
1e5a0 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
1e5b0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
1e5c0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
1e5d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1e5e0 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1e5f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
1e600 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
1e610 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
1e620 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1e630 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1e640 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
1e650 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1e660 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
1e670 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
1e680 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1e690 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1e6a0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1e6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6c0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1e6d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e6e0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1e6f0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
1e700 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
1e710 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1e720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e730 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
1e740 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
1e750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e760 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e        "CloseConn
1e770 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63  ection: {0}, exc
1e780 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
1e790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7a0 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
1e7b0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
1e7c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e7d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1e7e0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
1e7f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1e800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1e810 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1e820 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1e830 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
1e840 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1e850 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e860 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1e870 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1e880 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
1e890 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1e8a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e8b0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
1e8c0 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
1e8d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e8e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1e8f0 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
1e900 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1e910 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
1e920 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1e930 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
1e940 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1e950 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1e960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1e9a0 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
1e9b0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
1e9c0 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
1e9d0 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
1e9e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e9f0 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
1ea00 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
1ea10 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65   DebugData.conne
1ea20 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20  ctionCount);..  
1ea30 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1ea40 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea90 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
1eaa0 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e  blic bool OwnHan
1eab0 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
1eac0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
1ead0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1eae0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1eaf0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1eb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1eb10 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1eb20 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1eb30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1eb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1eb50 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b  eturn ownHandle;
1eb60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1eb70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1eb80 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1eb90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1eba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
1ebf0 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
1ec00 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
1ec10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1ec20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
1ec30 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
1ec40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ec50 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1ec60 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1ec70 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1ec80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1ec90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1eca0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
1ecb0 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
1ecc0 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
1ecd0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1ece0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1ecf0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1ed00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed20 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
1ed50 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
1ed60 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
1ed70 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
1ed80 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
1ed90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1eda0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1edb0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1edc0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1edd0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ede0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1edf0 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
1ee00 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
1ee10 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
1ee20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
1ee30 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1ee40 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1ee50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee90 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
1eea0 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  n SQLiteStatemen
1eeb0 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  tHandle Class.. 
1eec0 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66     // Provides f
1eed0 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70  inalization supp
1eee0 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65  ort for unmanage
1eef0 64 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d 65  d SQLite stateme
1ef00 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  nts...    intern
1ef10 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
1ef20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
1ef30 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
1ef40 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
1ef50 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1ef60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ef70 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
1ef80 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
1ef90 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
1efa0 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
1efb0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1efc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f000 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
1f010 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
1f020 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
1f030 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1f040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f080 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1f090 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
1f0a0 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
1f0b0 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74 61  IntPtr(SQLiteSta
1f0c0 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d  tementHandle stm
1f0d0 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
1f0e0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
1f0f0 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tmt != null)..  
1f100 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1f110 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1f120 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1f130 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1f140 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29   (stmt.syncRoot)
1f150 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1f160 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1f170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f180 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e   return stmt.han
1f190 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
1f1a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1f1b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1f1c0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
1f1d0 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
1f1e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1f1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f230 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1f240 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
1f250 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28  StatementHandle(
1f260 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1f270 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
1f280 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20  tr stmt)..      
1f290 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
1f2a0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1f2b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f2c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1f2d0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1f2e0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1f2f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1f300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1f310 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20  is.cnn = cnn;.. 
1f320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1f330 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d  etHandle(stmt);.
1f340 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1f350 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1f360 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1f370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f3b0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1f3c0 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
1f3d0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
1f3e0 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
1f3f0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1f400 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
1f410 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1f420 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
1f430 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ncrement(ref Deb
1f440 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74  ugData.statement
1f450 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
1f460 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1f470 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1f480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f4c0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
1f4d0 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
1f4e0 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
1f4f0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1f500 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1f510 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1f520 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f530 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f540 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
1f550 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
1f560 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
1f570 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
1f580 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1f590 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
1f5a0 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
1f5b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
1f5c0 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
1f5d0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1f5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1f5f0 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69  QLiteBase.Finali
1f600 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c  zeStatement(cnn,
1f610 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
1f620 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
1f630 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
1f640 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1f650 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
1f660 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1f670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f680 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
1f690 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
1f6a0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
1f6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6c0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
1f6d0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
1f6e0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
1f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
1f700 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a  nalizeStatement:
1f710 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
1f720 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  le)); /* throw *
1f730 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1f740 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1f750 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
1f760 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1f770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f780 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
1f790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f7a0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1f7b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f7c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f7d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
1f7e0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1f7f0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1f800 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1f810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f820 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
1f830 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
1f840 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d  t(cnn, handle);.
1f850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f860 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
1f870 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
1f880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f890 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1f8a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1f8b0 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
1f8c0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1f8d0 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1f8e0 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
1f8f0 44 65 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d  DebugData.statem
1f900 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  entCount);..#end
1f910 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
1f920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1f930 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
1f940 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1f950 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
1f960 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1f970 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1f980 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
1f990 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
1f9a0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
1f9b0 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
1f9c0 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
1f9d0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1f9e0 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
1f9f0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
1fa00 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
1fa10 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
1fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1fa30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa40 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
1fa50 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
1fa60 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1fa70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fa80 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
1fa90 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
1faa0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
1fab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
1fac0 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
1fad0 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
1fae0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
1faf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb00 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
1fb10 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1fb20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1fb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1fb40 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1fb50 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1fb60 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1fb70 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
1fb80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
1fb90 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
1fba0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1fbb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1fbc0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1fbd0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1fbe0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1fbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1fc00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fc10 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
1fc20 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
1fc30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1fc40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1fc50 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1fc60 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1fc70 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
1fc80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1fc90 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1fca0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1fcb0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1fcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1fd00 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1fd10 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1fd20 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
1fd30 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1fd40 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1fd50 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1fd60 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
1fd70 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f  Data.statementCo
1fd80 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
1fd90 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1fda0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1fdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1fdf0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
1fe00 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
1fe10 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
1fe20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
1fe30 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
1fe40 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1fe50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1fe60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fe70 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1fe80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1fe90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1fea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1feb0 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
1fec0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
1fed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fee0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1fef0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1ff00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1ff10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff50 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
1ff60 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
1ff70 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
1ff80 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
1ff90 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
1ffa0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ffb0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
1ffc0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1ffd0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1ffe0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1fff0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
20000 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
20010 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
20020 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
20030 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
20040 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
20050 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
20060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
200a0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
200b0 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20  iteBackupHandle 
200c0 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72  Class..    // Pr
200d0 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
200e0 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ion support for 
200f0 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65  unmanaged SQLite
20100 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e   backup objects.
20110 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20120 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
20130 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a  teBackupHandle :
20140 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
20150 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
20160 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20170 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
20180 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
20190 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
201a0 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
201b0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
201c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
201d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
20210 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
20220 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
20230 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
20240 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
20250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20290 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
202a0 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
202b0 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
202c0 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
202d0 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20  le backup)..    
202e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
202f0 20 20 20 69 66 20 28 62 61 63 6b 75 70 20 21 3d     if (backup !=
20300 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
20310 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
20320 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20330 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
20340 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b        lock (back
20350 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  up.syncRoot)..#e
20360 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
20370 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
20380 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
20390 75 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c  urn backup.handl
203a0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
203b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
203c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
203d0 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
203e0 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
203f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
20400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20440 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ///....        i
20450 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 61  nternal SQLiteBa
20460 63 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c 69 74  ckupHandle(SQLit
20470 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
20480 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61  e cnn, IntPtr ba
20490 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 20  ckup)..         
204a0 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
204b0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
204c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
204d0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
204e0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
204f0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
20500 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
20510 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
20520 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20  cnn = cnn;..    
20530 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
20540 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a  andle(backup);..
20550 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
20560 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
20570 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
20580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
205c0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
205d0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
205e0 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
205f0 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
20600 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
20610 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
20620 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
20630 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
20640 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
20650 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ta.backupCount);
20660 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
20670 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
20680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
206d0 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
206e0 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
206f0 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
20700 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
20710 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
20720 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
20730 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20740 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
20750 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
20760 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
20770 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
20780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20790 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
207a0 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
207b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
207c0 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
207d0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
207e0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
207f0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
20800 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28  se.FinishBackup(
20810 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
20820 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
20830 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
20840 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
20850 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
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 54 72 61 63 65 2e 57 72 69         Trace.Wri
20890 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
208a0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
208b0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
208c0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
208d0 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
208e0 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
208f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20900 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20   "FinishBackup: 
20910 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
20920 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
20930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20940 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
20950 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
20960 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
20970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
20980 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
20990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
209a0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
209b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
209c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
209d0 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
209e0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
209f0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
20a00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
20a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
20a30 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c  inishBackup(cnn,
20a40 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
20a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a60 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
20a70 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
20a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a90 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
20aa0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
20ab0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
20ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ad0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
20ae0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
20af0 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ata.backupCount)
20b00 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
20b10 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
20b20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
20b30 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
20b40 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
20b50 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
20b60 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
20b70 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
20b80 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
20b90 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
20ba0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
20bb0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
20bc0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
20bd0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
20be0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
20bf0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
20c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
20c10 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
20c20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
20c30 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
20c40 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
20c50 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
20c60 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
20c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c80 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
20c90 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
20ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20cb0 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b       "FinishBack
20cc0 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  up: {0}, excepti
20cd0 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
20ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20cf0 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
20d00 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
20d10 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
20d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d30 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
20d40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20d50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
20d60 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
20d70 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
20d80 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
20d90 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
20da0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20db0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
20dc0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
20dd0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
20de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20df0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20e00 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
20e10 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
20e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
20e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
20e40 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
20e50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
20e60 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
20e70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
20e80 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
20e90 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
20ea0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
20eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
20ef0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
20f00 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
20f10 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
20f20 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
20f30 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20f40 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
20f50 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
20f60 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75  ugData.backupCou
20f70 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
20f80 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
20f90 20 20 20 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 2f 2f  ////////////////
20fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
20fe0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
20ff0 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
21000 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
21010 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
21020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
21030 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
21040 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21060 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
21070 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
21080 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
21090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210a0 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
210b0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
210c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
210d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
210e0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
210f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
21100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
21140 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
21150 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
21160 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
21170 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
21180 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
21190 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
211a0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
211b0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
211c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
211d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
211e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
211f0 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
21200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
21210 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
21220 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
21230 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
21240 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21290 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
212a0 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 43 6c 61  teBlobHandle Cla
212b0 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69  ss..    // Provi
212c0 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
212d0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d   support for unm
212e0 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 6c  anaged SQLite bl
212f0 6f 62 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20  ob objects...   
21300 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
21310 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 6c 6f   class SQLiteBlo
21320 62 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  bHandle : Critic
21330 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
21340 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
21350 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21360 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
21370 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
21380 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
21390 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
213a0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
213b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
21400 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
21410 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
21420 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
21430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
21480 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
21490 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
214a0 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42  r IntPtr(SQLiteB
214b0 6c 6f 62 48 61 6e 64 6c 65 20 62 6c 6f 62 29 0d  lobHandle blob).
214c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
214d0 20 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f 62          if (blob
214e0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
214f0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
21500 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21510 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
21520 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62           lock (b
21530 6c 6f 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  lob.syncRoot)..#
21540 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
21550 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
21570 74 75 72 6e 20 62 6c 6f 62 2e 68 61 6e 64 6c 65  turn blob.handle
21580 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
21590 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
215a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
215b0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
215c0 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
215d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
215e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21620 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
21630 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 6c 6f  ternal SQLiteBlo
21640 62 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  bHandle(SQLiteCo
21650 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
21660 6e 6e 2c 20 49 6e 74 50 74 72 20 62 6c 6f 62 29  nn, IntPtr blob)
21670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
21680 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
21690 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
216a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
216b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
216c0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
216d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
216e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
216f0 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d        this.cnn =
21700 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20   cnn;..         
21710 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
21720 28 62 6c 6f 62 29 3b 0d 0a 20 20 20 20 20 20 20  (blob);..       
21730 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
21740 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
21750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21790 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
217a0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 6c  private SQLiteBl
217b0 6f 62 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  obHandle()..    
217c0 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
217d0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
217e0 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
217f0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
21800 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
21810 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
21820 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f  DebugData.blobCo
21830 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  unt);..#endif.. 
21840 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
21850 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
21860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
218a0 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
218b0 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52   override bool R
218c0 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a  eleaseHandle()..
218d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
218e0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
218f0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
21900 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21910 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
21920 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
21930 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20  r localHandle = 
21940 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68  Interlocked.Exch
21950 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ange(..         
21960 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68             ref h
21970 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65  andle, IntPtr.Ze
21980 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ro);....        
21990 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
219a0 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
219b0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
219c0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
219d0 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f  iteBase.CloseBlo
219e0 62 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64  b(cnn, localHand
219f0 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  le);....#if !NET
21a00 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
21a10 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
21a20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
21a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21a40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21a50 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
21a60 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
21a70 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
21a80 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
21a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
21aa0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
21ab0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
21ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ad0 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b     "CloseBlob: {
21ae0 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
21af0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
21b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21b10 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
21b20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
21b30 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
21b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
21b50 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
21b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b70 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
21b80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21b90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
21ba0 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
21bb0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
21bc0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
21bd0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
21be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21bf0 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
21c00 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 68 61 6e  oseBlob(cnn, han
21c10 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
21c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
21c30 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
21c40 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
21c50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
21c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
21c70 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
21c80 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
21c90 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
21ca0 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
21cb0 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
21cc0 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  blobCount);..#en
21cd0 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
21ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21cf0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
21d00 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
21d10 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
21d20 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
21d30 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
21d40 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
21d50 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
21d60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
21d70 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
21d80 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
21d90 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
21da0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
21db0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
21dc0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
21dd0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
21de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
21df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21e00 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
21e10 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
21e20 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
21e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21e40 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
21e50 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
21e60 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
21e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
21e80 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 2c 20  CloseBlob: {0}, 
21e90 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
21ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21eb0 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
21ec0 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
21ed0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
21ee0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
21ef0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
21f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
21f10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21f20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
21f30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
21f40 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
21f50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
21f60 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
21f70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
21f90 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
21fa0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
21fb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
21fd0 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
21fe0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
21ff0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
22000 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
22010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
22020 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
22030 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
22040 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
22050 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
22060 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
22070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220b0 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
220c0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
220d0 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
220e0 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
220f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
22100 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
22110 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
22120 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c  ref DebugData.bl
22130 6f 62 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  obCount);..     
22140 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
22150 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
22160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
221a0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
221b0 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
221c0 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
221d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
221e0 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
221f0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
22200 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22210 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
22220 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
22230 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
22240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
22250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22260 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
22270 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
22280 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
22290 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
222a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
222b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
222c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22300 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
22310 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
22320 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
22330 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
22340 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
22350 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22360 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
22370 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
22380 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
22390 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
223a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
223b0 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
223c0 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
223d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
223e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
223f0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
22400 7d 0d 0a                                         }..