System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 768283fe1b2ead8271770f1ec7e131890758e92a:


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 0d 0a  ////////////....
6a30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6a40: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
6a50: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
6a60: 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  ns the value of 
6a70: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65  the specified se
6a80: 74 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65  tting, using the
6a90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63  ..      /// spec
6aa0: 69 66 69 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67  ified XML config
6ab0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20  uration file... 
6ac0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6ad0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
6ae0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
6af0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
6b00: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
6b10: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
6b20: 69 6f 6e 20 66 69 6c 65 20 74 6f 20 72 65 61 64  ion file to read
6b30: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
6b40: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
6b50: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
6b60: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
6b70: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
6b80: 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20  setting...      
6b90: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6ba0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6bb0: 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a  ame="default">..
6bc0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
6bd0: 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
6be0: 65 64 20 69 66 20 74 68 65 20 73 65 74 74 69 6e  ed if the settin
6bf0: 67 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73  g has not been s
6c00: 65 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20  et explicitly.. 
6c10: 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e       /// or cann
6c20: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
6c30: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
6c40: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
6c50: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 78   <param name="ex
6c60: 70 61 6e 64 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  pand">..      //
6c70: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 65 78  / Non-zero to ex
6c80: 70 61 6e 64 20 61 6e 79 20 65 6e 76 69 72 6f 6e  pand any environ
6c90: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 72 65  ment variable re
6ca0: 66 65 72 65 6e 63 65 73 20 63 6f 6e 74 61 69 6e  ferences contain
6cb0: 65 64 20 69 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ed in..      ///
6cc0: 20 74 68 65 20 73 65 74 74 69 6e 67 20 76 61 6c   the setting val
6cd0: 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ue to be returne
6ce0: 64 2e 20 20 54 68 69 73 20 68 61 73 20 6e 6f 20  d.  This has no 
6cf0: 65 66 66 65 63 74 20 6f 6e 20 74 68 65 20 2e 4e  effect on the .N
6d00: 45 54 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ET..      /// Co
6d10: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e  mpact Framework.
6d20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
6d30: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
6d40: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
6d50: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
6d60: 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 2d 4f  f the setting -O
6d70: 52 2d 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  R- the default v
6d80: 61 6c 75 65 20 73 70 65 63 69 66 69 65 64 20 62  alue specified b
6d90: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  y..      /// <pa
6da0: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 66  ramref name="def
6db0: 61 75 6c 74 22 20 2f 3e 20 69 66 20 69 74 20 68  ault" /> if it h
6dc0: 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20  as not been set 
6dd0: 65 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20  explicitly or.. 
6de0: 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20       /// cannot 
6df0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
6e00: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
6e10: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
6e20: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
6e30: 67 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  g GetSettingValu
6e40: 65 56 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  eViaXmlConfigFil
6e50: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
6e60: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 2f  ring fileName, /
6e70: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
6e80: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20     string name, 
6e90: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
6ea0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40          string @
6eb0: 64 65 66 61 75 6c 74 2c 20 2f 2a 20 69 6e 20 2a  default, /* in *
6ec0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f  /..          boo
6ed0: 6c 20 65 78 70 61 6e 64 20 20 20 20 20 20 2f 2a  l expand      /*
6ee0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
6ef0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
6f00: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
6f10: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6f20: 20 20 20 20 20 20 20 20 69 66 20 28 28 66 69 6c          if ((fil
6f30: 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c  eName == null) |
6f40: 7c 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  | (name == null)
6f50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
6f60: 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66       return @def
6f70: 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ault;....       
6f80: 20 20 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65         XmlDocume
6f90: 6e 74 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65  nt document = ne
6fa0: 77 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b  w XmlDocument();
6fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
6fc0: 20 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28    document.Load(
6fd0: 66 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68  fileName); /* th
6fe0: 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  row */....      
6ff0: 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65          XmlEleme
7000: 6e 74 20 65 6c 65 6d 65 6e 74 20 3d 20 64 6f 63  nt element = doc
7010: 75 6d 65 6e 74 2e 53 65 6c 65 63 74 53 69 6e 67  ument.SelectSing
7020: 6c 65 4e 6f 64 65 28 0d 0a 20 20 20 20 20 20 20  leNode(..       
7030: 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65             Helpe
7040: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
7050: 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66  ormat(CultureInf
7060: 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
7070: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
7080: 20 20 20 20 20 20 20 22 2f 63 6f 6e 66 69 67 75         "/configu
7090: 72 61 74 69 6f 6e 2f 61 70 70 53 65 74 74 69 6e  ration/appSettin
70a0: 67 73 2f 61 64 64 5b 40 6b 65 79 3d 27 7b 30 7d  gs/add[@key='{0}
70b0: 27 5d 22 2c 20 6e 61 6d 65 29 29 20 61 73 0d 0a  ']", name)) as..
70c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
70d0: 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 3b 20 2f 2a    XmlElement; /*
70e0: 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20   throw */....   
70f0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
7100: 6c 65 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d  lement != null).
7110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
7120: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7130: 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
7140: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
7150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7160: 20 28 65 6c 65 6d 65 6e 74 2e 48 61 73 41 74 74   (element.HasAtt
7170: 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29 29  ribute("value"))
7180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7190: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
71a0: 65 6c 65 6d 65 6e 74 2e 47 65 74 41 74 74 72 69  element.GetAttri
71b0: 62 75 74 65 28 22 76 61 6c 75 65 22 29 3b 0d 0a  bute("value");..
71c0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
71d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
71e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
71f0: 20 20 20 20 69 66 20 28 65 78 70 61 6e 64 20 26      if (expand &
7200: 26 20 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  & !String.IsNull
7210: 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d  OrEmpty(value)).
7220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7230: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45         value = E
7240: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e  nvironment.Expan
7250: 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  dEnvironmentVari
7260: 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 23  ables(value);..#
7270: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
7280: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
7290: 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  alue != null).. 
72a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72b0: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
72c0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
72d0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
72e0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
72f0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
7300: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
7310: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
7320: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
7330: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
7340: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
7350: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
7360: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
7370: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
7380: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
7390: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
73a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
73b0: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
73c0: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
73d0: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
73e0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
73f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
7400: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
7410: 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65  Culture, "Native
7420: 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20   library " +..  
7430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7440: 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20      "pre-loader 
7450: 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20 73 65  failed to get se
7460: 74 74 69 6e 67 20 5c 22 7b 30 7d 5c 22 20 76 61  tting \"{0}\" va
7470: 6c 75 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  lue " +..       
7480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
7490: 66 72 6f 6d 20 58 4d 4c 20 63 6f 6e 66 69 67 75  from XML configu
74a0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 5c 22 7b 31  ration file \"{1
74b0: 7d 5c 22 3a 20 7b 32 7d 22 2c 20 6e 61 6d 65 2c  }\": {2}", name,
74c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
74d0: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
74e0: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
74f0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
7500: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
7510: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
7520: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7530: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
7540: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
7550: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
7560: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
7570: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
7580: 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d  eturn @default;.
7590: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
75a0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
75b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
75f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7600: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
7610: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
7620: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
7630: 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74 69   specified setti
7640: 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 20 58 4d  ng, using the XM
7650: 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  L..      /// con
7660: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
7670: 61 6e 64 2f 6f 72 20 74 68 65 20 65 6e 76 69 72  and/or the envir
7680: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73  onment variables
7690: 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
76a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63  ..      /// proc
76b0: 65 73 73 20 61 6e 64 2f 6f 72 20 74 68 65 20 63  ess and/or the c
76c0: 75 72 72 65 6e 74 20 73 79 73 74 65 6d 2c 20 77  urrent system, w
76d0: 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  hen available...
76e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
76f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
7700: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
7710: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
7720: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73  he name of the s
7730: 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f  etting...      /
7740: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
7750: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7760: 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20  me="default">.. 
7770: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
7780: 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ue to be returne
7790: 64 20 69 66 20 74 68 65 20 73 65 74 74 69 6e 67  d if the setting
77a0: 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65   has not been se
77b0: 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20  t explicitly..  
77c0: 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f      /// or canno
77d0: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
77e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
77f0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
7800: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
7810: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
7820: 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 2d 4f  f the setting -O
7830: 52 2d 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  R- the default v
7840: 61 6c 75 65 20 73 70 65 63 69 66 69 65 64 20 62  alue specified b
7850: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  y..      /// <pa
7860: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 66  ramref name="def
7870: 61 75 6c 74 22 20 2f 3e 20 69 66 20 69 74 20 68  ault" /> if it h
7880: 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20  as not been set 
7890: 65 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20  explicitly or.. 
78a0: 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20       /// cannot 
78b0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 20 20  be determined.  
78c0: 42 79 20 64 65 66 61 75 6c 74 2c 20 61 6c 6c 20  By default, all 
78d0: 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20 65 78  references to ex
78e0: 69 73 74 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  isting..      //
78f0: 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  / environment va
7900: 72 69 61 62 6c 65 73 20 77 69 6c 6c 20 62 65 20  riables will be 
7910: 65 78 70 61 6e 64 65 64 20 74 6f 20 74 68 65 69  expanded to thei
7920: 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  r corresponding 
7930: 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 2f 2f  values..      //
7940: 2f 20 77 69 74 68 69 6e 20 74 68 65 20 76 61 6c  / within the val
7950: 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ue to be returne
7960: 64 20 75 6e 6c 65 73 73 20 65 69 74 68 65 72 20  d unless either 
7970: 74 68 65 20 22 4e 6f 5f 45 78 70 61 6e 64 22 20  the "No_Expand" 
7980: 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22 4e  or..      /// "N
7990: 6f 5f 45 78 70 61 6e 64 5f 3c 70 61 72 61 6d 72  o_Expand_<paramr
79a0: 65 66 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 20 2f  ef name="name" /
79b0: 3e 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  >" environment v
79c0: 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 5b  ariable is set [
79d0: 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e  to..      /// an
79e0: 79 74 68 69 6e 67 5d 2e 0d 0a 20 20 20 20 20 20  ything]...      
79f0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
7a00: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
7a10: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
7a20: 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20  SettingValue(.. 
7a30: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
7a40: 6e 61 6d 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a  name,    /* in *
7a50: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
7a60: 69 6e 67 20 40 64 65 66 61 75 6c 74 20 2f 2a 20  ing @default /* 
7a70: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
7a80: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66   )..      {..#if
7a90: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7aa0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7ab0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
7ac0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
7ad0: 20 74 68 65 20 73 70 65 63 69 61 6c 20 22 4e 6f   the special "No
7ae0: 5f 53 51 4c 69 74 65 47 65 74 53 65 74 74 69 6e  _SQLiteGetSettin
7af0: 67 56 61 6c 75 65 22 20 65 6e 76 69 72 6f 6e 6d  gValue" environm
7b00: 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ent..          /
7b10: 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65  /       variable
7b20: 20 69 73 20 73 65 74 20 5b 74 6f 20 61 6e 79 74   is set [to anyt
7b30: 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65 74 68  hing], this meth
7b40: 6f 64 20 77 69 6c 6c 20 61 6c 77 61 79 73 0d 0a  od will always..
7b50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
7b60: 20 20 20 72 65 74 75 72 6e 20 74 68 65 20 64 65     return the de
7b70: 66 61 75 6c 74 20 76 61 6c 75 65 2e 0d 0a 20 20  fault value...  
7b80: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7b90: 20 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f        if (Enviro
7ba0: 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
7bb0: 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20  mentVariable(.. 
7bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
7bd0: 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53 65 74 74  No_SQLiteGetSett
7be0: 69 6e 67 56 61 6c 75 65 22 29 20 21 3d 20 6e 75  ingValue") != nu
7bf0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
7c00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7c10: 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b  return @default;
7c20: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
7c30: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
7c40: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c80: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
7c90: 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20 3d        if (name =
7ca0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
7cb0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64         return @d
7cc0: 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20  efault;....     
7cd0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7d20: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
7d30: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
7d40: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
7d50: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
7d60: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
7d70: 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20 72 65   are about to re
7d80: 61 64 20 61 20 73 65 74 74 69 6e 67 20 76 61 6c  ad a setting val
7d90: 75 65 20 66 72 6f 6d 20 74 68 65 20 65 6e 76 69  ue from the envi
7da0: 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ronment..       
7db0: 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72 20 70     //       or p
7dc0: 6f 73 73 69 62 6c 79 20 66 72 6f 6d 20 74 68 65  ossibly from the
7dd0: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
7de0: 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65 20  on file; create 
7df0: 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  or..          //
7e00: 20 20 20 20 20 20 20 69 6e 63 72 65 6d 65 6e 74         increment
7e10: 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65   the appropriate
7e20: 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d   statistic now..
7e30: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
7e40: 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
7e50: 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74 74  ta.IncrementSett
7e60: 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d  ingReadCount(nam
7e70: 65 2c 20 66 61 6c 73 65 29 3b 0d 0a 23 65 6e 64  e, false);..#end
7e80: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
7e90: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7ea0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
7ef0: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65 78           bool ex
7f00: 70 61 6e 64 20 3d 20 74 72 75 65 3b 20 2f 2a 20  pand = true; /* 
7f10: 53 48 41 52 45 44 3a 20 45 6e 76 69 72 6f 6e 6d  SHARED: Environm
7f20: 65 6e 74 20 2d 41 4e 44 2d 20 58 4d 4c 20 63 6f  ent -AND- XML co
7f30: 6e 66 69 67 20 66 69 6c 65 2e 20 2a 2f 0d 0a 0d  nfig file. */...
7f40: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
7f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f90: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7fa0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7fb0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  RK..          st
7fc0: 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c  ring value = nul
7fd0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
7fe0: 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  if (Environment.
7ff0: 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
8000: 72 69 61 62 6c 65 28 22 4e 6f 5f 45 78 70 61 6e  riable("No_Expan
8010: 64 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  d") != null)..  
8020: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8030: 20 20 20 20 20 20 20 20 20 65 78 70 61 6e 64 20           expand 
8040: 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
8050: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
8060: 20 65 6c 73 65 20 69 66 20 28 45 6e 76 69 72 6f   else if (Enviro
8070: 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
8080: 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20  mentVariable(.. 
8090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80a0: 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
80b0: 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
80c0: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
80d0: 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
80e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f               "No
80f0: 5f 45 78 70 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61  _Expand_{0}", na
8100: 6d 65 29 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  me)) != null).. 
8110: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8120: 20 20 20 20 20 20 20 20 20 20 65 78 70 61 6e 64            expand
8130: 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
8140: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8150: 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69      value = Envi
8160: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
8170: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 6e  onmentVariable(n
8180: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
8190: 20 20 20 69 66 20 28 65 78 70 61 6e 64 20 26 26     if (expand &&
81a0: 20 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   !String.IsNullO
81b0: 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
81c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
81d0: 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  lue = Environmen
81e0: 74 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d  t.ExpandEnvironm
81f0: 65 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c  entVariables(val
8200: 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
8210: 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e    if (value != n
8220: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
8230: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
8240: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
8250: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
8260: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 4e 6f  NOTE: If the "No
8270: 5f 53 51 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67  _SQLiteXmlConfig
8280: 46 69 6c 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  File" environmen
8290: 74 20 76 61 72 69 61 62 6c 65 20 69 73 0d 0a 20  t variable is.. 
82a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
82b0: 20 20 73 65 74 20 5b 74 6f 20 61 6e 79 74 68 69    set [to anythi
82c0: 6e 67 5d 2c 20 74 68 69 73 20 6d 65 74 68 6f 64  ng], this method
82d0: 20 77 69 6c 6c 20 4e 45 56 45 52 20 72 65 61 64   will NEVER read
82e0: 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
82f0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 58 4d       //       XM
8300: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
8310: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  file...         
8320: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
8330: 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47  f (Environment.G
8340: 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  etEnvironmentVar
8350: 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  iable(..        
8360: 20 20 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69          "No_SQLi
8370: 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22  teXmlConfigFile"
8380: 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  ) != null)..    
8390: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
83a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64         return @d
83b0: 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  efault;..       
83c0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
83d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
83e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8420: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  ...          #re
8430: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
8440: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
8450: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
8460: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
8470: 45 3a 20 57 65 20 61 72 65 20 61 62 6f 75 74 20  E: We are about 
8480: 74 6f 20 72 65 61 64 20 61 20 73 65 74 74 69 6e  to read a settin
8490: 67 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  g value from the
84a0: 20 58 4d 4c 0d 0a 20 20 20 20 20 20 20 20 20 20   XML..          
84b0: 2f 2f 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75  //       configu
84c0: 72 61 74 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65  ration file; cre
84d0: 61 74 65 20 6f 72 20 69 6e 63 72 65 6d 65 6e 74  ate or increment
84e0: 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65   the appropriate
84f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
8500: 20 20 20 20 20 73 74 61 74 69 73 74 69 63 20 6e       statistic n
8510: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ow...          /
8520: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62  /..          Deb
8530: 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74  ugData.Increment
8540: 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  SettingReadCount
8550: 28 6e 61 6d 65 2c 20 74 72 75 65 29 3b 0d 0a 23  (name, true);..#
8560: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
8570: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
8580: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
8590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
85d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
85e0: 72 6e 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c  rn GetSettingVal
85f0: 75 65 56 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69  ueViaXmlConfigFi
8600: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
8610: 20 20 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46     GetXmlConfigF
8620: 69 6c 65 4e 61 6d 65 28 29 2c 20 6e 61 6d 65 2c  ileName(), name,
8630: 20 40 64 65 66 61 75 6c 74 2c 20 65 78 70 61 6e   @default, expan
8640: 64 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  d);..      }....
8650: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
8660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
86a0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
86b0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
86c0: 4b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  K..      private
86d0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 4c   static string L
86e0: 69 73 74 54 6f 53 74 72 69 6e 67 28 49 4c 69 73  istToString(ILis
86f0: 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73 74 29 0d  t<string> list).
8700: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
8710: 20 20 20 20 69 66 20 28 6c 69 73 74 20 3d 3d 20      if (list == 
8720: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
8730: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
8740: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 53  ;....          S
8750: 74 72 69 6e 67 42 75 69 6c 64 65 72 20 72 65 73  tringBuilder res
8760: 75 6c 74 20 3d 20 6e 65 77 20 53 74 72 69 6e 67  ult = new String
8770: 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20  Builder();....  
8780: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
8790: 28 73 74 72 69 6e 67 20 65 6c 65 6d 65 6e 74 20  (string element 
87a0: 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20  in list)..      
87b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
87c0: 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74       if (element
87d0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
87e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
87f0: 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
8800: 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75          if (resu
8810: 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a  lt.Length > 0)..
8820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8830: 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28    result.Append(
8840: 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ' ');....       
8850: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70         result.Ap
8860: 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29 3b 0d 0a  pend(element);..
8870: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
8880: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8890: 72 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67 28  result.ToString(
88a0: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
88b0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8900: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
8910: 73 74 61 74 69 63 20 69 6e 74 20 43 68 65 63 6b  static int Check
8920: 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 73  ForArchitectures
8930: 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 0d 0a 20  AndPlatforms(.. 
8940: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
8950: 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
8960: 20 20 20 20 20 20 72 65 66 20 4c 69 73 74 3c 73        ref List<s
8970: 74 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 0d 0a  tring> matches..
8980: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
8990: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
89a0: 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d  int result = 0;.
89b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
89c0: 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e 75 6c 6c  (matches == null
89d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
89e0: 20 6d 61 74 63 68 65 73 20 3d 20 6e 65 77 20 4c   matches = new L
89f0: 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a  ist<string>();..
8a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
8a10: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
8a20: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
8a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8a40: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
8a50: 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72  OrEmpty(director
8a60: 79 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  y) &&..         
8a70: 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73           (proces
8a80: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
8a90: 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e 75 6c 6c  latforms != null
8aa0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
8ab0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8ac0: 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28         foreach (
8ad0: 4b 65 79 56 61 6c 75 65 50 61 69 72 3c 73 74 72  KeyValuePair<str
8ae0: 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 61 69  ing, string> pai
8af0: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
8b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
8b10: 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  n processorArchi
8b20: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
8b30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8b40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8b60: 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78 69 73   (Directory.Exis
8b70: 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  ts(MaybeCombineP
8b80: 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 70  ath(directory, p
8b90: 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20 20  air.Key)))..    
8ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8bb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
8bd0: 61 74 63 68 65 73 2e 41 64 64 28 70 61 69 72 2e  atches.Add(pair.
8be0: 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  Key);..         
8bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c00: 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20   result++;..    
8c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c20: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
8c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
8c40: 69 6e 67 20 76 61 6c 75 65 20 3d 20 70 61 69 72  ing value = pair
8c50: 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  .Value;....     
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c70: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
8c80: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
8c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
8ca0: 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
8cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8cc0: 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e    if (Directory.
8cd0: 45 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62  Exists(MaybeComb
8ce0: 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72  inePath(director
8cf0: 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a 20 20 20  y, value)))..   
8d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d30: 6d 61 74 63 68 65 73 2e 41 64 64 28 76 61 6c 75  matches.Add(valu
8d40: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
8d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
8d60: 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20  esult++;..      
8d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d80: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
8d90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
8da0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8db0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8dc0: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
8dd0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
8de0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8e30: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
8e40: 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b 41  atic bool CheckA
8e50: 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65 28  ssemblyCodeBase(
8e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73 73 65  ..          Asse
8e70: 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 2c 0d 0a  mbly assembly,..
8e80: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
8e90: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20  ring fileName.. 
8ea0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
8eb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
8ec0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
8ed0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
8ee0: 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e  f (assembly == n
8ef0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
8f00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
8f10: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
8f20: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f         string co
8f30: 64 65 42 61 73 65 20 3d 20 61 73 73 65 6d 62 6c  deBase = assembl
8f40: 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a 20  y.CodeBase;.... 
8f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
8f60: 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
8f70: 45 6d 70 74 79 28 63 6f 64 65 42 61 73 65 29 29  Empty(codeBase))
8f80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8f90: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
8fa0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
8fb0: 20 20 20 55 72 69 20 75 72 69 20 3d 20 6e 65 77     Uri uri = new
8fc0: 20 55 72 69 28 63 6f 64 65 42 61 73 65 29 3b 0d   Uri(codeBase);.
8fd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
8fe0: 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69 6c 65 4e  tring localFileN
8ff0: 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63 61 6c 50  ame = uri.LocalP
9000: 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ath;....        
9010: 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e        if (!File.
9020: 45 78 69 73 74 73 28 6c 6f 63 61 6c 46 69 6c 65  Exists(localFile
9030: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
9040: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9050: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
9060: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
9070: 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68  directory = Path
9080: 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d  .GetDirectoryNam
9090: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
90a0: 20 20 20 20 20 20 6c 6f 63 61 6c 46 69 6c 65 4e        localFileN
90b0: 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  ame); /* throw *
90c0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
90d0: 20 20 20 73 74 72 69 6e 67 20 78 6d 6c 43 6f 6e     string xmlCon
90e0: 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 4d 61  figFileName = Ma
90f0: 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d  ybeCombinePath(.
9100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9110: 20 20 20 64 69 72 65 63 74 6f 72 79 2c 20 58 6d     directory, Xm
9120: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29  lConfigFileName)
9130: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9140: 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
9150: 74 73 28 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  ts(xmlConfigFile
9160: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
9170: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
9180: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
9190: 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d  TRACE_DETECTION.
91a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
91b0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
91c0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
91d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91e0: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
91f0: 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
9200: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
9210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9220: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
9230: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
9240: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
9250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9260: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
9270: 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e   pre-loader foun
9280: 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  d XML configurat
9290: 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20  ion file " +..  
92a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92b0: 20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f 64          "via cod
92c0: 65 20 62 61 73 65 20 66 6f 72 20 63 75 72 72 65  e base for curre
92d0: 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61  ntly executing a
92e0: 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22  ssembly: \"{0}\"
92f0: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
9300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 6d                xm
9310: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29  lConfigFileName)
9320: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
9330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9340: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
9350: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9370: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9380: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
9390: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
93a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
93b0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
93c0: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
93d0: 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61  me = localFileNa
93e0: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
93f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
9400: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
9410: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9420: 20 20 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e        List<strin
9430: 67 3e 20 6d 61 74 63 68 65 73 20 3d 20 6e 75 6c  g> matches = nul
9440: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
9450: 20 20 20 20 69 66 20 28 43 68 65 63 6b 46 6f 72      if (CheckFor
9460: 41 72 63 68 69 74 65 63 74 75 72 65 73 41 6e 64  ArchitecturesAnd
9470: 50 6c 61 74 66 6f 72 6d 73 28 64 69 72 65 63 74  Platforms(direct
9480: 6f 72 79 2c 20 72 65 66 20 6d 61 74 63 68 65 73  ory, ref matches
9490: 29 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  ) > 0)..        
94a0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
94b0: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
94c0: 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d  TRACE_DETECTION.
94d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
94e0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
94f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9510: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
9520: 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
9530: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
9540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9550: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
9560: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
9570: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
9580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9590: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
95a0: 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e   pre-loader foun
95b0: 64 20 6e 61 74 69 76 65 20 73 75 62 2d 64 69 72  d native sub-dir
95c0: 65 63 74 6f 72 69 65 73 20 22 20 2b 0d 0a 20 20  ectories " +..  
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95e0: 20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f 64          "via cod
95f0: 65 20 62 61 73 65 20 66 6f 72 20 63 75 72 72 65  e base for curre
9600: 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61  ntly executing a
9610: 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22  ssembly: \"{0}\"
9620: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
9630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 69                Li
9640: 73 74 54 6f 53 74 72 69 6e 67 28 6d 61 74 63 68  stToString(match
9650: 65 73 29 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  es))); /* throw 
9660: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
9670: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9680: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
9690: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
96a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
96b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
96c0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
96d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
96e0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
9700: 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69  leName = localFi
9710: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
9720: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
9730: 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
9740: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9750: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9760: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
9770: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
9780: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
9790: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
97a0: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
97b0: 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
97c0: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
97d0: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
97e0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
97f0: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
9800: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
9810: 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
9820: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
9830: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
9850: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
9860: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
9870: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
9880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9890: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
98a0: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
98b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98c0: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
98d0: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
98e0: 61 69 6c 65 64 20 74 6f 20 63 68 65 63 6b 20 63  ailed to check c
98f0: 6f 64 65 20 62 61 73 65 20 22 20 2b 0d 0a 20 20  ode base " +..  
9900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9910: 20 20 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74      "for current
9920: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
9930: 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29  embly: {0}", e))
9940: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
9950: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
9970: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
9980: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9990: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
99a0: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
99b0: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
99c0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
99d0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
99e0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d   false;..      }
99f0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
9a00: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
9a50: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
9a60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
9a70: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
9a80: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f  the directory fo
9a90: 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63  r the assembly c
9aa0: 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 0d 0a  urrently being..
9ab0: 20 20 20 20 20 20 2f 2f 2f 20 65 78 65 63 75 74        /// execut
9ac0: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
9ad0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
9ae0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
9af0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69        /// The di
9b00: 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
9b10: 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
9b20: 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65  ly being execute
9b30: 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a  d -OR- null if..
9b40: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e        /// it can
9b50: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
9b60: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
9b70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
9b80: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
9b90: 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d 62 6c  tring GetAssembl
9ba0: 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  yDirectory()..  
9bb0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9bc0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
9bd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9be0: 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
9bf0: 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65  ly = Assembly.Ge
9c00: 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62  tExecutingAssemb
9c10: 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly();....       
9c20: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
9c30: 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  bly == null)..  
9c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c50: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
9c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
9c70: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20  ring fileName = 
9c80: 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41  null;....#if PLA
9c90: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9ca0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
9cb0: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61        AssemblyNa
9cc0: 6d 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20  me assemblyName 
9cd0: 3d 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61  = assembly.GetNa
9ce0: 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  me();....       
9cf0: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
9d00: 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  blyName == null)
9d10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9d20: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
9d30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9d40: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73    fileName = ass
9d50: 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61  emblyName.CodeBa
9d60: 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  se;..#else..    
9d70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 43            if (!C
9d80: 68 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65  heckAssemblyCode
9d90: 42 61 73 65 28 61 73 73 65 6d 62 6c 79 2c 20 72  Base(assembly, r
9da0: 65 66 20 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ef fileName)).. 
9db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9dc0: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65   fileName = asse
9dd0: 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a  mbly.Location;..
9de0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
9df0: 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
9e00: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
9e10: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
9e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
9e30: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
9e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
9e50: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
9e60: 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
9e70: 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b  yName(fileName);
9e80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9e90: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
9ea0: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
9eb0: 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
9ec0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9ed0: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
9ee0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
9ef0: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
9f00: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
9f10: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
9f20: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
9f30: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
9f40: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
9f50: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
9f60: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
9f70: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
9f80: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
9f90: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
9fa0: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
9fb0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
9fc0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fe0: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
9ff0: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
a000: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
a010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a020: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
a030: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
a040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a050: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
a060: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
a070: 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20 64   failed to get d
a080: 69 72 65 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20  irectory " +..  
a090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a0a0: 20 20 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74      "for current
a0b0: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
a0c0: 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29  embly: {0}", e))
a0d0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
a0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
a0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
a100: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
a110: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a120: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
a130: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
a140: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
a150: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
a160: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a170: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
a180: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
a190: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
a1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1e0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
a1f0: 65 67 69 6f 6e 20 4f 70 74 69 6f 6e 61 6c 20 4e  egion Optional N
a200: 61 74 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62  ative SQLite Lib
a210: 72 61 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67  rary Pre-Loading
a220: 20 43 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 0d   Code..      //.
a230: 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  .      // NOTE: 
a240: 49 66 20 77 65 20 61 72 65 20 6c 6f 6f 6b 69 6e  If we are lookin
a250: 67 20 66 6f 72 20 74 68 65 20 73 74 61 6e 64 61  g for the standa
a260: 72 64 20 53 51 4c 69 74 65 20 44 4c 4c 20 28 22  rd SQLite DLL ("
a270: 73 71 6c 69 74 65 33 2e 64 6c 6c 22 29 2c 0d 0a  sqlite3.dll"),..
a280: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
a290: 68 65 20 69 6e 74 65 72 6f 70 20 44 4c 4c 20 28  he interop DLL (
a2a0: 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
a2b0: 64 6c 6c 22 29 2c 20 6f 72 20 77 65 20 61 72 65  dll"), or we are
a2c0: 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 0d   running on the.
a2d0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
a2e0: 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
a2f0: 6d 65 77 6f 72 6b 2c 20 77 65 20 73 68 6f 75 6c  mework, we shoul
a300: 64 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 63  d include this c
a310: 6f 64 65 20 28 6f 6e 6c 79 20 69 66 20 74 68 65  ode (only if the
a320: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
a330: 20 66 65 61 74 75 72 65 20 68 61 73 20 61 63 74   feature has act
a340: 75 61 6c 6c 79 20 62 65 65 6e 20 65 6e 61 62 6c  ually been enabl
a350: 65 64 29 2e 20 20 54 68 69 73 20 63 6f 64 65 20  ed).  This code 
a360: 77 6f 75 6c 64 20 62 65 20 74 6f 74 61 6c 6c 79  would be totally
a370: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
a380: 20 72 65 64 75 6e 64 61 6e 74 20 69 66 20 74 68   redundant if th
a390: 69 73 20 6d 6f 64 75 6c 65 20 68 61 73 20 62 65  is module has be
a3a0: 65 6e 20 62 75 6e 64 6c 65 64 20 69 6e 74 6f 20  en bundled into 
a3b0: 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 0d 0a  the mixed-mode..
a3c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
a3d0: 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20  ssembly...      
a3e0: 2f 2f 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  //..#if SQLITE_S
a3f0: 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49  TANDARD || USE_I
a400: 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c  NTEROP_DLL || PL
a410: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
a420: 41 4d 45 57 4f 52 4b 0d 0a 0d 0a 20 20 20 20 20  AMEWORK....     
a430: 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
a440: 54 45 3a 20 4f 6e 6c 79 20 63 6f 6d 70 69 6c 65  TE: Only compile
a450: 20 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6c   in the native l
a460: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 20  ibrary pre-load 
a470: 63 6f 64 65 20 69 66 20 74 68 65 20 66 65 61 74  code if the feat
a480: 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ure..      //   
a490: 20 20 20 20 68 61 73 20 62 65 65 6e 20 65 6e 61      has been ena
a4a0: 62 6c 65 64 20 66 6f 72 20 74 68 69 73 20 62 75  bled for this bu
a4b0: 69 6c 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  ild...      //..
a4c0: 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49  #if PRELOAD_NATI
a4d0: 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20  VE_LIBRARY..    
a4e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
a4f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
a500: 61 6d 65 20 6f 66 20 74 68 65 20 65 6e 76 69 72  ame of the envir
a510: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
a520: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70  containing the p
a530: 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20  rocessor..      
a540: 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65  /// architecture
a550: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
a560: 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
a570: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a580: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
a590: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
a5a0: 72 69 6e 67 20 50 52 4f 43 45 53 53 4f 52 5f 41  ring PROCESSOR_A
a5b0: 52 43 48 49 54 45 43 54 55 52 45 20 3d 0d 0a 20  RCHITECTURE =.. 
a5c0: 20 20 20 20 20 20 20 20 20 22 50 52 4f 43 45 53           "PROCES
a5d0: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
a5e0: 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  ";....      ////
a5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a630: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
a640: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
a650: 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ata..      /// <
a660: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a670: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
a680: 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20  odule file name 
a690: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
a6a0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72  QLite library or
a6b0: 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f   null...      //
a6c0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a6d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a6e0: 74 69 63 20 73 74 72 69 6e 67 20 5f 53 51 4c 69  tic string _SQLi
a6f0: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69  teNativeModuleFi
a700: 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a  leName = null;..
a710: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
a720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a760: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
a770: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
a780: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
a790: 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 74  ule handle for t
a7a0: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
a7b0: 20 6c 69 62 72 61 72 79 20 6f 72 20 74 68 65 20   library or the 
a7c0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  value..      ///
a7d0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a 20   IntPtr.Zero... 
a7e0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a7f0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
a800: 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  te static IntPtr
a810: 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   _SQLiteNativeMo
a820: 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 49 6e 74  duleHandle = Int
a830: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
a840: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
a850: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
a860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
a8a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
a8b0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
a8c0: 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 62 61  etermines the ba
a8d0: 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 28 77 69  se file name (wi
a8e0: 74 68 6f 75 74 20 61 6e 79 20 64 69 72 65 63 74  thout any direct
a8f0: 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 29  ory information)
a900: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20  ..      /// for 
a910: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
a920: 65 20 6c 69 62 72 61 72 79 20 74 6f 20 62 65 20  e library to be 
a930: 70 72 65 2d 6c 6f 61 64 65 64 20 62 79 20 74 68  pre-loaded by th
a940: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
a950: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a960: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
a970: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
a980: 54 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61  The base file na
a990: 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
a9a0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
a9b0: 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65   to be pre-loade
a9c0: 64 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  d by..      /// 
a9d0: 74 68 69 73 20 63 6c 61 73 73 20 2d 4f 52 2d 20  this class -OR- 
a9e0: 6e 75 6c 6c 20 69 66 20 69 74 73 20 76 61 6c 75  null if its valu
a9f0: 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  e cannot be dete
aa00: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
aa10: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
aa20: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
aa30: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 4e  atic string GetN
aa40: 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65  ativeLibraryFile
aa50: 4e 61 6d 65 4f 6e 6c 79 28 29 0d 0a 20 20 20 20  NameOnly()..    
aa60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73    {..          s
aa70: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e  tring fileNameOn
aa80: 6c 79 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  ly = GetSettingV
aa90: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
aaa0: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
aab0: 69 74 65 5f 4c 69 62 72 61 72 79 46 69 6c 65 4e  ite_LibraryFileN
aac0: 61 6d 65 4f 6e 6c 79 22 2c 20 6e 75 6c 6c 29 3b  ameOnly", null);
aad0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
aae0: 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 21   (fileNameOnly !
aaf0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
ab00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
ab10: 6c 65 4e 61 6d 65 4f 6e 6c 79 3b 0d 0a 0d 0a 20  leNameOnly;.... 
ab20: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
ab30: 53 51 4c 49 54 45 5f 44 4c 4c 3b 20 2f 2a 20 43  SQLITE_DLL; /* C
ab40: 4f 4d 50 41 54 20 2a 2f 0d 0a 20 20 20 20 20 20  OMPAT */..      
ab50: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
ab60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aba0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
abb0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
abc0: 20 2f 2f 2f 20 53 65 61 72 63 68 65 73 20 66 6f   /// Searches fo
abd0: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
abe0: 69 74 65 20 6c 69 62 72 61 72 79 20 69 6e 20 74  ite library in t
abf0: 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e  he directory con
ac00: 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 2f  taining..      /
ac10: 2f 2f 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  // the assembly 
ac20: 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20  currently being 
ac30: 65 78 65 63 75 74 65 64 20 61 73 20 77 65 6c 6c  executed as well
ac40: 20 61 73 20 74 68 65 20 62 61 73 65 20 64 69 72   as the base dir
ac50: 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 2f 2f  ectory..      //
ac60: 2f 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  / for the curren
ac70: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  t application do
ac80: 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  main...      ///
ac90: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
aca0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
acb0: 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72  me="baseDirector
acc0: 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55  y">..      /// U
acd0: 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
ace0: 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
acf0: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
ad00: 72 65 66 65 72 20 74 6f 20 74 68 65 20 62 61 73  refer to the bas
ad10: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72  e..      /// dir
ad20: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
ad30: 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  g the native SQL
ad40: 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
ad50: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
ad60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
ad70: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73  am name="process
ad80: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e  orArchitecture">
ad90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e  ..      /// Upon
ada0: 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
adb0: 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65  arameter will be
adc0: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66   modified to ref
add0: 65 72 20 74 6f 20 74 68 65 20 6e 61 6d 65 0d 0a  er to the name..
ade0: 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65        /// of the
adf0: 20 69 6d 6d 65 64 69 61 74 65 20 64 69 72 65 63   immediate direc
ae00: 74 6f 72 79 20 28 69 2e 65 2e 20 74 68 65 20 6f  tory (i.e. the o
ae10: 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62  ffset from the b
ae20: 61 73 65 20 64 69 72 65 63 74 6f 72 79 29 0d 0a  ase directory)..
ae30: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69        /// contai
ae40: 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20  ning the native 
ae50: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
ae60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
ae70: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
ae80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
ae90: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 28 73 75  /// Non-zero (su
aea0: 63 63 65 73 73 29 20 69 66 20 74 68 65 20 6e 61  ccess) if the na
aeb0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
aec0: 61 72 79 20 77 61 73 20 66 6f 75 6e 64 3b 20 6f  ary was found; o
aed0: 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20  therwise,..     
aee0: 20 2f 2f 2f 20 7a 65 72 6f 20 28 66 61 69 6c 75   /// zero (failu
aef0: 72 65 29 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re)...      /// 
af00: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
af10: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
af20: 20 62 6f 6f 6c 20 53 65 61 72 63 68 46 6f 72 44   bool SearchForD
af30: 69 72 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20  irectory(..     
af40: 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
af50: 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20  baseDirectory,  
af60: 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d        /* out */.
af70: 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73  .          ref s
af80: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
af90: 72 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20 6f  rchitecture /* o
afa0: 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
afb0: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
afc0: 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
afd0: 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
afe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72               "Pr
aff0: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4e 6f 53 65  eLoadSQLite_NoSe
b000: 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79  archForDirectory
b010: 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c  ", null) != null
b020: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
b030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
b040: 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 44  turn false; /* D
b050: 49 53 41 42 4c 45 44 20 2a 2f 0d 0a 20 20 20 20  ISABLED */..    
b060: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
b070: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
b080: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65     // NOTE: Dete
b090: 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66  rmine the base f
b0a0: 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
b0b0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
b0c0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
b0d0: 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74     //       If t
b0e0: 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e  his is not known
b0f0: 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20   by this class, 
b100: 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e  we cannot contin
b110: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ue...          /
b120: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
b130: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  ing fileNameOnly
b140: 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72   = GetNativeLibr
b150: 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28  aryFileNameOnly(
b160: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
b170: 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  if (fileNameOnly
b180: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
b190: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b1a0: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
b1b0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
b1c0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
b1d0: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 62 61 73   the list of bas
b1e0: 65 20 64 69 72 65 63 74 6f 72 69 65 73 20 61 6e  e directories an
b1f0: 64 20 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61 74  d processor/plat
b200: 66 6f 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20  form..          
b210: 2f 2f 20 20 20 20 20 20 20 6e 61 6d 65 73 2e 20  //       names. 
b220: 20 54 68 65 73 65 20 6c 69 73 74 73 20 77 69 6c   These lists wil
b230: 6c 20 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c  l be used to hel
b240: 70 20 6c 6f 63 61 74 65 20 74 68 65 20 6e 61 74  p locate the nat
b250: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ive..          /
b260: 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 63  /       SQLite c
b270: 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72 20  ore library (or 
b280: 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
b290: 29 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69 6e  ) to pre-load in
b2a0: 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  to..          //
b2b0: 20 20 20 20 20 20 20 74 68 69 73 20 70 72 6f 63         this proc
b2c0: 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ess...          
b2d0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
b2e0: 72 69 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72 69  ring[] directori
b2f0: 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  es = {..        
b300: 20 20 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c        GetAssembl
b310: 79 44 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a 23  yDirectory(),..#
b320: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b330: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b340: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 70 70               App
b350: 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
b360: 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
b370: 72 79 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ry,..#endif..   
b380: 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20         };....   
b390: 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20         string[] 
b3a0: 73 75 62 44 69 72 65 63 74 6f 72 69 65 73 20 3d  subDirectories =
b3b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b3c0: 20 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72    GetProcessorAr
b3d0: 63 68 69 74 65 63 74 75 72 65 28 29 2c 20 47 65  chitecture(), Ge
b3e0: 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e 75  tPlatformName(nu
b3f0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ll)..          }
b400: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ;....          f
b410: 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 64  oreach (string d
b420: 69 72 65 63 74 6f 72 79 20 69 6e 20 64 69 72 65  irectory in dire
b430: 63 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20  ctories)..      
b440: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b450: 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
b460: 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
b470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
b480: 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
b490: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
b4a0: 68 20 28 73 74 72 69 6e 67 20 73 75 62 44 69 72  h (string subDir
b4b0: 65 63 74 6f 72 79 20 69 6e 20 73 75 62 44 69 72  ectory in subDir
b4c0: 65 63 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20  ectories)..     
b4d0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
b4f0: 20 28 73 75 62 44 69 72 65 63 74 6f 72 79 20 3d   (subDirectory =
b500: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
b510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
b520: 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
b530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
b540: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20  ring fileName = 
b550: 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
b560: 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
b570: 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
b580: 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 43            MaybeC
b590: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
b5a0: 74 6f 72 79 2c 20 73 75 62 44 69 72 65 63 74 6f  tory, subDirecto
b5b0: 72 79 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ry),..          
b5c0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
b5d0: 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20  NameOnly));.... 
b5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b5f0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
b600: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
b610: 49 66 20 74 68 65 20 53 51 4c 69 74 65 20 44 4c  If the SQLite DL
b620: 4c 20 66 69 6c 65 20 65 78 69 73 74 73 2c 20 72  L file exists, r
b630: 65 74 75 72 6e 20 73 75 63 63 65 73 73 2e 0d 0a  eturn success...
b640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b650: 20 20 2f 2f 20 20 20 20 20 20 20 50 72 69 6f 72    //       Prior
b660: 20 74 6f 20 72 65 74 75 72 6e 69 6e 67 2c 20 73   to returning, s
b670: 65 74 20 74 68 65 20 62 61 73 65 20 64 69 72 65  et the base dire
b680: 63 74 6f 72 79 20 61 6e 64 0d 0a 20 20 20 20 20  ctory and..     
b690: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
b6a0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20        processor 
b6b0: 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20  architecture to 
b6c0: 72 65 66 6c 65 63 74 20 74 68 65 20 6c 6f 63 61  reflect the loca
b6d0: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  tion..          
b6e0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
b6f0: 20 77 68 65 72 65 20 69 74 20 77 61 73 20 66 6f   where it was fo
b700: 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  und...          
b710: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
b730: 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69   (File.Exists(fi
b740: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
b750: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
b760: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
b770: 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54 45  20 && TRACE_DETE
b780: 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20  CTION..         
b790: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
b7a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b7b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7d0: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
b7e0: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
b7f0: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
b800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b820: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
b830: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
b840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b850: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
b860: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
b870: 6f 61 64 65 72 20 73 65 61 72 63 68 20 66 6f 75  oader search fou
b880: 6e 64 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20  nd file " +..   
b890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8a0: 20 20 20 20 20 20 20 20 20 20 20 22 6e 61 6d 65             "name
b8b0: 20 5c 22 7b 30 7d 5c 22 2c 20 72 65 74 75 72 6e   \"{0}\", return
b8c0: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 5c 22  ing directory \"
b8d0: 7b 31 7d 5c 22 20 61 6e 64 20 22 20 2b 0d 0a 20  {1}\" and " +.. 
b8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 75               "su
b900: 62 2d 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 32  b-directory \"{2
b910: 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d  }\"...", fileNam
b920: 65 2c 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  e, directory,.. 
b930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b940: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62               sub
b950: 44 69 72 65 63 74 6f 72 79 29 29 3b 20 2f 2a 20  Directory)); /* 
b960: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
b970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b980: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
b990: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
b9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9d0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
b9e0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
b9f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
ba00: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
ba10: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
ba20: 44 69 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65  Directory = dire
ba30: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
ba40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
ba50: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
ba60: 75 72 65 20 3d 20 73 75 62 44 69 72 65 63 74 6f  ure = subDirecto
ba70: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
ba80: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
ba90: 6e 20 74 72 75 65 3b 20 2f 2a 20 46 4f 55 4e 44  n true; /* FOUND
baa0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
bab0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
bac0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
bad0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
bae0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
baf0: 3b 20 2f 2a 20 4e 4f 54 20 46 4f 55 4e 44 20 2a  ; /* NOT FOUND *
bb00: 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  /..      }....  
bb10: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
bb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
bb60: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
bb70: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
bb80: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
bb90: 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  s the base direc
bba0: 74 6f 72 79 20 6f 66 20 74 68 65 20 63 75 72 72  tory of the curr
bbb0: 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d  ent application.
bbc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69  .      /// domai
bbd0: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
bbe0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bbf0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
bc00: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73       /// The bas
bc10: 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  e directory for 
bc20: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
bc30: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d  ication domain -
bc40: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a  OR- null if it..
bc50: 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74        /// cannot
bc60: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
bc70: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
bc80: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
bc90: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
bca0: 6e 67 20 47 65 74 42 61 73 65 44 69 72 65 63 74  ng GetBaseDirect
bcb0: 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ory()..      {..
bcc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
bcd0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
bce0: 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64   If the "PreLoad
bcf0: 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63  SQLite_BaseDirec
bd00: 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  tory" environmen
bd10: 74 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20  t variable..    
bd20: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
bd30: 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76 65  s set, use it ve
bd40: 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62  rbatim for the b
bd50: 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  ase directory...
bd60: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
bd70: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
bd80: 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 53 65  irectory = GetSe
bd90: 74 74 69 6e 67 56 61 6c 75 65 28 22 50 72 65 4c  ttingValue("PreL
bda0: 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69  oadSQLite_BaseDi
bdb0: 72 65 63 74 6f 72 79 22 2c 0d 0a 20 20 20 20 20  rectory",..     
bdc0: 20 20 20 20 20 20 20 20 20 6e 75 6c 6c 29 3b 0d           null);.
bdd0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
bde0: 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75  (directory != nu
bdf0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
be00: 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74     return direct
be10: 6f 72 79 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ory;....#if !PLA
be20: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
be30: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
be40: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
be50: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
be60: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55  "PreLoadSQLite_U
be70: 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  seAssemblyDirect
be80: 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  ory" environment
be90: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
bea0: 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73       variable is
beb0: 20 73 65 74 20 28 74 6f 20 61 6e 79 74 68 69 6e   set (to anythin
bec0: 67 29 2c 20 74 68 65 6e 20 61 74 74 65 6d 70 74  g), then attempt
bed0: 20 74 6f 20 75 73 65 20 74 68 65 0d 0a 20 20 20   to use the..   
bee0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
bef0: 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
bf00: 6e 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74  ning the current
bf10: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
bf20: 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  embly..         
bf30: 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20   //       (i.e. 
bf40: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
bf50: 74 65 29 20 69 6e 74 73 65 61 64 20 6f 66 20 74  te) intsead of t
bf60: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a  he application..
bf70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
bf80: 20 20 20 64 6f 6d 61 69 6e 20 62 61 73 65 20 64     domain base d
bf90: 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20  irectory...     
bfa0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
bfb0: 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e     if (GetSettin
bfc0: 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
bfd0: 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c             "PreL
bfe0: 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73  oadSQLite_UseAss
bff0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 2c  emblyDirectory",
c000: 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d   null) != null).
c010: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
c020: 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65              dire
c030: 63 74 6f 72 79 20 3d 20 47 65 74 41 73 73 65 6d  ctory = GetAssem
c040: 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d  blyDirectory();.
c050: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c060: 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 21   if (directory !
c070: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
c080: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c090: 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  n directory;..  
c0a0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
c0b0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
c0c0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74       // NOTE: Ot
c0d0: 68 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63  herwise, fallbac
c0e0: 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 62  k on using the b
c0f0: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66  ase directory of
c100: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
c110: 2f 2f 20 20 20 20 20 20 20 63 75 72 72 65 6e 74  //       current
c120: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
c130: 61 69 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ain...          
c140: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  //..          re
c150: 74 75 72 6e 20 41 70 70 44 6f 6d 61 69 6e 2e 43  turn AppDomain.C
c160: 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73  urrentDomain.Bas
c170: 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6c  eDirectory;..#el
c180: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  se..          //
c190: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
c1a0: 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20  OTE: Otherwise, 
c1b0: 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e  fallback on usin
c1c0: 67 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  g the directory 
c1d0: 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
c1e0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
c1f0: 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  he currently exe
c200: 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 2e  cuting assembly.
c210: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
c220: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
c230: 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65   GetAssemblyDire
c240: 63 74 6f 72 79 28 29 3b 0d 0a 23 65 6e 64 69 66  ctory();..#endif
c250: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
c260: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
c270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
c2b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
c2c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
c2d0: 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 64  ermines if the d
c2e0: 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72  ynamic link libr
c2f0: 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72 65  ary file name re
c300: 71 75 69 72 65 73 20 61 20 73 75 66 66 69 78 0d  quires a suffix.
c310: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61  .      /// and a
c320: 64 64 73 20 69 74 20 69 66 20 6e 65 63 65 73 73  dds it if necess
c330: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
c340: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c350: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
c360: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
c370: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69       /// The ori
c380: 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69  ginal dynamic li
c390: 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20  nk library file 
c3a0: 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74 2e  name to inspect.
c3b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
c3c0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
c3d0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
c3e0: 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69 63   /// The dynamic
c3f0: 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69   link library fi
c400: 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c  le name, possibl
c410: 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69 6e  y modified to in
c420: 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20 20  clude an..      
c430: 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a  /// extension...
c440: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
c450: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
c460: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
c470: 67 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61  g FixUpDllFileNa
c480: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  me(..          s
c490: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 2f  tring fileName /
c4a0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
c4b0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
c4c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
c4d0: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
c4e0: 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ty(fileName)).. 
c4f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c500: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 48 65            if (He
c510: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69  lperMethods.IsWi
c520: 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20  ndows())..      
c530: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c540: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
c550: 28 21 66 69 6c 65 4e 61 6d 65 2e 45 6e 64 73 57  (!fileName.EndsW
c560: 69 74 68 28 44 6c 6c 46 69 6c 65 45 78 74 65 6e  ith(DllFileExten
c570: 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  sion,..         
c580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c590: 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
c5a0: 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
c5b0: 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
c5c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5e0: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
c5f0: 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e  e + DllFileExten
c600: 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  sion;..         
c610: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
c620: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
c630: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
c640: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c        return fil
c650: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  eName;..      }.
c660: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
c670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6b0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
c6c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c6d0: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
c6e0: 65 74 75 72 6e 73 20 74 68 65 20 70 72 6f 63 65  eturns the proce
c6f0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
c700: 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
c710: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63  ..      /// proc
c720: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
c730: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c740: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
c750: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
c760: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
c770: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
c780: 72 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52  rent process -OR
c790: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
c7a0: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
c7b0: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
c7c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
c7d0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
c7e0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
c7f0: 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
c800: 68 69 74 65 63 74 75 72 65 28 29 0d 0a 20 20 20  hitecture()..   
c810: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c820: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
c830: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
c840: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
c850: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
c860: 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  re" environment.
c870: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
c880: 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20      variable is 
c890: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
c8a0: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 63 75 72  atim for the cur
c8b0: 72 65 6e 74 20 70 72 6f 63 65 73 73 6f 72 0d 0a  rent processor..
c8c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
c8d0: 20 20 20 61 72 63 68 69 74 65 63 74 75 72 65 2e     architecture.
c8e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
c8f0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
c900: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
c910: 65 63 74 75 72 65 20 3d 20 47 65 74 53 65 74 74  ecture = GetSett
c920: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
c930: 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
c940: 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f  dSQLite_Processo
c950: 72 41 72 63 68 69 74 65 63 74 75 72 65 22 2c 20  rArchitecture", 
c960: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
c970: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
c980: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 21 3d  rArchitecture !=
c990: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
c9a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f        return pro
c9b0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
c9c0: 72 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  re;....         
c9d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
c9e0: 2f 20 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74  / BUGBUG: Will t
c9f0: 68 69 73 20 61 6c 77 61 79 73 20 62 65 20 72 65  his always be re
ca00: 6c 69 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20  liable?..       
ca10: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
ca20: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
ca30: 65 63 74 75 72 65 20 3d 20 47 65 74 53 65 74 74  ecture = GetSett
ca40: 69 6e 67 56 61 6c 75 65 28 50 52 4f 43 45 53 53  ingValue(PROCESS
ca50: 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 2c  OR_ARCHITECTURE,
ca60: 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20   null);....     
ca70: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
ca80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
caa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
cac0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
cad0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
cae0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
caf0: 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 43        // HACK: C
cb00: 68 65 63 6b 20 66 6f 72 20 61 6e 20 22 69 6d 70  heck for an "imp
cb10: 6f 73 73 69 62 6c 65 22 20 73 69 74 75 61 74 69  ossible" situati
cb20: 6f 6e 2e 20 20 49 66 20 74 68 65 20 70 6f 69 6e  on.  If the poin
cb30: 74 65 72 20 73 69 7a 65 0d 0a 20 20 20 20 20 20  ter size..      
cb40: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
cb50: 33 32 2d 62 69 74 73 2c 20 74 68 65 20 70 72 6f  32-bits, the pro
cb60: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
cb70: 75 72 65 20 63 61 6e 6e 6f 74 20 62 65 20 22 41  ure cannot be "A
cb80: 4d 44 36 34 22 2e 0d 0a 20 20 20 20 20 20 20 20  MD64"...        
cb90: 20 20 2f 2f 20 20 20 20 20 20 20 49 6e 20 74 68    //       In th
cba0: 61 74 20 63 61 73 65 2c 20 77 65 20 61 72 65 20  at case, we are 
cbb0: 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79  almost certainly
cbc0: 20 68 69 74 74 69 6e 67 20 61 20 62 75 67 20 69   hitting a bug i
cbd0: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  n the..         
cbe0: 20 2f 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74   //       operat
cbf0: 69 6e 67 20 73 79 73 74 65 6d 20 61 6e 64 2f 6f  ing system and/o
cc00: 72 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20  r Visual Studio 
cc10: 74 68 61 74 20 63 61 75 73 65 73 20 74 68 65 0d  that causes the.
cc20: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
cc30: 20 20 20 20 50 52 4f 43 45 53 53 4f 52 5f 41 52      PROCESSOR_AR
cc40: 43 48 49 54 45 43 54 55 52 45 20 65 6e 76 69 72  CHITECTURE envir
cc50: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
cc60: 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  to contain the..
cc70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
cc80: 20 20 20 77 72 6f 6e 67 20 76 61 6c 75 65 20 69     wrong value i
cc90: 6e 20 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61  n some circumsta
cca0: 6e 63 65 73 2e 20 20 50 6c 65 61 73 65 20 72 65  nces.  Please re
ccb0: 66 65 72 20 74 6f 20 74 69 63 6b 65 74 0d 0a 20  fer to ticket.. 
ccc0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
ccd0: 20 20 5b 39 61 63 39 38 36 32 36 31 31 5d 20 66    [9ac9862611] f
cce0: 6f 72 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72  or further infor
ccf0: 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  mation...       
cd00: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
cd10: 20 69 66 20 28 28 49 6e 74 50 74 72 2e 53 69 7a   if ((IntPtr.Siz
cd20: 65 20 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29  e == sizeof(int)
cd30: 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
cd40: 20 20 20 20 53 74 72 69 6e 67 2e 45 71 75 61 6c      String.Equal
cd50: 73 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  s(processorArchi
cd60: 74 65 63 74 75 72 65 2c 20 22 41 4d 44 36 34 22  tecture, "AMD64"
cd70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
cd80: 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61       StringCompa
cd90: 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e  rison.OrdinalIgn
cda0: 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20  oreCase))..     
cdb0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
cdc0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
cdd0: 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a  RACE_DETECTION..
cde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
cdf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ce00: 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e 20 74 72  // NOTE: When tr
ce10: 61 63 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64  acing is enabled
ce20: 2c 20 73 61 76 65 20 74 68 65 20 6f 72 69 67 69  , save the origi
ce30: 6e 61 6c 6c 79 20 64 65 74 65 63 74 65 64 0d 0a  nally detected..
ce40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ce50: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
ce60: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 62 65   architecture be
ce70: 66 6f 72 65 20 63 68 61 6e 67 69 6e 67 20 69 74  fore changing it
ce80: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ce90: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
cea0: 20 20 20 73 74 72 69 6e 67 20 73 61 76 65 64 50     string savedP
ceb0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
cec0: 74 75 72 65 20 3d 20 70 72 6f 63 65 73 73 6f 72  ture = processor
ced0: 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 23  Architecture;..#
cee0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
cef0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
cf00: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
cf10: 3a 20 57 65 20 6b 6e 6f 77 20 74 68 61 74 20 6f  : We know that o
cf20: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73  perating systems
cf30: 20 74 68 61 74 20 72 65 74 75 72 6e 20 22 41 4d   that return "AM
cf40: 44 36 34 22 20 61 73 0d 0a 20 20 20 20 20 20 20  D64" as..       
cf50: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
cf60: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
cf70: 63 68 69 74 65 63 74 75 72 65 20 61 72 65 20 61  chitecture are a
cf80: 63 74 75 61 6c 6c 79 20 61 20 73 75 70 65 72 73  ctually a supers
cf90: 65 74 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20  et of..         
cfa0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
cfb0: 65 20 22 78 38 36 22 20 70 72 6f 63 65 73 73 6f  e "x86" processo
cfc0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 3b 20  r architecture; 
cfd0: 74 68 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72  therefore, retur
cfe0: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n..             
cff0: 20 2f 2f 20 20 20 20 20 20 20 22 78 38 36 22 20   //       "x86" 
d000: 77 68 65 6e 20 74 68 65 20 70 6f 69 6e 74 65 72  when the pointer
d010: 20 73 69 7a 65 20 69 73 20 33 32 2d 62 69 74 73   size is 32-bits
d020: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d030: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
d040: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
d050: 69 74 65 63 74 75 72 65 20 3d 20 22 78 38 36 22  itecture = "x86"
d060: 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
d070: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
d080: 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
d090: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
d0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
d0b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d0c0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d0d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
d0e0: 3a 20 53 68 6f 77 20 74 68 61 74 20 77 65 20 68  : Show that we h
d0f0: 69 74 20 61 20 66 61 69 72 6c 79 20 75 6e 75 73  it a fairly unus
d100: 75 61 6c 20 73 69 74 75 61 74 69 6f 6e 20 28 69  ual situation (i
d110: 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .e...           
d120: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
d130: 74 68 65 20 22 77 72 6f 6e 67 22 20 70 72 6f 63  the "wrong" proc
d140: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
d150: 72 65 20 77 61 73 20 64 65 74 65 63 74 65 64 29  re was detected)
d160: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d170: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
d180: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
d190: 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
d1a0: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
d1b0: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
d1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
d1d0: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
d1e0: 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
d1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d200: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
d210: 20 70 72 65 2d 6c 6f 61 64 65 72 20 64 65 74 65   pre-loader dete
d220: 63 74 65 64 20 7b 30 7d 2d 62 69 74 20 70 6f 69  cted {0}-bit poi
d230: 6e 74 65 72 20 22 20 2b 0d 0a 20 20 20 20 20 20  nter " +..      
d240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d250: 22 73 69 7a 65 20 77 69 74 68 20 70 72 6f 63 65  "size with proce
d260: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
d270: 65 20 5c 22 7b 31 7d 5c 22 2c 20 75 73 69 6e 67  e \"{1}\", using
d280: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
d290: 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72 6f              "pro
d2a0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
d2b0: 75 72 65 20 5c 22 7b 32 7d 5c 22 20 69 6e 73 74  ure \"{2}\" inst
d2c0: 65 61 64 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20  ead...",..      
d2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d2e0: 49 6e 74 50 74 72 2e 53 69 7a 65 20 2a 20 38 20  IntPtr.Size * 8 
d2f0: 2f 2a 20 62 69 74 73 20 2a 2f 2c 20 73 61 76 65  /* bits */, save
d300: 64 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  dProcessorArchit
d310: 65 63 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ecture,..       
d320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
d330: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
d340: 74 75 72 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ture)); /* throw
d350: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
d360: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
d370: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
d380: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
d390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
d3a0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
d3b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
d3c0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
d3d0: 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20   }..#else..     
d3e0: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
d3f0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
d400: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
d410: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d420: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
d430: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f        // NOTE: O
d440: 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61  n the .NET Compa
d450: 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 61 74  ct Framework, at
d460: 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
d470: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
d480: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
d490: 57 69 6e 33 32 20 41 50 49 20 66 75 6e 63 74 69  Win32 API functi
d4a0: 6f 6e 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65  on (via P/Invoke
d4b0: 29 20 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69  ) that can provi
d4c0: 64 65 20 75 73 0d 0a 20 20 20 20 20 20 20 20 20  de us..         
d4d0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 69       //       wi
d4e0: 74 68 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  th the processor
d4f0: 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a   architecture...
d500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
d510: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d520: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
d530: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d540: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
d560: 20 4e 4f 54 45 3a 20 54 68 65 20 6f 75 74 70 75   NOTE: The outpu
d570: 74 20 6f 66 20 74 68 65 20 47 65 74 53 79 73 74  t of the GetSyst
d580: 65 6d 49 6e 66 6f 20 66 75 6e 63 74 69 6f 6e 20  emInfo function 
d590: 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20  will be..       
d5a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
d5b0: 20 20 20 20 70 6c 61 63 65 64 20 68 65 72 65 2e      placed here.
d5c0: 20 20 4f 6e 6c 79 20 74 68 65 20 70 72 6f 63 65    Only the proce
d5d0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
d5e0: 65 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20  e field..       
d5f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
d600: 20 20 20 20 69 73 20 75 73 65 64 20 62 79 20 74      is used by t
d610: 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  his method...   
d620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
d630: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
d640: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
d650: 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 53 59  eMethodsWin32.SY
d660: 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d  STEM_INFO system
d670: 49 6e 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Info;....       
d680: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
d690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6a0: 20 2f 2f 20 4e 4f 54 45 3a 20 51 75 65 72 79 20   // NOTE: Query 
d6b0: 74 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72  the system infor
d6c0: 6d 61 74 69 6f 6e 20 76 69 61 20 50 2f 49 6e 76  mation via P/Inv
d6d0: 6f 6b 65 2c 20 74 68 75 73 0d 0a 20 20 20 20 20  oke, thus..     
d6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
d6f0: 20 20 20 20 20 20 66 69 6c 6c 69 6e 67 20 74 68        filling th
d700: 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  e structure...  
d710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d720: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
d730: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
d740: 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 47  veMethodsWin32.G
d750: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
d760: 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d   systemInfo);...
d770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d780: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d790: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
d7a0: 3a 20 52 65 74 75 72 6e 20 74 68 65 20 70 72 6f  : Return the pro
d7b0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
d7c0: 75 72 65 20 76 61 6c 75 65 20 61 73 20 61 20 73  ure value as a s
d7d0: 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  tring...        
d7e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d800: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
d810: 63 74 75 72 65 20 3d 0d 0a 20 20 20 20 20 20 20  cture =..       
d820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
d830: 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63 65  ystemInfo.wProce
d840: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
d850: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
d860: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
d870: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
d880: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
d890: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
d8a0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
d8b0: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
d8c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d8d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d8e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
d8f0: 45 3a 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  E: Upon failure,
d900: 20 72 65 74 75 72 6e 20 61 6e 20 65 6d 70 74 79   return an empty
d910: 20 73 74 72 69 6e 67 2e 20 20 54 68 69 73 20 77   string.  This w
d920: 69 6c 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20 20  ill prevent..   
d930: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
d940: 20 20 20 20 74 68 65 20 63 61 6c 6c 69 6e 67 20      the calling 
d950: 6d 65 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e 73  method from cons
d960: 69 64 65 72 69 6e 67 20 74 68 69 73 20 6d 65 74  idering this met
d970: 68 6f 64 20 63 61 6c 6c 20 61 0d 0a 20 20 20 20  hod call a..    
d980: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
d990: 20 20 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a 20     "failure"... 
d9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
d9b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
d9c0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
d9d0: 74 75 72 65 20 3d 20 53 74 72 69 6e 67 2e 45 6d  ture = String.Em
d9e0: 70 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  pty;..          
d9f0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
da00: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
da10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
da50: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
da60: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
da70: 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 7d  ecture;..      }
da80: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
da90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
daa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dad0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
dae0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
daf0: 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72  /// Given the pr
db00: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
db10: 74 75 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68  ture, returns th
db20: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c  e name of the pl
db30: 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f  atform...      /
db40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
db50: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
db60: 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41  name="processorA
db70: 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20  rchitecture">.. 
db80: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f       /// The pro
db90: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
dba0: 75 72 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c  ure to be transl
dbb0: 61 74 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f  ated to a platfo
dbc0: 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
dbd0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
dbe0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
dbf0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
dc00: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66   platform name f
dc10: 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
dc20: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
dc30: 74 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c  tecture -OR- nul
dc40: 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  l..      /// if 
dc50: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
dc60: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
dc70: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
dc80: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
dc90: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50  atic string GetP
dca0: 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20  latformName(..  
dcb0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
dcc0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
dcd0: 74 75 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ture /* in */.. 
dce0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
dcf0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
dd00: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
dd10: 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
dd20: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dd30: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
dd40: 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63  ecture = GetProc
dd50: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
dd60: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
dd70: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
dd80: 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65  ullOrEmpty(proce
dd90: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
dda0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
ddb0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
ddc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
ddd0: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
dde0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
ddf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
de00: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
de10: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
de20: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
de30: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
de40: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
de50: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
de60: 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d  g platformName;.
de70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
de80: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
de90: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
dea0: 72 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  rms.TryGetValue(
deb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dec0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
ded0: 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f  rArchitecture, o
dee0: 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29  ut platformName)
def0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
df00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
df10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61        return pla
df20: 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20  tformName;..    
df30: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
df40: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
df50: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
df60: 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  l;..      }.... 
df70: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
df80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
dfc0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
dfd0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
dfe0: 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20  ttempts to load 
dff0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
e000: 65 20 6c 69 62 72 61 72 79 20 62 61 73 65 64 20  e library based 
e010: 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64  on the specified
e020: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65  ..      /// dire
e030: 63 74 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73  ctory and proces
e040: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
e050: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
e060: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
e070: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
e080: 62 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d  baseDirectory">.
e090: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62  .      /// The b
e0a0: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f  ase directory to
e0b0: 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64   use, null for d
e0c0: 65 66 61 75 6c 74 20 28 74 68 65 20 62 61 73 65  efault (the base
e0d0: 20 64 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20   directory of.. 
e0e0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72       /// the cur
e0f0: 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
e100: 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20   domain).  This 
e110: 64 69 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64  directory should
e120: 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
e130: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f      /// processo
e140: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 73  r architecture s
e150: 70 65 63 69 66 69 63 20 73 75 62 2d 64 69 72 65  pecific sub-dire
e160: 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20  ctories...      
e170: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
e180: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
e190: 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72  ame="processorAr
e1a0: 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20  chitecture">..  
e1b0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75      /// The requ
e1c0: 65 73 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20  ested processor 
e1d0: 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75  architecture, nu
e1e0: 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28  ll for default (
e1f0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  the..      /// p
e200: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
e210: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
e220: 72 65 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20  rent process).  
e230: 54 68 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75  This caller shou
e240: 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c  ld..      /// al
e250: 6d 6f 73 74 20 61 6c 77 61 79 73 20 73 70 65 63  most always spec
e260: 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69  ify null for thi
e270: 73 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20  s parameter...  
e280: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
e290: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
e2a0: 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d  am name="nativeM
e2b0: 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 22 3e 0d  oduleFileName">.
e2c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
e2d0: 61 6e 64 69 64 61 74 65 20 6e 61 74 69 76 65 20  andidate native 
e2e0: 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65  module file name
e2f0: 20 74 6f 20 6c 6f 61 64 20 77 69 6c 6c 20 62 65   to load will be
e300: 20 73 74 6f 72 65 64 20 68 65 72 65 2c 0d 0a 20   stored here,.. 
e310: 20 20 20 20 20 2f 2f 2f 20 69 66 20 6e 65 63 65       /// if nece
e320: 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  ssary...      //
e330: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
e340: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
e350: 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  e="nativeModuleH
e360: 61 6e 64 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f  andle">..      /
e370: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
e380: 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20 72  dule handle as r
e390: 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64 4c  eturned by LoadL
e3a0: 69 62 72 61 72 79 20 77 69 6c 6c 20 62 65 20 73  ibrary will be s
e3b0: 74 6f 72 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  tored..      ///
e3c0: 20 68 65 72 65 2c 20 69 66 20 6e 65 63 65 73 73   here, if necess
e3d0: 61 72 79 2e 20 20 54 68 69 73 20 76 61 6c 75 65  ary.  This value
e3e0: 20 77 69 6c 6c 20 62 65 20 49 6e 74 50 74 72 2e   will be IntPtr.
e3f0: 5a 65 72 6f 20 69 66 20 74 68 65 20 63 61 6c 6c  Zero if the call
e400: 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4c   to..      /// L
e410: 6f 61 64 4c 69 62 72 61 72 79 20 66 61 69 6c 73  oadLibrary fails
e420: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
e430: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
e440: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
e450: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
e460: 66 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  f the native mod
e470: 75 6c 65 20 77 61 73 20 6c 6f 61 64 65 64 20 73  ule was loaded s
e480: 75 63 63 65 73 73 66 75 6c 6c 79 3b 20 6f 74 68  uccessfully; oth
e490: 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f  erwise,..      /
e4a0: 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  // zero...      
e4b0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
e4c0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
e4d0: 61 74 69 63 20 62 6f 6f 6c 20 50 72 65 4c 6f 61  atic bool PreLoa
e4e0: 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20  dSQLiteDll(..   
e4f0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 61         string ba
e500: 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20  seDirectory,    
e510: 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
e520: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
e530: 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
e540: 69 74 65 63 74 75 72 65 2c 20 20 20 20 2f 2a 20  itecture,    /* 
e550: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
e560: 20 72 65 66 20 73 74 72 69 6e 67 20 6e 61 74 69   ref string nati
e570: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
e580: 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20  , /* out */..   
e590: 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
e5a0: 72 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  r nativeModuleHa
e5b0: 6e 64 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20 2a  ndle    /* out *
e5c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
e5d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e5e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
e5f0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
e600: 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65 20   specified base 
e610: 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c  directory is nul
e620: 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66 61 75  l, use the defau
e630: 6c 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  lt..          //
e640: 20 20 20 20 20 20 20 28 69 2e 65 2e 20 61 74 74         (i.e. att
e650: 65 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69  empt to automati
e660: 63 61 6c 6c 79 20 64 65 74 65 63 74 20 69 74 29  cally detect it)
e670: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
e680: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62  .          if (b
e690: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  aseDirectory == 
e6a0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
e6b0: 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
e6c0: 72 79 20 3d 20 47 65 74 42 61 73 65 44 69 72 65  ry = GetBaseDire
e6d0: 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  ctory();....    
e6e0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
e6f0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
e700: 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65  we failed to que
e710: 72 79 20 74 68 65 20 62 61 73 65 20 64 69 72 65  ry the base dire
e720: 63 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e  ctory, stop now.
e730: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
e740: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
e750: 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e  seDirectory == n
e760: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
e770: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
e780: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
e790: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
e7a0: 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20  NOTE: Determine 
e7b0: 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61  the base file na
e7c0: 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
e7d0: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
e7e0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ...          // 
e7f0: 20 20 20 20 20 20 49 66 20 74 68 69 73 20 69 73        If this is
e800: 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68   not known by th
e810: 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e  is class, we can
e820: 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20  not continue... 
e830: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
e840: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
e850: 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74  leNameOnly = Get
e860: 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c  NativeLibraryFil
e870: 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a  eNameOnly();....
e880: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69            if (fi
e890: 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75  leNameOnly == nu
e8a0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
e8b0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
e8c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
e8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
e8e0: 4f 54 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69  OTE: If the nati
e8f0: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
e900: 79 20 65 78 69 73 74 73 20 69 6e 20 74 68 65 20  y exists in the 
e910: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a  base directory..
e920: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
e930: 20 20 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20     itself, stop 
e940: 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
e950: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
e960: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20  ring fileName = 
e970: 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
e980: 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
e990: 68 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  h(baseDirectory,
e9a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e9b0: 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d  fileNameOnly));.
e9c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
e9d0: 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c  (File.Exists(fil
e9e0: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
e9f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
ea00: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
ea10: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
ea20: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
ea30: 73 70 65 63 69 66 69 65 64 20 70 72 6f 63 65 73  specified proces
ea40: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
ea50: 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68   is null, use th
ea60: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
ea70: 20 20 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a        default...
ea80: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
ea90: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
eaa0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
eab0: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
eac0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
ead0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
eae0: 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72  = GetProcessorAr
eaf0: 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d  chitecture();...
eb00: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
eb10: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
eb20: 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
eb30: 6f 20 71 75 65 72 79 20 74 68 65 20 70 72 6f 63  o query the proc
eb40: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
eb50: 72 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  re, stop now... 
eb60: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
eb70: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
eb80: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
eb90: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
eba0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
ebb0: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
ebc0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
ebd0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
ebe0: 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61   the full path a
ebf0: 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  nd file name for
ec00: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
ec10: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  te..          //
ec20: 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75         library u
ec30: 73 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  sing the process
ec40: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
ec50: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
ec60: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66   //..          f
ec70: 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
ec80: 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
ec90: 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62  CombinePath(Mayb
eca0: 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
ecc0: 65 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63  eDirectory, proc
ecd0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
ece0: 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  e), fileNameOnly
ecf0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
ed00: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
ed10: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66  / NOTE: If the f
ed20: 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20 6f  ile name based o
ed30: 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  n the processor 
ed40: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
ed50: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
ed60: 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74 72  is not found, tr
ed70: 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73 6f  y using the asso
ed80: 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d 20  ciated platform 
ed90: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
eda0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
edb0: 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28  f (!File.Exists(
edc0: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
edd0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ede0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
edf0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
ee00: 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72 61  : Attempt to tra
ee10: 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63 65  nslate the proce
ee20: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
ee30: 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20 20  e to a..        
ee40: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
ee50: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
ee60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
ee70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
ee80: 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61  tring platformNa
ee90: 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72 6d  me = GetPlatform
eea0: 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41 72  Name(processorAr
eeb0: 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a  chitecture);....
eec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
eed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eee0: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66  // NOTE: If we f
eef0: 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c 61  ailed to transla
ef00: 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20  te the platform 
ef10: 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  name, stop now..
ef20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
ef30: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
ef40: 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61 6d   if (platformNam
ef50: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
ef60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
ef70: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
ef80: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
ef90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
efa0: 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68  / NOTE: Build th
efb0: 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20  e full path and 
efc0: 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
efd0: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d  e native SQLite.
efe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
eff0: 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
f000: 75 73 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f  using the platfo
f010: 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
f020: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
f030: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
f040: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
f050: 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
f060: 6e 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62  nePath(MaybeComb
f070: 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
f080: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
f090: 44 69 72 65 63 74 6f 72 79 2c 20 70 6c 61 74 66  Directory, platf
f0a0: 6f 72 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e 61  ormName), fileNa
f0b0: 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
f0c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
f0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
f0e0: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c  NOTE: If the fil
f0f0: 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  e does not exist
f100: 2c 20 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f  , skip trying to
f110: 20 6c 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20   load it...     
f120: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
f130: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
f140: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
f150: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
f160: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
f170: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
f180: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
f190: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
f1a0: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
f1b0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
f1c0: 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20  _PRELOAD..      
f1d0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
f1e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f200: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
f210: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
f220: 68 6f 77 20 65 78 61 63 74 6c 79 20 77 68 65 72  how exactly wher
f230: 65 20 77 65 20 61 72 65 20 74 72 79 69 6e 67 20  e we are trying 
f240: 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69  to load the nati
f250: 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
f260: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53        //       S
f270: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 66 72  QLite library fr
f280: 6f 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  om...           
f290: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
f2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
f2b0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
f2c0: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
f2d0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
f2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2f0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
f300: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
f310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f320: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
f330: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 69 73  ry pre-loader is
f340: 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
f350: 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20  native " +..    
f360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f370: 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72    "SQLite librar
f380: 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66  y \"{0}\"...", f
f390: 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68  ileName)); /* th
f3a0: 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
f3b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
f3c0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
f3d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
f3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3f0: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
f400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
f410: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
f420: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
f430: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
f440: 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20  OTE: Attempt to 
f450: 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
f460: 6c 69 62 72 61 72 79 2e 20 20 54 68 69 73 20 77  library.  This w
f470: 69 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20  ill either..    
f480: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
f490: 20 20 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69     return a vali
f4a0: 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  d native module 
f4b0: 68 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49  handle, return I
f4c0: 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20  ntPtr.Zero,..   
f4d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
f4e0: 20 20 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20      or throw an 
f4f0: 65 78 63 65 70 74 69 6f 6e 2e 20 20 54 68 69 73  exception.  This
f500: 20 6d 75 73 74 20 75 73 65 20 74 68 65 20 61 70   must use the ap
f510: 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20  propriate..     
f520: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
f530: 20 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f    P/Invoke metho
f540: 64 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  d for the curren
f550: 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  t operating syst
f560: 65 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  em...           
f570: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
f580: 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
f590: 65 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65  eFileName = file
f5a0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
f5b0: 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
f5c0: 65 48 61 6e 64 6c 65 20 3d 20 4e 61 74 69 76 65  eHandle = Native
f5d0: 4c 69 62 72 61 72 79 48 65 6c 70 65 72 2e 4c 6f  LibraryHelper.Lo
f5e0: 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61  adLibrary(fileNa
f5f0: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
f600: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6e 61        return (na
f610: 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
f620: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
f630: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
f640: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
f650: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45  _20 && TRACE_PRE
f660: 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20  LOAD..          
f670: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
f680: 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
f690: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
f6a0: 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
f6b0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
f6c0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
f6d0: 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
f6e0: 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  AD..            
f6f0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
f700: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f710: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
f720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f730: 2f 2f 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20  // NOTE: First, 
f740: 67 72 61 62 20 74 68 65 20 6c 61 73 74 20 57 69  grab the last Wi
f750: 6e 33 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72  n32 error number
f760: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f770: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
f780: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
f790: 61 73 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68  astError = Marsh
f7a0: 61 6c 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45  al.GetLastWin32E
f7b0: 72 72 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77  rror(); /* throw
f7c0: 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
f7d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
f7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
f7f0: 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65  / NOTE: Show whe
f800: 72 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  re we failed to 
f810: 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
f820: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
f830: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
f840: 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20     library from 
f850: 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57  along with the W
f860: 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20  in32 error code 
f870: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
f880: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
f890: 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d  exception inform
f8a0: 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
f8b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
f8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8d0: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
f8e0: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
f8f0: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
f900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f910: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
f920: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
f930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f940: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
f950: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
f960: 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20   failed to load 
f970: 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20  native " +..    
f980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f990: 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72    "SQLite librar
f9a0: 79 20 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c 61  y \"{0}\" (getLa
f9b0: 73 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20  stError = {1}): 
f9c0: 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {2}",..         
f9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
f9e0: 65 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72  eName, lastError
f9f0: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
fa00: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
fa10: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
fa20: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
fa30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
fa40: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
fa50: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
fa60: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
fa70: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
fa80: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
fa90: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
faa0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
fab0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
fac0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
fad0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
fb20: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
fb30: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
fb40: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
fb50: 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  : On the .NET Co
fb60: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
fb70: 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65   the native inte
fb80: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73  rop assembly mus
fb90: 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  t..    //       
fba0: 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20  be used because 
fbb0: 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65  it provides seve
fbc0: 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20  ral workarounds 
fbd0: 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d  to .NET Compact.
fbe0: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72  .    //       Fr
fbf0: 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69  amework limitati
fc00: 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f  ons important fo
fc10: 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69  r proper operati
fc20: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a  on of the core..
fc30: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73      //       Sys
fc40: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
fc50: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65  functionality (e
fc60: 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74  .g. being able t
fc70: 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20  o bind..    //  
fc80: 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20       parameters 
fc90: 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d  and handle colum
fca0: 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65  n values of type
fcb0: 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62  s Int64 and Doub
fcc0: 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  le)...    //..  
fcd0: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
fce0: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
fcf0: 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
fd00: 65 72 6f 70 2e 31 30 33 2e 64 6c 6c 22 3b 0d 0a  erop.103.dll";..
fd10: 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41  #elif SQLITE_STA
fd20: 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20  NDARD..    //.. 
fd30: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
fd40: 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73 74  rwise, if the st
fd50: 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
fd60: 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64  brary is enabled
fd70: 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f  , use it...    /
fd80: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
fd90: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
fda0: 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74  ITE_DLL = "sqlit
fdb0: 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f  e3";..#elif USE_
fdc0: 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20  INTEROP_DLL..   
fdd0: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
fde0: 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20  : Otherwise, if 
fdf0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
fe00: 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62  e interop assemb
fe10: 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 0d 0a  ly is enabled,..
fe20: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65      //       use
fe30: 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20   it...    //..  
fe40: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
fe50: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
fe60: 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
fe70: 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 73  erop.dll";..#els
fe80: 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  e..    //..    /
fe90: 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c 79 2c  / NOTE: Finally,
fea0: 20 61 73 73 75 6d 65 20 74 68 61 74 20 74 68 65   assume that the
feb0: 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73 73 65   mixed-mode asse
fec0: 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20 75 73  mbly is being us
fed0: 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
fee0: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
fef0: 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
ff00: 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61  L = "System.Data
ff10: 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d 0a 23  .SQLite.dll";..#
ff20: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20  endif....    // 
ff30: 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75 73 65  This section use
ff40: 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20  s interop calls 
ff50: 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63 68 20  that also fetch 
ff60: 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f  text length to o
ff70: 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69  ptimize conversi
ff80: 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e  on...    // When
ff90: 20 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64   using the stand
ffa0: 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20  ard dll, we can 
ffb0: 72 65 70 6c 61 63 65 20 74 68 65 73 65 20 63 61  replace these ca
ffc0: 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20  lls with normal 
ffd0: 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61 6e 64  sqlite calls and
ffe0: 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e 6f 70  ..    // do unop
fff0: 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72 73 69  timized conversi
10000 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66 74 65  ons instead afte
10010 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72 65 67  rwards..    #reg
10020 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65  ion interop adde
10030 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63 61 6c  d textlength cal
10040 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54  ls....#if !SQLIT
10050 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
10060 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10070 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
10080 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10090 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
100a0 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
100b0 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  ter_name_interop
100c0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
100d0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
100e0 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
100f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10100 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
10110 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10120 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
10130 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
10140 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
10150 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
10160 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
10170 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
10180 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10190 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
101a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
101b0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
101c0 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
101d0 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
101e0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
101f0 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
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 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
10250 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74  umn_decltype_int
10260 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
10270 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
10280 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
10290 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
102a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
102b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
102c0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
102d0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
102e0 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  type16_interop(I
102f0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
10300 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
10310 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
10320 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10330 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
10340 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10350 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
10360 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72  olumn_name_inter
10370 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
10380 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
10390 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
103a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
103b0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
103c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
103d0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
103e0 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36  e3_column_name16
103f0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
10400 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
10410 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
10420 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10430 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
10440 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10450 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
10460 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
10470 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65  origin_name_inte
10480 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
10490 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
104a0 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
104b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
104c0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
104d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
104e0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
104f0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
10500 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  n_name16_interop
10510 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
10520 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
10530 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
10540 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10550 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
10560 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10570 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
10580 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
10590 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
105a0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
105b0 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
105c0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
105d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
105e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
105f0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
10600 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
10610 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69  n_table_name16_i
10620 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
10630 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
10640 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
10650 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10660 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
10670 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10680 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
10690 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
106a0 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  xt_interop(IntPt
106b0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
106c0 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
106d0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
106e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
106f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10700 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
10710 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
10720 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70  n_text16_interop
10730 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
10740 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
10750 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
10760 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10770 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
10780 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10790 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
107a0 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28  _errmsg_interop(
107b0 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 69  IntPtr db, ref i
107c0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
107d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
107e0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
107f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10800 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
10810 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  ode sqlite3_prep
10820 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  are_interop(IntP
10830 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
10840 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
10850 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
10860 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
10870 65 6d 61 69 6e 2c 20 72 65 66 20 69 6e 74 20 6e  emain, ref int n
10880 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20  Remain);....    
10890 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
108a0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
108b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
108c0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
108d0 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  ode sqlite3_tabl
108e0 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74  e_column_metadat
108f0 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  a_interop(IntPtr
10900 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61   db, byte[] dbNa
10910 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61  me, byte[] tblNa
10920 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61  me, byte[] colNa
10930 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  me, ref IntPtr p
10940 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66 20  trDataType, ref 
10950 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65  IntPtr ptrCollSe
10960 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75  q, ref int notNu
10970 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d  ll, ref int prim
10980 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20  aryKey, ref int 
10990 61 75 74 6f 49 6e 63 2c 20 72 65 66 20 69 6e 74  autoInc, ref int
109a0 20 64 74 4c 65 6e 2c 20 72 65 66 20 69 6e 74 20   dtLen, ref int 
109b0 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  csLen);....    [
109c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
109d0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
109e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
109f0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
10a00 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74  3_value_text_int
10a10 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72  erop(IntPtr p, r
10a20 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
10a30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10a40 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
10a50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10a60 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
10a70 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
10a80 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t16_interop(IntP
10a90 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65  tr p, ref int le
10aa0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
10ab0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10ac0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
10ad0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
10ae0 6e 74 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  nt sqlite3_mallo
10af0 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49  c_size_interop(I
10b00 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
10b10 20 49 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a 20 20   INTEROP_LOG..  
10b20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10b30 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
10b40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10b50 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
10b60 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f  rCode sqlite3_co
10b70 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74 65 72 6f 70  nfig_log_interop
10b80 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e  ();..#endif..#en
10b90 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f  dif..// !SQLITE_
10ba0 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
10bb0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
10bc0 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74    // These funct
10bd0 69 6f 6e 73 20 61 64 64 20 65 78 69 73 74 69 6e  ions add existin
10be0 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20  g functionality 
10bf0 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c 69 74 65  on top of SQLite
10c00 20 61 6e 64 20 72 65 71 75 69 72 65 20 61 20 6c   and require a l
10c10 69 74 74 6c 65 20 65 66 66 6f 72 74 20 74 6f 0d  ittle effort to.
10c20 0a 20 20 20 20 2f 2f 20 67 65 74 20 77 6f 72 6b  .    // get work
10c30 69 6e 67 20 77 68 65 6e 20 75 73 69 6e 67 20 74  ing when using t
10c40 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
10c50 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  te library...   
10c60 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70   #region interop
10c70 20 61 64 64 65 64 20 66 75 6e 63 74 69 6f 6e 61   added functiona
10c80 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21 53 51 4c  lity....#if !SQL
10c90 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
10ca0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10cb0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
10cc0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10cd0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69   extern IntPtr i
10ce0 6e 74 65 72 6f 70 5f 6c 69 62 76 65 72 73 69 6f  nterop_libversio
10cf0 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  n();....    [Dll
10d00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10d10 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
10d20 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10d30 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 73  IntPtr interop_s
10d40 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 20 20  ourceid();....  
10d50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10d60 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
10d70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10d80 78 74 65 72 6e 20 69 6e 74 20 69 6e 74 65 72 6f  xtern int intero
10d90 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  p_compileoption_
10da0 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74  used(IntPtr zOpt
10db0 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  Name);....    [D
10dc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10dd0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
10de0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10df0 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70  n IntPtr interop
10e00 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
10e10 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 20 20  et(int N);....  
10e20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10e30 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
10e40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10e50 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
10e60 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c  rCode sqlite3_cl
10e70 6f 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ose_interop(IntP
10e80 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b  tr db);....    [
10e90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10ea0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
10eb0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10ec0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10ed0 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
10ee0 65 5f 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72  e_function_inter
10ef0 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  op(IntPtr db, by
10f00 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e  te[] strName, in
10f10 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79  t nArgs, int nTy
10f20 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  pe, IntPtr pvUse
10f30 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  r, SQLiteCallbac
10f40 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61  k func, SQLiteCa
10f50 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51  llback fstep, SQ
10f60 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63  LiteFinalCallbac
10f70 6b 20 66 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65  k ffinal, int ne
10f80 65 64 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20  edCollSeq);.... 
10f90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10fa0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
10fb0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10fc0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
10fd0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66  orCode sqlite3_f
10fe0 69 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28  inalize_interop(
10ff0 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
11000 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11010 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
11020 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11030 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
11040 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
11050 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69  _backup_finish_i
11060 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 62 61  nterop(IntPtr ba
11070 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ckup);....    [D
11080 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11090 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
110a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
110b0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
110c0 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63  e sqlite3_blob_c
110d0 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  lose_interop(Int
110e0 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 20 20  Ptr blob);....  
110f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11100 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
11110 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11120 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
11130 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
11140 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  en_interop(byte[
11150 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
11160 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20  byte[] vfsName, 
11170 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
11180 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65  num flags, int e
11190 78 74 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74  xtFuncs, ref Int
111a0 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
111b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
111c0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
111d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
111e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
111f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
11200 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  16_interop(byte[
11210 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
11220 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20  byte[] vfsName, 
11230 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
11240 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65  num flags, int e
11250 78 74 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74  xtFuncs, ref Int
11260 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
11270 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11280 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
11290 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
112a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
112b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65  ode sqlite3_rese
112c0 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
112d0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b   stmt);....    [
112e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
112f0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
11300 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11310 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
11320 68 61 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 49  hanges_interop(I
11330 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64  ntPtr db);..#end
11340 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53  if..// !SQLITE_S
11350 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
11360 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
11370 20 2f 2f 20 54 68 65 20 73 74 61 6e 64 61 72 64   // The standard
11380 20 61 70 69 20 63 61 6c 6c 20 65 71 75 69 76 61   api call equiva
11390 6c 65 6e 74 73 20 6f 66 20 74 68 65 20 61 62 6f  lents of the abo
113a0 76 65 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73  ve interop calls
113b0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74  ..    #region st
113c0 61 6e 64 61 72 64 20 76 65 72 73 69 6f 6e 73 20  andard versions 
113d0 6f 66 20 69 6e 74 65 72 6f 70 20 66 75 6e 63 74  of interop funct
113e0 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49  ions....#if SQLI
113f0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23  TE_STANDARD....#
11400 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11410 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11420 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11430 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11440 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11450 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11460 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11470 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11480 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11490 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
114a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
114b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
114c0 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e  sqlite3_close(In
114d0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
114e0 20 21 49 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59   !INTEROP_LEGACY
114f0 5f 43 4c 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41  _CLOSE..#if !PLA
11500 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11510 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11520 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11530 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11540 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11550 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11560 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11570 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11580 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
11590 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
115a0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
115b0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
115c0 5f 63 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72  _close_v2(IntPtr
115d0 20 64 62 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b   db); /* 3.7.14+
115e0 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23   */..#endif....#
115f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11600 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11610 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11620 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11630 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11640 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11650 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11660 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11670 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11680 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11690 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
116a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
116b0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
116c0 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64  unction(IntPtr d
116d0 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
116e0 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e  e, int nArgs, in
116f0 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
11700 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61  pvUser, SQLiteCa
11710 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c  llback func, SQL
11720 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65  iteCallback fste
11730 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61  p, SQLiteFinalCa
11740 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d  llback ffinal);.
11750 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11760 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11770 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11780 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11790 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
117a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
117b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
117c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
117d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
117e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
117f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11800 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
11810 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61  ode sqlite3_fina
11820 6c 69 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74  lize(IntPtr stmt
11830 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11840 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11850 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11860 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11870 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11880 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11890 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
118a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
118b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
118c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
118d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
118e0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
118f0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
11900 61 63 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74  ackup_finish(Int
11910 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
11920 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11930 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11940 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11950 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11960 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11970 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11980 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11990 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
119a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
119b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
119c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
119d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
119e0 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49   sqlite3_reset(I
119f0 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
11a00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11a10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11a20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11a30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11a40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11a50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11a60 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11a70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11a80 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11a90 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11aa0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11ab0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
11ac0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e  bind_parameter_n
11ad0 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
11ae0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
11af0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11b00 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11b10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11b20 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11b30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11b40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11b50 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11b60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11b70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11b80 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11b90 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11ba0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
11bb0 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
11bc0 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
11bd0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
11be0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11bf0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11c00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11c10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11c20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11c30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11c40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
11c50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11c60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
11c70 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
11c80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11c90 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
11ca0 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
11cb0 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
11cc0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
11cd0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11ce0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11cf0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11d00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
11d10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11d20 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
11d30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11d40 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11d50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11d60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11d70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11d80 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
11d90 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
11da0 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ype(IntPtr stmt,
11db0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
11dc0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11dd0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11de0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11df0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11e00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11e10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11e20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11e30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11e40 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11e50 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11e60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11e70 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
11e80 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
11e90 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
11ea0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
11eb0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11ec0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11ed0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11ee0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11ef0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11f00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11f10 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11f20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11f30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11f40 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11f50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
11f60 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
11f70 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  lumn_name(IntPtr
11f80 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
11f90 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11fa0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11fb0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11fc0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11fd0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11fe0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11ff0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12000 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12010 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12020 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
12030 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12040 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
12050 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
12060 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
12070 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
12080 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12090 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
120a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
120b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
120c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
120d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
120e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
120f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12100 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12110 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12120 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12130 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
12140 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
12150 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
12160 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
12170 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12180 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12190 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
121a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
121b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
121c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
121d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
121e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
121f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12200 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12210 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12220 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
12230 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
12240 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
12250 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
12260 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12270 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12280 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12290 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
122a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
122b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
122c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
122d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
122e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
122f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12300 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12310 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
12320 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
12330 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
12340 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
12350 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12360 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12370 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12380 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12390 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
123a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
123b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
123c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
123d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
123e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
123f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
12400 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
12410 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31  lumn_table_name1
12420 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
12430 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
12440 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12450 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12460 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12470 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12480 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12490 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
124a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
124b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
124c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
124d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
124e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
124f0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
12500 6c 75 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72  lumn_text(IntPtr
12510 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
12520 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
12530 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12540 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12550 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12560 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12570 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12580 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12590 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
125a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
125b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
125c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
125d0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
125e0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
125f0 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t16(IntPtr stmt,
12600 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
12610 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12620 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12630 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12640 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12650 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12660 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12670 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12680 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12690 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
126a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
126b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
126c0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
126d0 65 72 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62  errmsg(IntPtr db
126e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
126f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12700 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12710 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12720 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12730 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12740 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12750 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12760 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12770 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
12780 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12790 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
127a0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70  orCode sqlite3_p
127b0 72 65 70 61 72 65 28 49 6e 74 50 74 72 20 64 62  repare(IntPtr db
127c0 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
127d0 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49  nt nBytes, ref I
127e0 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20  ntPtr stmt, ref 
127f0 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
12800 29 3b 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52  );....#if USE_PR
12810 45 50 41 52 45 5f 56 32 0d 0a 23 69 66 20 21 50  EPARE_V2..#if !P
12820 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12830 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12840 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12850 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12860 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12870 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12880 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12890 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
128a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
128b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
128c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
128d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
128e0 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 49 6e  e3_prepare_v2(In
128f0 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
12900 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
12910 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
12920 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
12930 72 52 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69  rRemain);..#endi
12940 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
12950 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12960 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12970 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12980 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12990 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
129a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
129b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
129c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
129d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
129e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
129f0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
12a00 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61  rCode sqlite3_ta
12a10 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
12a20 61 74 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ata(IntPtr db, b
12a30 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
12a40 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
12a50 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65  te[] colName, re
12a60 66 20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61  f IntPtr ptrData
12a70 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Type, ref IntPtr
12a80 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66   ptrCollSeq, ref
12a90 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65   int notNull, re
12aa0 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79  f int primaryKey
12ab0 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e  , ref int autoIn
12ac0 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  c);....#if !PLAT
12ad0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12ae0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12af0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12b00 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12b10 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12b20 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12b30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12b40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12b50 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12b60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12b70 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
12b80 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
12b90 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  t(IntPtr p);....
12ba0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12bb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12bc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12bd0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12be0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12bf0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12c00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12c10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12c20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12c30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12c40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12c50 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
12c60 76 61 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74  value_text16(Int
12c70 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69  Ptr p);....#endi
12c80 66 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 49 54 45  f..    // SQLITE
12c90 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
12ca0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
12cb0 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63     // These func
12cc0 74 69 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d  tions are custom
12cd0 20 61 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75   and have no equ
12ce0 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64  ivalent standard
12cf0 20 6c 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e   library method.
12d00 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20  ..    // All of 
12d10 74 68 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74  them are "nice t
12d20 6f 20 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74  o haves" and not
12d30 20 6e 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65   necessarily "ne
12d40 65 64 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20  ed to haves"... 
12d50 20 20 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71     #region no eq
12d60 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72  uivalent standar
12d70 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20  d method....#if 
12d80 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
12d90 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
12da0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12db0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
12dc0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
12dd0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  tr sqlite3_conte
12de0 78 74 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72  xt_collseq_inter
12df0 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
12e00 74 2c 20 72 65 66 20 69 6e 74 20 74 79 70 65 2c  t, ref int type,
12e10 20 72 65 66 20 69 6e 74 20 65 6e 63 2c 20 72 65   ref int enc, re
12e20 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
12e30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12e40 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
12e50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12e60 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
12e70 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63  e3_context_collc
12e80 6f 6d 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49  ompare_interop(I
12e90 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
12ea0 79 74 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31  yte[] p1, int p1
12eb0 6c 65 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20  len, byte[] p2, 
12ec0 69 6e 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20  int p2len);.... 
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 20 20 20 20  LITE_DLL)]..    
12ef0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12f00 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
12f10 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
12f20 75 72 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65  ursor_rowid_inte
12f30 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
12f40 20 69 6e 74 20 63 75 72 73 6f 72 2c 20 72 65 66   int cursor, ref
12f50 20 6c 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d   long rowid);...
12f60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12f70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
12f80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12f90 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
12fa0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
12fb0 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e  _index_column_in
12fc0 66 6f 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  fo_interop(IntPt
12fd0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74  r db, byte[] cat
12fe0 61 6c 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64  alog, byte[] Ind
12ff0 65 78 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43  exName, byte[] C
13000 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 72 65 66 20 69  olumnName, ref i
13010 6e 74 20 73 6f 72 74 4f 72 64 65 72 2c 20 72 65  nt sortOrder, re
13020 66 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 72  f int onError, r
13030 65 66 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74  ef IntPtr Collat
13040 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 63 6f 6c  ion, ref int col
13050 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  llen);....    [D
13060 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13070 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
13080 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13090 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 61  n int sqlite3_ta
130a0 62 6c 65 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72  ble_cursor_inter
130b0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
130c0 69 6e 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c  int db, int tabl
130d0 65 52 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23  eRootPage);....#
130e0 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
130f0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
13100 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
13110 20 20 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20      // Standard 
13120 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c  API calls global
13130 20 61 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73   across versions
13140 2e 20 20 54 68 65 72 65 20 61 72 65 20 61 20 66  .  There are a f
13150 65 77 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20  ew instances of 
13160 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20  interop calls.. 
13170 20 20 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20     // scattered 
13180 69 6e 20 68 65 72 65 2c 20 62 75 74 20 74 68 65  in here, but the
13190 79 20 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76  y are only activ
131a0 65 20 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f  e when PLATFORM_
131b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
131c0 20 69 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20   is declared... 
131d0 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64     #region stand
131e0 61 72 64 20 73 71 6c 69 74 65 20 61 70 69 20 63  ard sqlite api c
131f0 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  alls....#if !PLA
13200 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13210 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13220 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13230 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13240 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13250 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13260 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13270 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13280 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13290 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
132a0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
132b0 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
132c0 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  on();....#if !PL
132d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
132e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
132f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13300 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13310 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13320 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13330 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13340 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13350 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13360 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13370 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
13380 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
13390 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69  _number();....#i
133a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
133b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
133c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
133d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
133e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
133f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13400 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13410 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13420 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13430 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13440 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
13450 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73 6f  ntPtr sqlite3_so
13460 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66  urceid();....#if
13470 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
13480 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13490 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
134a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
134b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
134c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
134d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
134e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
134f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
13500 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13510 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
13520 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c  t sqlite3_compil
13530 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74  eoption_used(Int
13540 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a  Ptr zOptName);..
13550 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13560 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13570 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13580 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13590 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
135a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
135b0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
135c0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
135d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
135e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
135f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13600 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
13610 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
13620 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23  get(int N);....#
13630 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13640 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13650 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13660 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13670 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13680 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13690 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
136a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
136b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
136c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
136d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
136e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
136f0 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73  sqlite3_enable_s
13700 68 61 72 65 64 5f 63 61 63 68 65 28 0d 0a 20 20  hared_cache(..  
13710 20 20 20 20 20 20 69 6e 74 20 65 6e 61 62 6c 65        int enable
13720 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
13730 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13740 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13750 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13760 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13770 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13780 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13790 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
137a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
137b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
137c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
137d0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
137e0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
137f0 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e  nable_load_exten
13800 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  sion(..        I
13810 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 65 6e  ntPtr db, int en
13820 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  able);....#if !P
13830 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13840 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13850 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13860 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13870 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13880 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13890 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
138a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
138b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
138c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
138d0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
138e0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
138f0 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  e3_load_extensio
13900 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
13910 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 66 69  tr db, byte[] fi
13920 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70  leName, byte[] p
13930 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  rocName, ref Int
13940 50 74 72 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a  Ptr pError);....
13950 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13960 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13970 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13980 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13990 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
139a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
139b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
139c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
139d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
139e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
139f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13a00 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
13a10 20 73 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61   sqlite3_overloa
13a20 64 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74  d_function(IntPt
13a30 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 4e 61  r db, IntPtr zNa
13a40 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 29 3b 0d  me, int nArgs);.
13a50 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a  ...#if WINDOWS..
13a60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13a70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13a80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13a90 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13aa0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13ab0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13ac0 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
13ad0 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
13ae0 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
13af0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13b00 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
13b10 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
13b20 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13b30 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
13b40 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
13b50 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72  n32_set_director
13b60 79 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  y" SQLite core l
13b70 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
13b80 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
13b90 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
13ba0 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d 0a 20 20 20  on Windows...   
13bb0 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
13bc0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13bd0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
13be0 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65  sqlite3_win32_se
13bf0 74 5f 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74  t_directory(uint
13c00 20 74 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61   type, string va
13c10 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 44 45  lue);....#if !DE
13c20 42 55 47 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f  BUG // NOTE: Sho
13c30 75 6c 64 20 62 65 20 22 57 49 4e 33 32 48 45 41  uld be "WIN32HEA
13c40 50 20 26 26 20 21 4d 45 4d 44 45 42 55 47 22 0d  P && !MEMDEBUG".
13c50 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13c60 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13c70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13c80 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13c90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13ca0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13cb0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13cc0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13cd0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13ce0 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
13cf0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
13d00 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72  "sqlite3_win32_r
13d10 65 73 65 74 5f 68 65 61 70 22 20 53 51 4c 69 74  eset_heap" SQLit
13d20 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66  e core library f
13d30 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20  unction is..    
13d40 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75  //       only su
13d50 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f  pported on Windo
13d60 77 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33  ws when the Win3
13d70 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74  2 native allocat
13d80 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f  or is in..    //
13d90 20 20 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e         use (i.e.
13da0 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   by default, in 
13db0 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73  "Release" builds
13dc0 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e   of System.Data.
13dd0 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20  SQLite..    //  
13de0 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20       only).  By 
13df0 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62  default, in "Deb
13e00 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  ug" builds of Sy
13e10 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
13e20 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  , the..    //   
13e30 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c      MEMDEBUG all
13e40 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d  ocator is used..
13e50 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
13e60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13e70 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
13e80 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
13e90 32 5f 72 65 73 65 74 5f 68 65 61 70 28 29 3b 0d  2_reset_heap();.
13ea0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13eb0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13ec0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
13ed0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
13ee0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
13ef0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
13f00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
13f10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
13f20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13f30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d  .#endif..    //.
13f40 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
13f50 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  e "sqlite3_win32
13f60 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 22 20 53  _compact_heap" S
13f70 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
13f80 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
13f90 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
13fa0 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
13fb0 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20  indows when the 
13fc0 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c  Win32 native all
13fd0 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20  ocator is in..  
13fe0 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28    //       use (
13ff0 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c  i.e. by default,
14000 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75   in "Release" bu
14010 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
14020 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20  ata.SQLite..    
14030 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20  //       only). 
14040 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   By default, in 
14050 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f  "Debug" builds o
14060 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
14070 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f  Lite, the..    /
14080 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47  /       MEMDEBUG
14090 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73   allocator is us
140a0 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
140b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
140c0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
140d0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
140e0 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
140f0 61 70 28 72 65 66 20 75 69 6e 74 20 6c 61 72 67  ap(ref uint larg
14100 65 73 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  est);..#endif..#
14110 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
14120 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14130 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14140 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14150 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14160 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14170 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14180 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14190 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
141a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
141b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
141c0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
141d0 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
141e0 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  int n);....#if !
141f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14200 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14210 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14220 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14230 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14240 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14250 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14260 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14270 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14280 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14290 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
142a0 74 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  tr sqlite3_reall
142b0 6f 63 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74  oc(IntPtr p, int
142c0 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   n);....#if !PLA
142d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
142e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
142f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14300 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14310 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14320 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14330 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14340 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14350 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14360 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14370 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
14380 6c 69 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74  lite3_free(IntPt
14390 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
143a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
143b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
143c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
143d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
143e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
143f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14400 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
14410 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14420 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14430 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14440 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
14450 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
14460 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d  3_open_v2(byte[]
14470 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 72   utf8Filename, r
14480 65 66 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ef IntPtr db, SQ
14490 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
144a0 6d 20 66 6c 61 67 73 2c 20 62 79 74 65 5b 5d 20  m flags, byte[] 
144b0 76 66 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  vfsName);....#if
144c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
144d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
144e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
144f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14500 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
14510 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
14520 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
14530 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
14540 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14550 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14560 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
14570 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
14580 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
14590 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
145a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
145b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
145c0 31 36 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61  16(string fileNa
145d0 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  me, ref IntPtr d
145e0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
145f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14600 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14610 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14620 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14630 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14640 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14650 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14660 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14670 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14680 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14690 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
146a0 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49  ite3_interrupt(I
146b0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
146c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
146d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
146e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
146f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
14700 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
14710 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
14720 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
14730 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14740 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
14750 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
14760 64 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23  d(IntPtr db);..#
14770 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
14780 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14790 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
147a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
147b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
147c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
147d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
147e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
147f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14800 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
14810 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
14820 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
14830 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e  lite3_changes(In
14840 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
14850 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14860 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14870 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14880 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
14890 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
148a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
148b0 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
148c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
148d0 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d  n long sqlite3_m
148e0 65 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23  emory_used();..#
148f0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
14900 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
14910 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
14920 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14930 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
14940 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
14950 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14960 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14970 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
14980 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  ng sqlite3_memor
14990 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74 20  y_highwater(int 
149a0 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e  resetFlag);..#en
149b0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
149c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
149d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
149e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
149f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14a00 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14a10 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14a20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14a30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14a40 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14a50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14a60 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
14a70 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
14a80 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23  shutdown();....#
14a90 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
14aa0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
14ab0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14ac0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
14ad0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
14ae0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14af0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
14b00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14b10 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
14b20 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
14b30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14b40 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
14b50 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d  sqlite3_busy_tim
14b60 65 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20  eout(IntPtr db, 
14b70 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20  int ms);....#if 
14b80 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
14b90 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
14ba0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14bb0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
14bc0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
14bd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14be0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
14bf0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14c00 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
14c10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14c20 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
14c30 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
14c40 69 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69  ite3_clear_bindi
14c50 6e 67 73 28 49 6e 74 50 74 72 20 73 74 6d 74 29  ngs(IntPtr stmt)
14c60 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14c70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14c80 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14c90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14ca0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14cb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14cc0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14cd0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14ce0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14cf0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14d00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14d10 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
14d20 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
14d30 6e 64 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73  nd_blob(IntPtr s
14d40 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
14d50 42 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  Byte[] value, in
14d60 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20  t nSize, IntPtr 
14d70 6e 54 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a  nTransient);....
14d80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14d90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14da0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14db0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14dc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14dd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14de0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
14df0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14e00 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
14e10 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
14e20 64 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  d_double(IntPtr 
14e30 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
14e40 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
14e50 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
14e60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14e70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
14e80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14e90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
14ea0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
14eb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
14ec0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
14ed0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14ee0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
14ef0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14f00 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
14f10 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
14f20 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74  te3_bind_int(Int
14f30 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
14f40 64 65 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b  dex, int value);
14f50 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ....    //..    
14f60 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65  // NOTE: This re
14f70 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20  ally just calls 
14f80 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
14f90 74 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20  t"; however, it 
14fa0 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  has the..    // 
14fb0 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79        correct ty
14fc0 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72  pe signature for
14fd0 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32   an unsigned (32
14fe0 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a  -bit) integer...
14ff0 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41      //..#if !PLA
15000 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15010 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
15020 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
15030 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
15040 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
15050 74 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  t", CallingConve
15060 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
15070 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15080 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
15090 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
150a0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
150b0 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
150c0 69 6e 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  int")]..#endif..
150d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
150e0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
150f0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
15100 65 33 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74  e3_bind_uint(Int
15110 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
15120 64 65 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29  dex, uint value)
15130 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
15140 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15150 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
15160 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
15170 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15180 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15190 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
151a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
151b0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
151c0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
151d0 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74  3_bind_int64(Int
151e0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
151f0 64 65 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29  dex, long value)
15200 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
15210 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
15220 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75  : This really ju
15230 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65  st calls "sqlite
15240 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68  3_bind_int64"; h
15250 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74  owever, it has t
15260 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  he..    //      
15270 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69   correct type si
15280 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75  gnature for an u
15290 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34  nsigned long (64
152a0 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a  -bit) integer...
152b0 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41      //..#if !PLA
152c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
152d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
152e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
152f0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
15300 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
15310 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  t64", CallingCon
15320 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
15330 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15340 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
15350 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15360 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
15370 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
15380 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t64(IntPtr stmt,
15390 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e   int index, ulon
153a0 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
153b0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
153c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
153d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
153e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
153f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15400 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
15410 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15420 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
15430 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
15440 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
15450 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15460 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
15470 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
15480 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73  nd_null(IntPtr s
15490 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
154a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
154b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
154c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
154d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
154e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
154f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15500 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15510 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15520 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15530 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15540 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15550 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
15560 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
15570 64 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73 74  d_text(IntPtr st
15580 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62  mt, int index, b
15590 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74  yte[] value, int
155a0 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nlen, IntPtr pv
155b0 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
155c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
155d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
155e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
155f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15600 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
15610 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15620 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
15630 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
15640 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
15650 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
15660 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
15670 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
15680 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28  parameter_count(
15690 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
156a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
156b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
156c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
156d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
156e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
156f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15700 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
15710 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15720 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
15730 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
15740 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
15750 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
15760 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64  nd_parameter_ind
15770 65 78 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ex(IntPtr stmt, 
15780 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b  byte[] strName);
15790 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
157a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
157b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
157c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
157d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
157e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
157f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15800 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15810 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15820 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15830 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15840 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
15850 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e  _column_count(In
15860 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
15870 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15880 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15890 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
158a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
158b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
158c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
158d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
158e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
158f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
15900 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
15910 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
15920 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
15930 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49 6e 74  sqlite3_step(Int
15940 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
15950 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
15960 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
15970 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15980 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
15990 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
159a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
159b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
159c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
159d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
159e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
159f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
15a00 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f  nt sqlite3_stmt_
15a10 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20  readonly(IntPtr 
15a20 73 74 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b  stmt); /* 3.7.4+
15a30 20 2a 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54   */....#if !PLAT
15a40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15a50 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
15a60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
15a70 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
15a80 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
15a90 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
15aa0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
15ab0 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62  atic extern doub
15ac0 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  le sqlite3_colum
15ad0 6e 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  n_double(IntPtr 
15ae0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
15af0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
15b00 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15b10 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15b20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15b30 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
15b40 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
15b50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
15b60 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
15b70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
15b80 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
15b90 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
15ba0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
15bb0 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
15bc0 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  _int(IntPtr stmt
15bd0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
15be0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15bf0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15c00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
15c10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
15c20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
15c30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15c40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
15c50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
15c60 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
15c70 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28  e3_column_int64(
15c80 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
15c90 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66   index);..#endif
15ca0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15cb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15cc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
15cd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
15ce0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15cf0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
15d00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
15d10 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
15d20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
15d30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
15d40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
15d50 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
15d60 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28  te3_column_blob(
15d70 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
15d80 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
15d90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15da0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15db0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
15dc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
15dd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
15de0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15df0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
15e00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
15e10 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
15e20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
15e30 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
15e40 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
15e50 62 79 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d  bytes(IntPtr stm
15e60 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
15e70 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15e80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15e90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
15ea0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
15eb0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
15ec0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
15ed0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
15ee0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
15ef0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
15f00 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
15f10 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
15f20 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
15f30 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e  olumn_bytes16(In
15f40 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
15f50 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
15f60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15f70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
15f80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
15f90 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
15fa0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
15fb0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15fc0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
15fd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
15fe0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
15ff0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
16000 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41  tic extern TypeA
16010 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f  ffinity sqlite3_
16020 63 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50  column_type(IntP
16030 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
16040 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
16050 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16060 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
16070 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16080 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
16090 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
160a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
160b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
160c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
160d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
160e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
160f0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
16100 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
16110 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f  _create_collatio
16120 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  n(IntPtr db, byt
16130 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  e[] strName, int
16140 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
16150 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c  vUser, SQLiteCol
16160 6c 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d  lation func);...
16170 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16180 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16190 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
161a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
161b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
161c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
161d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
161e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
161f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
16200 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
16210 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
16220 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67  n int sqlite3_ag
16230 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e  gregate_count(In
16240 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
16250 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16260 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16270 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16280 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16290 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
162a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
162b0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
162c0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
162d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
162e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
162f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16300 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
16310 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74  3_value_blob(Int
16320 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
16330 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16340 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16350 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16360 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16370 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16380 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16390 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
163a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
163b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
163c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
163d0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
163e0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
163f0 74 65 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  tes(IntPtr p);..
16400 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16410 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
16420 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16430 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
16440 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
16450 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16460 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16470 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16480 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16490 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
164a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
164b0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76  rn int sqlite3_v
164c0 61 6c 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74  alue_bytes16(Int
164d0 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
164e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
164f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16500 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16510 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16520 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16530 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16540 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
16550 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
16560 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76  double sqlite3_v
16570 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50  alue_double(IntP
16580 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  tr p);..#endif..
16590 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
165a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
165b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
165c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
165d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
165e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
165f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
16600 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
16610 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
16620 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
16630 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
16640 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76  rn int sqlite3_v
16650 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20  alue_int(IntPtr 
16660 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
16670 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16680 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16690 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
166a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
166b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
166c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
166d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
166e0 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
166f0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
16700 6e 74 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d  nt64(IntPtr p);.
16710 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
16720 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16730 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
16740 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16750 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
16760 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
16770 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
16780 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
16790 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
167a0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
167b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
167c0 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65  atic extern Type
167d0 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33  Affinity sqlite3
167e0 5f 76 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50  _value_type(IntP
167f0 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
16800 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16810 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
16820 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16830 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
16840 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
16850 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16860 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
16870 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
16880 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
16890 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
168a0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
168b0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62  sqlite3_result_b
168c0 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lob(IntPtr conte
168d0 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  xt, byte[] value
168e0 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74  , int nSize, Int
168f0 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
16900 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16910 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16920 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
16930 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
16940 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16950 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
16960 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
16970 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
16980 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
16990 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
169a0 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ble(IntPtr conte
169b0 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  xt, double value
169c0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
169d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
169e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
169f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
16a00 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
16a10 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
16a20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16a30 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
16a40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
16a50 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
16a60 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
16a70 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
16a80 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
16a90 6c 74 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20  lt_error(IntPtr 
16aa0 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
16ab0 73 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e  strErr, int nLen
16ac0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
16ad0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16ae0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
16af0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
16b00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
16b10 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
16b20 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
16b30 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
16b40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16b50 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
16b60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
16b70 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
16b80 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
16b90 5f 63 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e  _code(IntPtr con
16ba0 74 65 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f  text, SQLiteErro
16bb0 72 43 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  rCode value);...
16bc0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16bd0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16be0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
16bf0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
16c00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
16c10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16c20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
16c30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
16c40 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
16c50 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
16c60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
16c70 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
16c80 65 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62  esult_error_toob
16c90 69 67 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ig(IntPtr contex
16ca0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
16cb0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16cc0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
16cd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
16ce0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
16cf0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
16d00 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
16d10 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
16d20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
16d30 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
16d40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
16d50 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
16d60 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
16d70 72 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63  r_nomem(IntPtr c
16d80 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
16d90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16da0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
16db0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
16dc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
16dd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
16de0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16df0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
16e00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
16e10 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
16e20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
16e30 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
16e40 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
16e50 5f 76 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f  _value(IntPtr co
16e60 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61  ntext, IntPtr va
16e70 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
16e80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
16e90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
16ea0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
16eb0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
16ec0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
16ed0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16ee0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
16ef0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
16f00 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
16f10 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
16f20 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
16f30 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65  qlite3_result_ze
16f40 72 6f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f  roblob(IntPtr co
16f50 6e 74 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29  ntext, int nLen)
16f60 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
16f70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16f80 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
16f90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
16fa0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
16fb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
16fc0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16fd0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
16fe0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
16ff0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17000 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17010 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
17020 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e  e3_result_int(In
17030 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e  tPtr context, in
17040 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  t value);....#if
17050 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17060 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17070 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17080 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17090 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
170a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
170b0 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
170c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
170d0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
170e0 65 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50  esult_int64(IntP
170f0 74 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67  tr context, long
17100 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
17110 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17120 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17130 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
17140 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
17150 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
17160 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
17170 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
17180 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
17190 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
171a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
171b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
171c0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
171d0 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e  3_result_null(In
171e0 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
171f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17200 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17210 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17220 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17230 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17240 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17250 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17260 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17270 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17280 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17290 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
172a0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
172b0 72 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50  result_text(IntP
172c0 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65  tr context, byte
172d0 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c  [] value, int nL
172e0 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  en, IntPtr pvRes
172f0 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
17300 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17310 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17320 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17330 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17340 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17350 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17360 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17370 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17380 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17390 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
173a0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
173b0 74 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65  tr sqlite3_aggre
173c0 67 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74  gate_context(Int
173d0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
173e0 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66   nBytes);....#if
173f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17400 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17410 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17420 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17430 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
17440 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17450 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
17460 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
17470 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
17480 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
17490 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
174a0 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
174b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
174c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
174d0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
174e0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
174f0 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
17500 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
17510 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e  string value, in
17520 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70  t nlen, IntPtr p
17530 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
17540 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17550 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17560 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
17570 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
17580 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
17590 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
175a0 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
175b0 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
175c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
175d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
175e0 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
175f0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
17600 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17610 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17620 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
17630 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31  e3_result_error1
17640 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  6(IntPtr context
17650 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65  , string strName
17660 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
17670 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
17680 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
17690 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
176a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
176b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
176c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
176d0 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
176e0 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
176f0 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
17700 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17710 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
17720 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
17730 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17740 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17750 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
17760 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31  te3_result_text1
17770 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  6(IntPtr context
17780 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65  , string strName
17790 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50  , int nLen, IntP
177a0 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
177b0 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43  ...#if INTEROP_C
177c0 4f 44 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f  ODEC || INTEROP_
177d0 49 4e 43 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66  INCLUDE_SEE..#if
177e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
177f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17800 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
17810 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
17820 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
17830 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
17840 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
17850 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
17860 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
17870 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
17880 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
17890 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
178a0 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72  lite3_key(IntPtr
178b0 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c   db, byte[] key,
178c0 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d   int keylen);...
178d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
178e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
178f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17900 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
17910 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
17920 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17930 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
17940 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17950 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
17960 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
17970 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
17980 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
17990 65 20 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28  e sqlite3_rekey(
179a0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
179b0 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65  ] key, int keyle
179c0 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  n);..#endif....#
179d0 69 66 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55  if INTEROP_INCLU
179e0 44 45 5f 5a 49 50 56 46 53 0d 0a 23 69 66 20 21  DE_ZIPVFS..#if !
179f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17a00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17a10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17a20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
17a30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
17a40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
17a50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
17a60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
17a70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
17a80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17a90 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
17aa0 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 32 28 29   zipvfsInit_v2()
17ab0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17ac0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17ad0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17ae0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17af0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17b00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17b10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17b20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17b30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17b40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17b50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17b60 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66  xtern void zipvf
17b70 73 49 6e 69 74 5f 76 33 28 69 6e 74 20 72 65 67  sInit_v3(int reg
17b80 44 66 6c 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Dflt);..#endif..
17b90 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
17ba0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
17bb0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17bc0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
17bd0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
17be0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17bf0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
17c00 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
17c10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
17c20 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
17c30 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
17c40 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
17c50 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72  progress_handler
17c60 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
17c70 6f 70 73 2c 20 53 51 4c 69 74 65 50 72 6f 67 72  ops, SQLiteProgr
17c80 65 73 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  essCallback func
17c90 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
17ca0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
17cb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
17cc0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
17cd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
17ce0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17cf0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
17d00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
17d10 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
17d20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
17d30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
17d40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
17d50 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
17d60 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69  ite3_set_authori
17d70 7a 65 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53  zer(IntPtr db, S
17d80 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43  QLiteAuthorizerC
17d90 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
17da0 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
17db0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
17dc0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17dd0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
17de0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
17df0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
17e00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
17e10 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
17e20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
17e30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
17e40 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
17e50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
17e60 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
17e70 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74  _update_hook(Int
17e80 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70  Ptr db, SQLiteUp
17e90 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  dateCallback fun
17ea0 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
17eb0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
17ec0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17ed0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
17ee0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
17ef0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
17f00 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
17f10 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
17f20 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
17f30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
17f40 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
17f50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
17f60 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
17f70 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f  lite3_commit_hoo
17f80 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
17f90 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63  iteCommitCallbac
17fa0 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
17fb0 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
17fc0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17fd0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
17fe0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
17ff0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18000 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18010 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18020 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18030 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18040 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18050 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18060 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
18070 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  tr sqlite3_trace
18080 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
18090 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20  teTraceCallback 
180a0 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
180b0 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20  ser);....    // 
180c0 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f  Since sqlite3_co
180d0 6e 66 69 67 28 29 20 74 61 6b 65 73 20 61 20 76  nfig() takes a v
180e0 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74  ariable argument
180f0 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74   list, we have t
18100 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61  o overload decla
18110 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20  rations..    // 
18120 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65  for all possible
18130 20 63 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77   calls that we w
18140 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66  ant to use...#if
18150 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18160 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18170 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18180 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
18190 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
181a0 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nfig", CallingCo
181b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
181c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
181d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
181e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
181f0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
18200 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
18210 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  nfig")]..#endif.
18220 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18230 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
18240 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
18250 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28  te3_config_none(
18260 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45  SQLiteConfigOpsE
18270 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20  num op);....#if 
18280 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18290 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
182a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
182b0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
182c0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
182d0 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
182e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
182f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18300 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18310 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18320 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
18330 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
18340 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
18350 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18360 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
18370 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
18380 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51  e3_config_int(SQ
18390 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
183a0 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29  m op, int value)
183b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
183c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
183d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
183e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
183f0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
18400 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43  lite3_config", C
18410 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
18420 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
18430 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
18440 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
18450 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
18460 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
18470 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d  lite3_config")].
18480 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
18490 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
184a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
184b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ode sqlite3_conf
184c0 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e  ig_log(SQLiteCon
184d0 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53  figOpsEnum op, S
184e0 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b  QLiteLogCallback
184f0 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
18500 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
18510 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18520 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
18530 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18540 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
18550 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  = "sqlite3_db_co
18560 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nfig", CallingCo
18570 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
18580 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
18590 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
185a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
185b0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
185c0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62  nt = "sqlite3_db
185d0 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64  _config")]..#end
185e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
185f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
18600 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
18610 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
18620 5f 69 6e 74 5f 72 65 66 69 6e 74 28 49 6e 74 50  _int_refint(IntP
18630 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e  tr db, SQLiteCon
18640 66 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c  figDbOpsEnum op,
18650 20 69 6e 74 20 76 61 6c 75 65 2c 20 72 65 66 20   int value, ref 
18660 69 6e 74 20 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a  int result);....
18670 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
18680 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
18690 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
186a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
186b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
186c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
186d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
186e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
186f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
18700 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
18710 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18720 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
18730 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e  rollback_hook(In
18740 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52  tPtr db, SQLiteR
18750 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20  ollbackCallback 
18760 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
18770 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
18780 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18790 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
187a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
187b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
187c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
187d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
187e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
187f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
18800 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
18810 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18820 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
18830 20 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64   sqlite3_db_hand
18840 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  le(IntPtr stmt);
18850 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18860 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18870 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
18880 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
18890 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
188a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
188b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
188c0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
188d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
188e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
188f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18900 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
18910 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f  Code sqlite3_db_
18920 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 49  release_memory(I
18930 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
18940 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
18950 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18960 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18970 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
18980 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
18990 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
189a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
189b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
189c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
189d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
189e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
189f0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62  ntPtr sqlite3_db
18a00 5f 66 69 6c 65 6e 61 6d 65 28 49 6e 74 50 74 72  _filename(IntPtr
18a10 20 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61   db, IntPtr dbNa
18a20 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
18a30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
18a40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
18a50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18a60 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
18a70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
18a80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
18a90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
18aa0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18ab0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
18ac0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18ad0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
18ae0 69 74 65 33 5f 64 62 5f 72 65 61 64 6f 6e 6c 79  ite3_db_readonly
18af0 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
18b00 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  tr dbName);....#
18b10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
18b20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
18b30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18b40 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
18b50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
18b60 64 62 5f 66 69 6c 65 6e 61 6d 65 22 2c 20 43 61  db_filename", Ca
18b70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
18b80 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
18b90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
18ba0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
18bb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
18bc0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
18bd0 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
18be0 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
18bf0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18c00 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
18c10 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61  qlite3_db_filena
18c20 6d 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  me_bytes(IntPtr 
18c30 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
18c40 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
18c50 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18c60 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
18c70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
18c80 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
18c90 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
18ca0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
18cb0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
18cc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
18cd0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
18ce0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
18cf0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
18d00 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74  qlite3_next_stmt
18d10 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
18d20 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
18d30 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
18d40 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
18d50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18d60 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
18d70 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
18d80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
18d90 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
18da0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
18db0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
18dc0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
18dd0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
18de0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
18df0 6c 69 74 65 33 5f 65 78 65 63 28 49 6e 74 50 74  lite3_exec(IntPt
18e00 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
18e10 53 71 6c 2c 20 49 6e 74 50 74 72 20 70 76 43 61  Sql, IntPtr pvCa
18e20 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74 72 20 70  llback, IntPtr p
18e30 76 50 61 72 61 6d 2c 20 72 65 66 20 49 6e 74 50  vParam, ref IntP
18e40 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23  tr errMsg);....#
18e50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
18e60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
18e70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18e80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
18e90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
18ea0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
18eb0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
18ec0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
18ed0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
18ee0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
18ef0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
18f00 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6c 65  int sqlite3_rele
18f10 61 73 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 20 6e  ase_memory(int n
18f20 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
18f30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
18f40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
18f50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18f60 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
18f70 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
18f80 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
18f90 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
18fa0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18fb0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
18fc0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18fd0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
18fe0 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f  sqlite3_get_auto
18ff0 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20 64 62  commit(IntPtr db
19000 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
19010 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19020 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
19030 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
19040 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
19050 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
19060 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
19070 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
19080 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19090 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
190a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
190b0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
190c0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
190d0 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63  xtended_result_c
190e0 6f 64 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  odes(IntPtr db, 
190f0 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23  int onoff);....#
19100 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
19110 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19120 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19130 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
19140 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
19150 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
19160 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
19170 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19180 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
19190 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
191a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
191b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
191c0 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28  sqlite3_errcode(
191d0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
191e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
191f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19200 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19210 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
19220 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
19230 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
19240 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
19250 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19260 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
19270 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
19280 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19290 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
192a0 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
192b0 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
192c0 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
192d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
192e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
192f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19300 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
19310 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
19320 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
19330 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
19340 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19350 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
19360 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19370 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
19380 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28 53  sqlite3_errstr(S
19390 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72  QLiteErrorCode r
193a0 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a  c); /* 3.7.15+ *
193b0 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63  /....    // Sinc
193c0 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20  e sqlite3_log() 
193d0 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65  takes a variable
193e0 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20   argument list, 
193f0 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c  we have to overl
19400 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73  oad declarations
19410 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c  ..    // for all
19420 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e   possible calls.
19430 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72    For now, we ar
19440 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20  e only exposing 
19450 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c  a single string,
19460 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 65 70   and..    // dep
19470 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65  end on the calle
19480 72 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20  r to format the 
19490 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c  string...#if !PL
194a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
194b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
194c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
194d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
194e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
194f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
19500 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
19510 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19520 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
19530 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19540 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
19550 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74  qlite3_log(SQLit
19560 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43  eErrorCode iErrC
19570 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72  ode, byte[] zFor
19580 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  mat);....#if !PL
19590 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
195a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
195b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
195c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
195d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
195e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
195f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
19600 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19610 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
19620 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19630 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
19640 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
19650 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49  3_file_control(I
19660 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
19670 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70   zDbName, int op
19680 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b 0d  , IntPtr pArg);.
19690 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
196a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
196b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
196c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
196d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
196e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
196f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19700 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19710 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19720 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19730 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19740 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
19750 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28 49  e3_backup_init(I
19760 6e 74 50 74 72 20 64 65 73 74 44 62 2c 20 62 79  ntPtr destDb, by
19770 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20  te[] zDestName, 
19780 49 6e 74 50 74 72 20 73 6f 75 72 63 65 44 62 2c  IntPtr sourceDb,
19790 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e   byte[] zSourceN
197a0 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
197b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
197c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
197d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
197e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
197f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
19800 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
19810 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
19820 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19830 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
19840 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19850 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
19860 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
19870 33 5f 62 61 63 6b 75 70 5f 73 74 65 70 28 49 6e  3_backup_step(In
19880 74 50 74 72 20 62 61 63 6b 75 70 2c 20 69 6e 74  tPtr backup, int
19890 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20   nPage);....#if 
198a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
198b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
198c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
198d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
198e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
198f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19900 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19910 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19920 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19930 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19940 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
19950 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
19960 72 65 6d 61 69 6e 69 6e 67 28 49 6e 74 50 74 72  remaining(IntPtr
19970 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66   backup);....#if
19980 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
19990 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
199a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
199b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
199c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
199d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
199e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
199f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19a00 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
19a10 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
19a20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
19a30 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  t sqlite3_backup
19a40 5f 70 61 67 65 63 6f 75 6e 74 28 49 6e 74 50 74  _pagecount(IntPt
19a50 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
19a60 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19a70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19a80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
19a90 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
19aa0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
19ab0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
19ac0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
19ad0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19ae0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
19af0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
19b00 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19b10 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19b20 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73  qlite3_blob_clos
19b30 65 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d  e(IntPtr blob);.
19b40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
19b50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19b60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
19b70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
19b80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
19b90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
19ba0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
19bb0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
19bc0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19bd0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
19be0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19bf0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
19c00 62 6c 6f 62 5f 62 79 74 65 73 28 49 6e 74 50 74  blob_bytes(IntPt
19c10 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20  r blob);....#if 
19c20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
19c30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19c40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19c50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
19c60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
19c70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
19c80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
19c90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19ca0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
19cb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19cc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19cd0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19ce0 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49  ite3_blob_open(I
19cf0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
19d00 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
19d10 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
19d20 63 6f 6c 4e 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f  colName, long ro
19d30 77 49 64 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20  wId, int flags, 
19d40 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 42 6c  ref IntPtr ptrBl
19d50 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
19d60 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
19d70 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
19d80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19d90 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
19da0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
19db0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
19dc0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
19dd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19de0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
19df0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19e00 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
19e10 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
19e20 5f 62 6c 6f 62 5f 72 65 61 64 28 49 6e 74 50 74  _blob_read(IntPt
19e30 72 20 62 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c  r blob, [Marshal
19e40 41 73 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65  As(UnmanagedType
19e50 2e 4c 50 41 72 72 61 79 29 5d 20 62 79 74 65 5b  .LPArray)] byte[
19e60 5d 20 62 75 66 66 65 72 2c 20 69 6e 74 20 63 6f  ] buffer, int co
19e70 75 6e 74 2c 20 69 6e 74 20 6f 66 66 73 65 74 29  unt, int offset)
19e80 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
19e90 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
19ea0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
19eb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
19ec0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
19ed0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
19ee0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
19ef0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
19f00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19f10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
19f20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
19f30 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
19f40 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
19f50 6f 62 5f 72 65 6f 70 65 6e 28 49 6e 74 50 74 72  ob_reopen(IntPtr
19f60 20 62 6c 6f 62 2c 20 6c 6f 6e 67 20 72 6f 77 49   blob, long rowI
19f70 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
19f80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19f90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
19fa0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19fb0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
19fc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
19fd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
19fe0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
19ff0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a000 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1a010 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1a020 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1a030 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1a040 62 6c 6f 62 5f 77 72 69 74 65 28 49 6e 74 50 74  blob_write(IntPt
1a050 72 20 62 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c  r blob, [Marshal
1a060 41 73 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65  As(UnmanagedType
1a070 2e 4c 50 41 72 72 61 79 29 5d 20 62 79 74 65 5b  .LPArray)] byte[
1a080 5d 20 62 75 66 66 65 72 2c 20 69 6e 74 20 63 6f  ] buffer, int co
1a090 75 6e 74 2c 20 69 6e 74 20 6f 66 66 73 65 74 29  unt, int offset)
1a0a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1a0b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a0c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a0d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a0e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a0f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a100 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a110 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a120 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a130 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1a140 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a150 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1a160 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 65  rCode sqlite3_de
1a170 63 6c 61 72 65 5f 76 74 61 62 28 49 6e 74 50 74  clare_vtab(IntPt
1a180 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 53 51  r db, IntPtr zSQ
1a190 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  L);....#if !PLAT
1a1a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a1b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1a1c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a1d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1a1e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1a1f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1a200 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1a210 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a220 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1a230 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1a240 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1a250 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 49  qlite3_mprintf(I
1a260 6e 74 50 74 72 20 66 6f 72 6d 61 74 2c 20 5f 5f  ntPtr format, __
1a270 61 72 67 6c 69 73 74 29 3b 0d 0a 20 20 20 20 23  arglist);..    #
1a280 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1a290 20 2f 2f 20 53 51 4c 69 74 65 20 41 50 49 20 63   // SQLite API c
1a2a0 61 6c 6c 73 20 74 68 61 74 20 61 72 65 20 70 72  alls that are pr
1a2b0 6f 76 69 64 65 64 20 62 79 20 22 77 65 6c 6c 2d  ovided by "well-
1a2c0 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f 6e  known" extension
1a2d0 73 20 74 68 61 74 20 6d 61 79 20 62 65 20 73 74  s that may be st
1a2e0 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f  atically..    //
1a2f0 20 6c 69 6e 6b 65 64 20 77 69 74 68 20 74 68 65   linked with the
1a300 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6e 61 74   SQLite core nat
1a310 69 76 65 20 6c 69 62 72 61 72 79 20 63 75 72 72  ive library curr
1a320 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a 20  ently in use... 
1a330 20 20 20 23 72 65 67 69 6f 6e 20 65 78 74 65 6e     #region exten
1a340 73 69 6f 6e 20 73 71 6c 69 74 65 20 61 70 69 20  sion sqlite api 
1a350 63 61 6c 6c 73 0d 0a 23 69 66 20 49 4e 54 45 52  calls..#if INTER
1a360 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
1a370 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1a380 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a390 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a3a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1a3b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1a3c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a3d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1a3e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1a3f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1a400 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1a410 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1a420 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1a430 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
1a440 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74  ble_module(IntPt
1a450 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d  r db, IntPtr nam
1a460 65 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d  e, ref sqlite3_m
1a470 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e  odule module, In
1a480 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
1a490 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65  , xDestroyModule
1a4a0 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23   xDestroy);....#
1a4b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a4c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a4d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a4e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1a4f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1a500 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a510 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1a520 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a530 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1a540 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1a550 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1a560 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73  void sqlite3_dis
1a570 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50  pose_module(IntP
1a580 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65  tr pModule);..#e
1a590 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
1a5a0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
1a5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a5f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
1a600 72 65 67 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e  region sqlite in
1a610 74 65 72 6f 70 20 61 70 69 20 63 61 6c 6c 73 20  terop api calls 
1a620 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72  (.NET Compact Fr
1a630 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23  amework only)..#
1a640 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1a650 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20  ACTFRAMEWORK && 
1a660 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
1a670 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a680 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1a690 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a6a0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1a6b0 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
1a6c0 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70  rt_rowid_interop
1a6d0 28 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20  (IntPtr db, ref 
1a6e0 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a  long rowId);....
1a6f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a700 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1a710 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1a720 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1a730 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64  ite3_memory_used
1a740 5f 69 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e  _interop(ref lon
1a750 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20  g bytes);....   
1a760 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a770 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
1a780 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a790 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1a7a0 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74  3_memory_highwat
1a7b0 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72  er_interop(int r
1a7c0 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f  esetFlag, ref lo
1a7d0 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20  ng bytes);....  
1a7e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a7f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1a800 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a810 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1a820 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
1a830 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  nd_double_intero
1a840 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
1a850 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f  nt index, ref do
1a860 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
1a870 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a880 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1a890 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1a8a0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1a8b0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1a8c0 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72  bind_int64_inter
1a8d0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1a8e0 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c  int index, ref l
1a8f0 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ong value);.... 
1a900 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a910 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
1a920 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
1a930 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72  bind_int64_inter
1a940 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  op")]..    inter
1a950 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a960 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1a970 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75  e sqlite3_bind_u
1a980 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
1a990 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1a9a0 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20  ndex, ref ulong 
1a9b0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
1a9c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a9d0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1a9e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1a9f0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1aa00 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e  column_double_in
1aa10 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
1aa20 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
1aa30 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  f double value);
1aa40 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1aa50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1aa60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1aa70 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1aa80 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1aa90 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
1aaa0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1aab0 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76  ndex, ref long v
1aac0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
1aad0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1aae0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1aaf0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ab00 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76  n void sqlite3_v
1ab10 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  alue_double_inte
1ab20 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65  rop(IntPtr p, re
1ab30 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  f double value);
1ab40 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1ab50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1ab60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ab70 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1ab80 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
1ab90 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
1aba0 50 74 72 20 70 2c 20 72 65 66 20 49 6e 74 36 34  Ptr p, ref Int64
1abb0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
1abc0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1abd0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1abe0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1abf0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1ac00 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69  _result_double_i
1ac10 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
1ac20 6e 74 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c  ntext, ref doubl
1ac30 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
1ac40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ac50 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
1ac60 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1ac70 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1ac80 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69  3_result_int64_i
1ac90 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
1aca0 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34  ntext, ref Int64
1acb0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
1acc0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1acd0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1ace0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1acf0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1ad00 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73  e3_create_dispos
1ad10 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65  able_module_inte
1ad20 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  rop(..        In
1ad30 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
1ad40 6e 61 6d 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f  name, IntPtr pMo
1ad50 64 75 6c 65 2c 20 69 6e 74 20 69 56 65 72 73 69  dule, int iVersi
1ad60 6f 6e 2c 20 78 43 72 65 61 74 65 20 78 43 72 65  on, xCreate xCre
1ad70 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 43  ate,..        xC
1ad80 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c  onnect xConnect,
1ad90 20 78 42 65 73 74 49 6e 64 65 78 20 78 42 65 73   xBestIndex xBes
1ada0 74 49 6e 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e  tIndex, xDisconn
1adb0 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c  ect xDisconnect,
1adc0 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72  ..        xDestr
1add0 6f 79 20 78 44 65 73 74 72 6f 79 2c 20 78 4f 70  oy xDestroy, xOp
1ade0 65 6e 20 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65  en xOpen, xClose
1adf0 20 78 43 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72   xClose, xFilter
1ae00 20 78 46 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20   xFilter,..     
1ae10 20 20 20 78 4e 65 78 74 20 78 4e 65 78 74 2c 20     xNext xNext, 
1ae20 78 45 6f 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75  xEof xEof, xColu
1ae30 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77  mn xColumn, xRow
1ae40 49 64 20 78 52 6f 77 49 64 2c 20 78 55 70 64 61  Id xRowId, xUpda
1ae50 74 65 20 78 55 70 64 61 74 65 2c 0d 0a 20 20 20  te xUpdate,..   
1ae60 20 20 20 20 20 78 42 65 67 69 6e 20 78 42 65 67       xBegin xBeg
1ae70 69 6e 2c 20 78 53 79 6e 63 20 78 53 79 6e 63 2c  in, xSync xSync,
1ae80 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74   xCommit xCommit
1ae90 2c 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c  , xRollback xRol
1aea0 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
1aeb0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46  xFindFunction xF
1aec0 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65  indFunction, xRe
1aed0 6e 61 6d 65 20 78 52 65 6e 61 6d 65 2c 20 78 53  name xRename, xS
1aee0 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f  avepoint xSavepo
1aef0 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 52  int,..        xR
1af00 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65 2c  elease xRelease,
1af10 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f   xRollbackTo xRo
1af20 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72  llbackTo, IntPtr
1af30 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20   pClientData,.. 
1af40 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d         xDestroyM
1af50 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f  odule xDestroyMo
1af60 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  dule);..#endif..
1af70 20 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f      // PLATFORM_
1af80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1af90 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e   && !SQLITE_STAN
1afa0 44 41 52 44 0d 0a 20 20 20 20 23 65 6e 64 72 65  DARD..    #endre
1afb0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
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 2f 2f 2f  ////////////////
1afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b000 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
1b010 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 44 65  region Native De
1b020 6c 65 67 61 74 65 73 0d 0a 23 69 66 20 49 4e 54  legates..#if INT
1b030 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42  EROP_VIRTUAL_TAB
1b040 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  LE..#if !PLATFOR
1b050 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b060 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1b070 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1b080 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1b090 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1b0a0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1b0b0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1b0c0 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61 74 65  rrorCode xCreate
1b0d0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
1b0e0 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
1b0f0 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20  IntPtr pAux,..  
1b100 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
1b110 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1b120 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
1b130 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c  ef IntPtr pVtab,
1b140 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
1b150 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20  tPtr pError..   
1b160 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
1b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1b1c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b1d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1b1e0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1b1f0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1b200 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b210 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1b220 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
1b230 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1b240 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
1b250 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20    IntPtr pDb,.. 
1b260 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
1b270 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ux,..        int
1b280 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
1b290 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
1b2a0 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
1b2b0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
1b2c0 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
1b2d0 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
1b2e0 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b330 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b340 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b350 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1b360 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1b370 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b380 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1b390 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1b3a0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1b3b0 72 43 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78  rCode xBestIndex
1b3c0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
1b3d0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
1b3e0 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d    IntPtr pIndex.
1b3f0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
1b400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1b450 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1b460 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1b470 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1b480 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1b490 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1b4a0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1b4b0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1b4c0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1b4d0 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d  de xDisconnect(.
1b4e0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1b4f0 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
1b500 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1b510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b550 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b560 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b570 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1b580 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1b590 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1b5a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1b5b0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1b5c0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1b5d0 72 72 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f  rrorCode xDestro
1b5e0 79 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  y(..        IntP
1b5f0 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
1b600 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1b610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b650 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
1b660 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b670 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
1b680 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
1b690 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
1b6a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1b6b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
1b6c0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
1b6d0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65  teErrorCode xOpe
1b6e0 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
1b6f0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1b700 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43     ref IntPtr pC
1b710 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  ursor..    );...
1b720 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b770 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1b780 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1b790 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1b7a0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1b7b0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1b7c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1b7d0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1b7e0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1b7f0 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28  rrorCode xClose(
1b800 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1b810 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b   pCursor..    );
1b820 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
1b870 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
1b880 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1b890 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
1b8a0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
1b8b0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
1b8c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1b8d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
1b8e0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
1b8f0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46 69 6c  teErrorCode xFil
1b900 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ter(..        In
1b910 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
1b920 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 4e 75         int idxNu
1b930 6d 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  m,..        IntP
1b940 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20  tr idxStr,..    
1b950 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
1b960 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
1b970 67 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  gv..    );....  
1b980 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
1b9d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b9e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b9f0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1ba00 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1ba10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ba20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1ba30 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1ba40 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
1ba50 72 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20  rCode xNext(..  
1ba60 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
1ba70 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rsor..    );....
1ba80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ba90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1baa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1bad0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1bae0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1baf0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
1bb00 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
1bb10 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
1bb20 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
1bb30 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
1bb40 65 6c 65 67 61 74 65 20 69 6e 74 20 78 45 6f 66  elegate int xEof
1bb50 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
1bb60 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
1bb70 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
1bb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbc0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
1bbd0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1bbe0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
1bbf0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
1bc00 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
1bc10 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1bc20 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
1bc30 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
1bc40 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
1bc50 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  lumn(..        I
1bc60 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
1bc70 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1bc80 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20  Context,..      
1bc90 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20    int index..   
1bca0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
1bcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcf0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1bd00 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1bd10 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1bd20 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1bd30 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1bd40 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1bd50 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1bd60 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
1bd70 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1bd80 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20  RowId(..        
1bd90 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
1bda0 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e  .        ref lon
1bdb0 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d  g rowId..    );.
1bdc0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1bdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be10 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
1be20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1be30 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
1be40 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
1be50 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
1be60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1be70 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
1be80 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
1be90 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61  eErrorCode xUpda
1bea0 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  te(..        Int
1beb0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
1bec0 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
1bed0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
1bee0 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  gv,..        ref
1bef0 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20   long rowId..   
1bf00 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
1bf60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1bf70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
1bf80 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
1bf90 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
1bfa0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1bfb0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1bfc0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
1bfd0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1bfe0 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20  Begin(..        
1bff0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
1c000 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1c010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c050 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1c060 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c070 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c080 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1c090 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1c0a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c0b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c0c0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1c0d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1c0e0 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20  xSync(..        
1c0f0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
1c100 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
1c110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c150 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
1c160 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c170 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c180 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
1c190 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
1c1a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c1b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c1c0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
1c1d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1c1e0 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20  xCommit(..      
1c1f0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
1c200 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
1c210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c250 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1c260 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c270 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c280 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
1c290 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
1c2a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1c2b0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
1c2c0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
1c2d0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
1c2e0 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  e xRollback(..  
1c2f0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1c300 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
1c310 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1c320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1c360 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1c370 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c380 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
1c390 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
1c3a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c3b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
1c3c0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
1c3d0 65 67 61 74 65 20 69 6e 74 20 78 46 69 6e 64 46  egate int xFindF
1c3e0 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
1c3f0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
1c400 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72  .        int nAr
1c410 67 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  g,..        IntP
1c420 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  tr zName,..     
1c430 20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c     ref SQLiteCal
1c440 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d  lback callback,.
1c450 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
1c460 50 74 72 20 70 55 73 65 72 44 61 74 61 0d 0a 20  Ptr pUserData.. 
1c470 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
1c480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
1c4d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1c4e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1c4f0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
1c500 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
1c510 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1c520 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
1c530 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
1c540 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1c550 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20   xRename(..     
1c560 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1c570 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1c580 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d   zNew..    );...
1c590 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c5f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c600 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
1c610 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
1c620 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
1c630 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
1c640 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1c650 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
1c660 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f  rrorCode xSavepo
1c670 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  int(..        In
1c680 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
1c690 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
1c6a0 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  int..    );.... 
1c6b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1c6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c700 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1c710 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c720 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
1c730 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
1c740 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c750 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
1c760 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
1c770 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
1c780 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28  orCode xRelease(
1c790 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1c7a0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
1c7b0 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
1c7c0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f  ////////////////
1c810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1c820 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c830 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c840 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
1c850 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
1c860 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c870 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
1c880 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
1c890 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
1c8a0 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d  de xRollbackTo(.
1c8b0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
1c8c0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
1c8d0 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a  int iSavepoint..
1c8e0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
1c8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c930 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1c940 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c950 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c960 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
1c970 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
1c980 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1c990 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
1c9a0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
1c9b0 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d  e void xDestroyM
1c9c0 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70 43 6c  odule(IntPtr pCl
1c9d0 69 65 6e 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64  ientData);..#end
1c9e0 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  if..    #endregi
1c9f0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
1ca00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca40 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
1ca50 67 69 6f 6e 20 4e 61 74 69 76 65 20 53 74 72 75  gion Native Stru
1ca60 63 74 75 72 65 73 0d 0a 23 69 66 20 49 4e 54 45  ctures..#if INTE
1ca70 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c  ROP_VIRTUAL_TABL
1ca80 45 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  E..    [StructLa
1ca90 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
1caa0 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
1cab0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
1cac0 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  t sqlite3_module
1cad0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1cae0 20 70 75 62 6c 69 63 20 69 6e 74 20 69 56 65 72   public int iVer
1caf0 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  sion;..        p
1cb00 75 62 6c 69 63 20 78 43 72 65 61 74 65 20 78 43  ublic xCreate xC
1cb10 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  reate;..        
1cb20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63 74 20  public xConnect 
1cb30 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20  xConnect;..     
1cb40 20 20 20 70 75 62 6c 69 63 20 78 42 65 73 74 49     public xBestI
1cb50 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 3b  ndex xBestIndex;
1cb60 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1cb70 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69   xDisconnect xDi
1cb80 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20  sconnect;..     
1cb90 20 20 20 70 75 62 6c 69 63 20 78 44 65 73 74 72     public xDestr
1cba0 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20  oy xDestroy;..  
1cbb0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 4f 70        public xOp
1cbc0 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20  en xOpen;..     
1cbd0 20 20 20 70 75 62 6c 69 63 20 78 43 6c 6f 73 65     public xClose
1cbe0 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20   xClose;..      
1cbf0 20 20 70 75 62 6c 69 63 20 78 46 69 6c 74 65 72    public xFilter
1cc00 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20   xFilter;..     
1cc10 20 20 20 70 75 62 6c 69 63 20 78 4e 65 78 74 20     public xNext 
1cc20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20  xNext;..        
1cc30 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45 6f 66  public xEof xEof
1cc40 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1cc50 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d  c xColumn xColum
1cc60 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
1cc70 69 63 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64  ic xRowId xRowId
1cc80 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1cc90 63 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74  c xUpdate xUpdat
1cca0 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
1ccb0 69 63 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e  ic xBegin xBegin
1ccc0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1ccd0 63 20 78 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a  c xSync xSync;..
1cce0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
1ccf0 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d  Commit xCommit;.
1cd00 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1cd10 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62  xRollback xRollb
1cd20 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ack;..        pu
1cd30 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63 74 69  blic xFindFuncti
1cd40 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  on xFindFunction
1cd50 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1cd60 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d  c xRename xRenam
1cd70 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 54  e;..        /* T
1cd80 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65  he methods above
1cd90 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20   are in version 
1cda0 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33  1 of the sqlite3
1cdb0 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20  _module..       
1cdc0 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f    * object.  Tho
1cdd0 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72  se below are for
1cde0 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 67   version 2 and g
1cdf0 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20  reater. */..    
1ce00 20 20 20 20 70 75 62 6c 69 63 20 78 53 61 76 65      public xSave
1ce10 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74  point xSavepoint
1ce20 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
1ce30 63 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65  c xRelease xRele
1ce40 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ase;..        pu
1ce50 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  blic xRollbackTo
1ce60 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20   xRollbackTo;.. 
1ce70 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
1ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ceb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cec0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
1ced0 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
1cee0 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
1cef0 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
1cf00 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
1cf10 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20  3_vtab..    {.. 
1cf20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
1cf30 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20  tPtr pModule;.. 
1cf40 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1cf50 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f  t nRef; /* NO LO
1cf60 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20 20  NGER USED */..  
1cf70 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
1cf80 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20  Ptr zErrMsg;..  
1cf90 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
1cfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfe0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
1cff0 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
1d000 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
1d010 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1d020 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
1d030 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20  _vtab_cursor..  
1d040 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
1d050 6c 69 63 20 49 6e 74 50 74 72 20 70 56 54 61 62  lic IntPtr pVTab
1d060 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1d070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1d0c0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
1d0d0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
1d0e0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
1d0f0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
1d100 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
1d110 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20  traint..    {.. 
1d120 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71         public sq
1d130 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
1d140 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  traint(..       
1d150 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
1d160 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74  Constraint const
1d170 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  raint..         
1d180 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
1d190 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
1d1a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d1b0 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e     if (constrain
1d1c0 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t != null)..    
1d1d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d1e0 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75             iColu
1d1f0 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  mn = constraint.
1d200 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20  iColumn;..      
1d210 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d 20 63            op = c
1d220 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20  onstraint.op;.. 
1d230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75                 u
1d240 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69  sable = constrai
1d250 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20  nt.usable;..    
1d260 20 20 20 20 20 20 20 20 20 20 20 20 69 54 65 72              iTer
1d270 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73 74 72  mOffset = constr
1d280 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74  aint.iTermOffset
1d290 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1d2a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1d2b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1d2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d300 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1d310 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20   int iColumn;.. 
1d320 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
1d330 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
1d340 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20  intOp op;..     
1d350 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 75     public byte u
1d360 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  sable;..        
1d370 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d  public int iTerm
1d380 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a  Offset;..    }..
1d390 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1d3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3e0 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
1d3f0 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
1d400 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
1d410 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
1d420 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
1d430 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20 20 7b  x_orderby..    {
1d440 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1d450 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f   sqlite3_index_o
1d460 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20  rderby(..       
1d470 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
1d480 4f 72 64 65 72 42 79 20 6f 72 64 65 72 42 79 0d  OrderBy orderBy.
1d490 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
1d4a0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
1d4b0 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
1d4c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1d4d0 28 6f 72 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c  (orderBy != null
1d4e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1d4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d500 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65    iColumn = orde
1d510 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  rBy.iColumn;..  
1d520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
1d530 73 63 20 3d 20 6f 72 64 65 72 42 79 2e 64 65 73  sc = orderBy.des
1d540 63 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c;..            
1d550 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
1d560 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1d570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1d5b0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
1d5c0 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f  c int iColumn; /
1d5d0 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20  * Column number 
1d5e0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
1d5f0 69 63 20 62 79 74 65 20 64 65 73 63 3b 20 20 20  ic byte desc;   
1d600 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45 53 43  /* True for DESC
1d610 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43  .  False for ASC
1d620 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  . */..    }.... 
1d630 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1d640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d680 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
1d690 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
1d6a0 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
1d6b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
1d6c0 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
1d6d0 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d  onstraint_usage.
1d6e0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1d6f0 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69  public sqlite3_i
1d700 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
1d710 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20  usage(..        
1d720 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43      SQLiteIndexC
1d730 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 63  onstraintUsage c
1d740 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a  onstraintUsage..
1d750 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1d760 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
1d770 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
1d780 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1d790 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  constraintUsage 
1d7a0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1d7b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d7c0 20 20 20 20 20 20 20 20 20 61 72 67 76 49 6e 64           argvInd
1d7d0 65 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55  ex = constraintU
1d7e0 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d  sage.argvIndex;.
1d7f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d800 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61 69   omit = constrai
1d810 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20  ntUsage.omit;.. 
1d820 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1d830 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1d840 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1d890 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
1d8a0 20 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69   argvIndex; /* i
1d8b0 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74  f >0, constraint
1d8c0 20 69 73 20 70 61 72 74 20 6f 66 20 61 72 67 76   is part of argv
1d8d0 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a   to xFilter */..
1d8e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
1d8f0 79 74 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a  yte omit;     /*
1d900 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74   Do not code a t
1d910 65 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e  est for this con
1d920 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20  straint */..    
1d930 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
1d940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d980 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
1d990 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
1d9a0 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
1d9b0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1d9c0 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
1d9d0 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b  ndex_info..    {
1d9e0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70  ..        /* Inp
1d9f0 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  uts */..        
1da00 70 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73  public int nCons
1da10 74 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65  traint; /* Numbe
1da20 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20  r of entries in 
1da30 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a  aConstraint */..
1da40 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
1da50 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e  ntPtr aConstrain
1da60 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
1da70 69 63 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b  ic int nOrderBy;
1da80 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66      /* Number of
1da90 20 65 6e 74 72 69 65 73 20 69 6e 20 61 4f 72 64   entries in aOrd
1daa0 65 72 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20  erBy */..       
1dab0 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61   public IntPtr a
1dac0 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20 20  OrderBy;..      
1dad0 20 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d    /* Outputs */.
1dae0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1daf0 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69  IntPtr aConstrai
1db00 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20  ntUsage;..      
1db10 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 64 78    public int idx
1db20 4e 75 6d 3b 20 20 20 20 20 20 20 20 20 20 20 2f  Num;           /
1db30 2a 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f  * Number used to
1db40 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e   identify the in
1db50 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  dex */..        
1db60 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 69 64  public string id
1db70 78 53 74 72 3b 20 20 20 20 20 20 20 20 2f 2a 20  xStr;        /* 
1db80 53 74 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79  String, possibly
1db90 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73   obtained from s
1dba0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f  qlite3_malloc */
1dbb0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1dbc0 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49   int needToFreeI
1dbd0 64 78 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69  dxStr; /* Free i
1dbe0 64 78 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69  dxStr using sqli
1dbf0 74 65 33 5f 66 72 65 65 28 29 20 69 66 20 74 72  te3_free() if tr
1dc00 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ue */..        p
1dc10 75 62 6c 69 63 20 69 6e 74 20 6f 72 64 65 72 42  ublic int orderB
1dc20 79 43 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54  yConsumed;  /* T
1dc30 72 75 65 20 69 66 20 6f 75 74 70 75 74 20 69 73  rue if output is
1dc40 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64   already ordered
1dc50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1dc60 6c 69 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d  lic double estim
1dc70 61 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74  atedCost; /* Est
1dc80 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75  imated cost of u
1dc90 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20  sing this index 
1dca0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
1dcb0 69 63 20 6c 6f 6e 67 20 65 73 74 69 6d 61 74 65  ic long estimate
1dcc0 64 52 6f 77 73 3b 20 20 20 2f 2a 20 45 73 74 69  dRows;   /* Esti
1dcd0 6d 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20  mated number of 
1dce0 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 2a 2f  rows returned */
1dcf0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1dd00 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67   SQLiteIndexFlag
1dd10 73 20 69 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d  s idxFlags; /* M
1dd20 61 73 6b 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e  ask of SQLITE_IN
1dd30 44 45 58 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73  DEX_SCAN_* flags
1dd40 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
1dd50 6c 69 63 20 6c 6f 6e 67 20 63 6f 6c 55 73 65 64  lic long colUsed
1dd60 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70  ;         /* Inp
1dd70 75 74 3a 20 4d 61 73 6b 20 6f 66 20 63 6f 6c 75  ut: Mask of colu
1dd80 6d 6e 73 20 75 73 65 64 20 62 79 20 73 74 61 74  mns used by stat
1dd90 65 6d 65 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d  ement */..    }.
1dda0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e  .#endif..    #en
1ddb0 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20  dregion..  }..  
1ddc0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1ddd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1de20 0a 20 20 23 72 65 67 69 6f 6e 20 2e 4e 45 54 20  .  #region .NET 
1de30 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
1de40 6b 20 28 6f 6e 6c 79 29 20 43 72 69 74 69 63 61  k (only) Critica
1de50 6c 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 23  lHandle Class..#
1de60 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1de70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1de80 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
1de90 74 20 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c  t class Critical
1dea0 48 61 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73  Handle : IDispos
1deb0 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70  able..  {..    p
1dec0 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43  rivate bool _isC
1ded0 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74  losed;..    prot
1dee0 65 63 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e  ected IntPtr han
1def0 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  dle;....    prot
1df00 65 63 74 65 64 20 43 72 69 74 69 63 61 6c 48 61  ected CriticalHa
1df10 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61  ndle(IntPtr inva
1df20 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d  lidHandleValue).
1df30 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
1df40 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61  ndle = invalidHa
1df50 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20  ndleValue;..    
1df60 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61    _isClosed = fa
1df70 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  lse;..    }.... 
1df80 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64     ~CriticalHand
1df90 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  le()..    {..   
1dfa0 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
1dfb0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
1dfc0 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c   private void Cl
1dfd0 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a  eanup()..    {..
1dfe0 20 20 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f        if (!IsClo
1dff0 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  sed)..      {.. 
1e000 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43         this._isC
1e010 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
1e020 20 20 20 20 20 20 20 69 66 20 28 21 49 73 49 6e         if (!IsIn
1e030 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20  valid)..        
1e040 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c  {..          Rel
1e050 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20  easeHandle();.. 
1e060 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
1e070 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
1e080 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
1e090 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
1e0a0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
1e0b0 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b  d Close()..    {
1e0c0 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
1e0d0 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  true);..    }...
1e0e0 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
1e0f0 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
1e100 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65  {..      Dispose
1e110 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  (true);..    }..
1e120 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
1e130 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73  virtual void Dis
1e140 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
1e150 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ing)..    {..   
1e160 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20     Cleanup();.. 
1e170 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74     }....    prot
1e180 65 63 74 65 64 20 61 62 73 74 72 61 63 74 20 62  ected abstract b
1e190 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
1e1a0 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  e();....    prot
1e1b0 65 63 74 65 64 20 76 6f 69 64 20 53 65 74 48 61  ected void SetHa
1e1c0 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75  ndle(IntPtr valu
1e1d0 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
1e1e0 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b   handle = value;
1e1f0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
1e200 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61  ublic void SetHa
1e210 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d  ndleAsInvalid().
1e220 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69  .    {..      _i
1e230 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
1e240 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65  .      GC.Suppre
1e250 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
1e260 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1e270 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c  public bool IsCl
1e280 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  osed..    {..   
1e290 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
1e2a0 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20  _isClosed; }..  
1e2b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
1e2c0 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  c abstract bool 
1e2d0 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b  IsInvalid..    {
1e2e0 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20  ..      get;..  
1e2f0 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 23 65 6e 64    }....  }..#end
1e300 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e  if..  #endregion
1e310 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1e320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e360 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
1e370 6f 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  on SQLiteConnect
1e380 69 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  ionHandle Class.
1e390 0a 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20  .    // Handles 
1e3a0 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61  the unmanaged da
1e3b0 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20  tabase pointer, 
1e3c0 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e  and provides fin
1e3d0 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f  alization..    /
1e3e0 2f 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74  / support for it
1e3f0 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
1e400 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
1e410 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
1e420 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
1e430 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
1e440 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
1e450 20 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f   && !PLATFORM_CO
1e460 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e470 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
1e480 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 43   delegate void C
1e490 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61  loseConnectionCa
1e4a0 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
1e4b0 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
1e4c0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c  ctionHandle hdl,
1e4d0 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
1e4e0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
1e4f0 20 73 74 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e   static CloseCon
1e500 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20  nectionCallback 
1e510 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20  closeConnection 
1e520 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  =..            S
1e530 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43  QLiteBase.CloseC
1e540 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64  onnection;..#end
1e550 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
1e560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
1e5b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e5c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1e5d0 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c  internal readonl
1e5e0 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  y object syncRoo
1e5f0 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
1e600 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
1e610 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1e620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1e660 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1e670 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d  bool ownHandle;.
1e680 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1e690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
1e6e0 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
1e6f0 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
1e700 74 50 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65  tPtr(SQLiteConne
1e710 63 74 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d  ctionHandle db).
1e720 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1e730 20 20 20 20 20 20 20 20 69 66 20 28 64 62 20 21          if (db !
1e740 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1e750 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1e760 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e770 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1e780 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e         lock (db.
1e790 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1e7a0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1e7b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1e7c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1e7d0 20 64 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20   db.handle;..   
1e7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1e7f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1e800 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1e810 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
1e820 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1e830 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1e880 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
1e890 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
1e8a0 6e 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64  nHandle(IntPtr d
1e8b0 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c  b, bool ownHandl
1e8c0 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
1e8d0 3a 20 74 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65  : this(ownHandle
1e8e0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1e8f0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1e900 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e910 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1e920 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1e930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1e940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e950 20 74 68 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20   this.ownHandle 
1e960 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20  = ownHandle;..  
1e970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
1e980 74 48 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20  tHandle(db);..  
1e990 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1e9a0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1e9b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1e9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ea00 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
1ea10 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
1ea20 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64  dle(bool ownHand
1ea30 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le)..           
1ea40 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
1ea50 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
1ea60 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
1ea70 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  E..            i
1ea80 66 20 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  f (ownHandle).. 
1ea90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
1eaa0 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
1eab0 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
1eac0 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ta.connectionCou
1ead0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
1eae0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1eaf0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1eb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1eb40 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
1eb50 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
1eb60 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
1eb70 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
1eb80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1eb90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1eba0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1ebb0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1ebc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ebd0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1ebe0 28 21 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74  (!ownHandle) ret
1ebf0 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
1ec00 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1ec10 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
1ec20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1ec30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ec40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ec50 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1ec60 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d  tr localHandle =
1ec70 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63   Interlocked.Exc
1ec80 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20  hange(..        
1ec90 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1eca0 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a  handle, IntPtr.Z
1ecb0 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c  ero);....#if SQL
1ecc0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
1ecd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1ece0 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
1ecf0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1ed00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed10 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69     closeConnecti
1ed20 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61  on(this, localHa
1ed30 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ndle);..#else.. 
1ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1ed50 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
1ed60 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1ed70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed80 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
1ed90 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
1eda0 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  his, localHandle
1edb0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
1edc0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1edd0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1ede0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1edf0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1ee00 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ee10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1ee20 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
1ee30 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
1ee40 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
1ee50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee60 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
1ee70 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
1ee80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ee90 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43           "CloseC
1eea0 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c  onnection: {0}",
1eeb0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
1eec0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
1eed0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1eee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eef0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1ef00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1ef10 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1ef20 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
1ef30 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1ef40 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
1ef50 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1ef60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef70 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
1ef80 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1ef90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1efa0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1efb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1efc0 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43  QLiteBase.CloseC
1efd0 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
1efe0 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
1eff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f000 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
1f010 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
1f020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1f030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f040 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
1f050 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1f060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
1f070 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
1f080 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
1f090 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ta.connectionCou
1f0a0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
1f0b0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1f0c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1f0d0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
1f0e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1f0f0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1f100 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1f110 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
1f120 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
1f130 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
1f140 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1f150 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1f160 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
1f170 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1f180 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1f190 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1f1a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f1b0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1f1c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1f1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1f1e0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
1f1f0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
1f200 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
1f210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f220 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
1f230 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
1f240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f250 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f          "CloseCo
1f260 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65  nnection: {0}, e
1f270 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
1f280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f290 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
1f2a0 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
1f2b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1f2c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1f2d0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
1f2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1f2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f300 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
1f310 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1f320 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
1f330 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1f340 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1f350 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f360 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1f370 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1f380 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1f390 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1f3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
1f3b0 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
1f3c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1f3d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1f3e0 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
1f3f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1f400 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
1f410 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
1f420 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
1f430 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1f440 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1f450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f490 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
1f4a0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
1f4b0 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
1f4c0 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
1f4d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f4e0 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
1f4f0 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
1f500 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e  ef DebugData.con
1f510 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
1f520 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1f530 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
1f540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f580 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1f590 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48  public bool OwnH
1f5a0 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b  andle..        {
1f5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
1f5c0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
1f5d0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1f5e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f5f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f600 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1f610 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1f620 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f640 20 72 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c   return ownHandl
1f650 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1f660 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1f670 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
1f680 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1f690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f6d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
1f6e0 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
1f6f0 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
1f700 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1f710 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
1f720 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1f730 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1f740 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1f750 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1f760 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1f770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f780 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1f790 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
1f7a0 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
1f7b0 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
1f7c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1f7d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1f7e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1f7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f830 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
1f840 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
1f850 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
1f860 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
1f870 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1f880 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f890 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1f8a0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1f8b0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1f8c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1f8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1f8e0 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
1f8f0 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
1f900 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1f910 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1f920 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
1f930 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
1f940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f980 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
1f990 69 6f 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d  ion SQLiteStatem
1f9a0 65 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  entHandle Class.
1f9b0 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73  .    // Provides
1f9c0 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75   finalization su
1f9d0 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61  pport for unmana
1f9e0 67 65 64 20 53 51 4c 69 74 65 20 73 74 61 74 65  ged SQLite state
1f9f0 6d 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65  ments...    inte
1fa00 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
1fa10 73 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  s SQLiteStatemen
1fa20 74 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  tHandle : Critic
1fa30 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
1fa40 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1fa50 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fa60 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
1fa70 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
1fa80 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
1fa90 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
1faa0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
1fab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1faf0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1fb00 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
1fb10 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
1fb20 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
1fb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb70 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1fb80 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1fb90 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
1fba0 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53  r IntPtr(SQLiteS
1fbb0 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73  tatementHandle s
1fbc0 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  tmt)..        {.
1fbd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1fbe0 28 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a  (stmt != null)..
1fbf0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1fc00 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
1fc10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1fc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1fc30 63 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f  ck (stmt.syncRoo
1fc40 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1fc50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1fc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc70 20 20 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68     return stmt.h
1fc80 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
1fc90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1fca0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1fcb0 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
1fcc0 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
1fcd0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd20 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1fd30 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
1fd40 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
1fd50 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
1fd60 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e  onHandle cnn, In
1fd70 74 50 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20  tPtr stmt)..    
1fd80 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
1fd90 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1fda0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1fdb0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1fdc0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1fdd0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1fde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1fdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe00 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d  this.cnn = cnn;.
1fe10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fe20 20 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29   SetHandle(stmt)
1fe30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1fe40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1fe50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1fe60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1fea0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
1feb0 65 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  e SQLiteStatemen
1fec0 74 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  tHandle()..     
1fed0 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
1fee0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1fef0 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
1ff00 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1ff10 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
1ff20 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Increment(ref D
1ff30 65 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65  ebugData.stateme
1ff40 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  ntCount);..#endi
1ff50 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1ff60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1ff70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ffb0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
1ffc0 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
1ffd0 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
1ffe0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1fff0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
20000 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
20010 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20020 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
20040 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
20050 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
20060 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
20070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
20080 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
20090 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
200a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
200b0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
200c0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
200d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200e0 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61   SQLiteBase.Fina
200f0 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e  lizeStatement(cn
20100 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  n, localHandle);
20110 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
20120 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
20130 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
20140 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
20150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
20160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20170 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
20180 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
20190 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
201a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
201b0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
201c0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
201d0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
201e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
201f0 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
20200 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61  t: {0}", localHa
20210 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ndle)); /* throw
20220 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
20230 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
20240 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
20250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
20260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20270 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c    }..#endif..#el
20280 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
20290 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
202a0 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
202b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
202c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
202d0 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  handle != IntPtr
202e0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
202f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
20300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20310 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
20320 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d  e.FinalizeStatem
20330 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29  ent(cnn, handle)
20340 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20350 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
20360 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
20370 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
20380 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
20390 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
203a0 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
203b0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
203c0 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
203d0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
203e0 66 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74  f DebugData.stat
203f0 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65  ementCount);..#e
20400 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d  ndif..#if DEBUG.
20410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20420 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
20430 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
20440 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
20450 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
20460 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
20470 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
20480 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29  LiteException e)
20490 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
204a0 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
204b0 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65  teException)..#e
204c0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
204d0 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
204e0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
204f0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
20500 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
20510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
20520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20530 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
20540 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
20550 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
20560 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
20570 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
20580 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
20590 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
205a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205b0 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  "FinalizeStateme
205c0 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  nt: {0}, excepti
205d0 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
205e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205f0 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
20600 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
20610 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
20620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20630 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
20640 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20650 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
20660 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
20670 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
20680 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
20690 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
206a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
206b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
206c0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
206d0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
206e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20700 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
20710 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
20720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
20730 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
20740 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
20750 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
20760 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
20770 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
20780 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
20790 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
207a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
207b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
207f0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
20800 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
20810 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
20820 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
20830 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20840 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
20850 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
20860 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74  ugData.statement
20870 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  Count);..       
20880 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
20890 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
208a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
208e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
208f0 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
20900 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20  Invalid..       
20910 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20920 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
20930 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
20940 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20950 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
20960 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
20970 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
20980 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
20990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209a0 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c     return (handl
209b0 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
209c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
209d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
209e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
209f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
20a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a40 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d  //....#if DEBUG.
20a50 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
20a60 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20  override string 
20a70 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20  ToString()..    
20a80 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
20a90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20aa0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
20ab0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
20ac0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
20ad0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20ae0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
20af0 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67   handle.ToString
20b00 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
20b10 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23   }..        }..#
20b20 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20  endif..    }..  
20b30 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
20b40 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
20b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20b90 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
20ba0 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
20bb0 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20  e Class..    // 
20bc0 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a  Provides finaliz
20bd0 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f  ation support fo
20be0 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69  r unmanaged SQLi
20bf0 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74  te backup object
20c00 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s...    internal
20c10 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
20c20 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
20c30 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
20c40 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
20c50 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20c60 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
20c70 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
20c80 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
20c90 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
20ca0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
20cb0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
20cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20d00 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
20d10 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
20d20 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
20d30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
20d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20d80 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
20d90 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
20da0 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
20db0 72 28 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  r(SQLiteBackupHa
20dc0 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20 20  ndle backup)..  
20dd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
20de0 20 20 20 20 20 69 66 20 28 62 61 63 6b 75 70 20       if (backup 
20df0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
20e00 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
20e10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20e20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
20e30 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 61          lock (ba
20e40 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a  ckup.syncRoot)..
20e50 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
20e60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
20e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
20e80 65 74 75 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e  eturn backup.han
20e90 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
20ea0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
20eb0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
20ec0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
20ed0 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
20ee0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
20ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
20f40 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
20f50 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c  BackupHandle(SQL
20f60 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
20f70 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20  dle cnn, IntPtr 
20f80 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20  backup)..       
20f90 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
20fa0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
20fb0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20fc0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
20fd0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
20fe0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
20ff0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
21000 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
21010 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
21020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
21030 74 48 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b  tHandle(backup);
21040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
21050 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
21060 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
21070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
210b0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
210c0 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
210d0 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  dle()..         
210e0 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72     : base(IntPtr
210f0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
21100 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  {..#if COUNT_HAN
21110 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
21120 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63   Interlocked.Inc
21130 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
21140 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74  Data.backupCount
21150 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
21160 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
21170 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
211c0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
211d0 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
211e0 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
211f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
21200 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
21210 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
21220 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21230 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
21240 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
21250 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
21260 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
21270 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
21280 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
21290 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
212a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
212b0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
212c0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
212d0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
212e0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
212f0 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75  Base.FinishBacku
21300 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64  p(cnn, localHand
21310 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  le);....#if !NET
21320 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
21330 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
21340 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
21350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21360 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21370 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
21380 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
21390 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
213a0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
213b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
213c0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
213d0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
213e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213f0 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70     "FinishBackup
21400 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
21410 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
21420 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
21430 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
21440 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
21450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
21460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21470 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
21480 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
21490 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
214a0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
214b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
214c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
214d0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
214e0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
214f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
21500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21510 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
21520 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e  .FinishBackup(cn
21530 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  n, handle);..   
21540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21550 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
21560 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
21570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21580 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
21590 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
215a0 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
215b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
215c0 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
215d0 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
215e0 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e  gData.backupCoun
215f0 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
21600 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
21610 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
21620 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
21630 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
21640 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
21650 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
21660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
21670 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
21680 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
21690 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
216a0 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
216b0 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
216c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
216d0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
216e0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
216f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21700 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
21710 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
21720 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
21730 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
21740 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
21750 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
21760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21770 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
21780 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
21790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217a0 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61         "FinishBa
217b0 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70  ckup: {0}, excep
217c0 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  tion: {1}",..   
217d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217e0 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29       handle, e))
217f0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
21800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
21810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21820 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
21830 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
21840 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
21850 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
21860 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
21870 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
21880 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
21890 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
218a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
218b0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
218c0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
218d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
218e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
218f0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
21900 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
21910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21920 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
21930 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
21940 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21950 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
21960 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
21970 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
21980 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
21990 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
219a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
219e0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
219f0 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
21a00 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
21a10 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
21a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
21a30 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
21a40 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
21a50 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43  ebugData.backupC
21a60 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
21a70 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
21a80 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
21a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21ad0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
21ae0 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
21af0 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
21b00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
21b10 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
21b20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
21b30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21b50 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
21b60 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
21b70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
21b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b90 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
21ba0 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
21bb0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
21bc0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
21bd0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
21be0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
21bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c30 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
21c40 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
21c50 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
21c60 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
21c70 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
21c80 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21c90 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
21ca0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
21cb0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
21cc0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
21cd0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21ce0 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
21cf0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
21d00 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
21d10 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
21d20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
21d30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
21d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
21d80 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
21d90 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 43  LiteBlobHandle C
21da0 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f  lass..    // Pro
21db0 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
21dc0 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75  on support for u
21dd0 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20  nmanaged SQLite 
21de0 62 6c 6f 62 20 6f 62 6a 65 63 74 73 2e 0d 0a 20  blob objects... 
21df0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
21e00 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42  ed class SQLiteB
21e10 6c 6f 62 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  lobHandle : Crit
21e20 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20  icalHandle..    
21e30 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
21e40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21e50 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
21e60 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
21e70 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
21e80 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
21e90 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
21ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ee0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
21ef0 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
21f00 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
21f10 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   cnn;....       
21f20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
21f70 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
21f80 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
21f90 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
21fa0 65 42 6c 6f 62 48 61 6e 64 6c 65 20 62 6c 6f 62  eBlobHandle blob
21fb0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
21fc0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 6c            if (bl
21fd0 6f 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ob != null)..   
21fe0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
21ff0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22000 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
22010 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
22020 28 62 6c 6f 62 2e 73 79 6e 63 52 6f 6f 74 29 0d  (blob.syncRoot).
22030 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
22040 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
22050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22060 72 65 74 75 72 6e 20 62 6c 6f 62 2e 68 61 6e 64  return blob.hand
22070 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
22080 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
22090 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
220a0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
220b0 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
220c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
220d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
220f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22110 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
22120 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42  internal SQLiteB
22130 6c 6f 62 48 61 6e 64 6c 65 28 53 51 4c 69 74 65  lobHandle(SQLite
22140 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
22150 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62 6c 6f   cnn, IntPtr blo
22160 62 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b)..            
22170 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
22180 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
22190 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
221a0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
221b0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
221c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
221d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
221e0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e          this.cnn
221f0 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20   = cnn;..       
22200 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
22210 6c 65 28 62 6c 6f 62 29 3b 0d 0a 20 20 20 20 20  le(blob);..     
22220 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
22230 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
22240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22280 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
22290 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
222a0 42 6c 6f 62 48 61 6e 64 6c 65 28 29 0d 0a 20 20  BlobHandle()..  
222b0 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
222c0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
222d0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
222e0 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
222f0 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
22300 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
22310 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62  f DebugData.blob
22320 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
22330 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
22340 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
22350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
22390 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
223a0 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
223b0 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
223c0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
223d0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
223e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
223f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22400 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22410 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
22420 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
22430 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
22440 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
22450 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
22460 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
22470 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
22480 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
22490 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
224a0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
224b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
224c0 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 42  QLiteBase.CloseB
224d0 6c 6f 62 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61  lob(cnn, localHa
224e0 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ndle);....#if !N
224f0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
22500 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
22510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
22520 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
22530 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
22540 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
22550 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
22560 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
22570 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
22580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22590 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
225a0 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
225b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225c0 20 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62 3a       "CloseBlob:
225d0 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
225e0 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  le)); /* throw *
225f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
22600 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
22610 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
22620 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
22630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22640 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
22650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22660 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
22670 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22680 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
22690 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
226a0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
226b0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
226c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
226d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
226e0 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
226f0 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 68  CloseBlob(cnn, h
22700 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
22710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22720 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
22730 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
22740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
22750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22760 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20   }..#endif..#if 
22770 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
22780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
22790 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
227a0 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
227b0 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23  a.blobCount);..#
227c0 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
227d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
227e0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
227f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
22800 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
22810 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
22820 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
22830 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
22840 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
22850 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
22860 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
22870 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
22880 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
22890 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
228a0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
228b0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
228c0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
228d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
228f0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
22900 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
22910 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
22920 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
22930 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
22940 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
22950 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
22960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22970 20 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d   "CloseBlob: {0}
22980 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
22990 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
229a0 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
229b0 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
229c0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
229d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
229e0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
229f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
22a10 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
22a20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
22a30 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
22a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
22a50 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
22a60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a80 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
22a90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
22aa0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
22ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ac0 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
22ad0 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
22ae0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
22af0 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
22b00 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
22b10 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
22b20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
22b30 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
22b40 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
22b50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
22b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ba0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
22bb0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
22bc0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
22bd0 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
22be0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22bf0 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
22c00 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
22c10 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
22c20 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  blobCount);..   
22c30 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
22c40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
22c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c90 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
22ca0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
22cb0 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
22cc0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
22cd0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
22ce0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
22cf0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22d00 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
22d10 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
22d20 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
22d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
22d50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
22d60 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
22d70 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
22d80 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
22d90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
22da0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
22db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22df0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
22e00 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
22e10 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
22e20 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
22e30 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
22e40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22e50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
22e60 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
22e70 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
22e80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
22ea0 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
22eb0 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
22ec0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
22ed0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
22ee0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
22ef0 0d 0a 7d 0d 0a                                   ..}..