System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 6797409930c3d318a49f5316cd6a46a9b67189da:


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 23 69 66 20 50  .#endif....#if P
0200: 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49  RELOAD_NATIVE_LI
0210: 42 52 41 52 59 0d 0a 20 20 75 73 69 6e 67 20 53  BRARY..  using S
0220: 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e  ystem.Collection
0230: 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73  s.Generic;..  us
0240: 69 6e 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a  ing System.IO;..
0250: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52    using System.R
0260: 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64  eflection;..#end
0270: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
0280: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
0290: 57 4f 52 4b 20 26 26 20 21 44 45 42 55 47 0d 0a  WORK && !DEBUG..
02a0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 53    using System.S
02b0: 65 63 75 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66  ecurity;..#endif
02c0: 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  ....  using Syst
02d0: 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72  em.Runtime.Inter
02e0: 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23  opServices;....#
02f0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
0300: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
0310: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 54 65   using System.Te
0320: 78 74 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  xt;..#endif....#
0330: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
0340: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 7c 7c  PACTFRAMEWORK ||
0350: 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
0360: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 54 68   using System.Th
0370: 72 65 61 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66  reading;..#endif
0380: 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  ....  using Syst
0390: 65 6d 2e 58 6d 6c 3b 0d 0a 0d 0a 23 69 66 20 21  em.Xml;....#if !
03a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
03b0: 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 44 45  FRAMEWORK && !DE
03c0: 42 55 47 0d 0a 20 20 5b 53 75 70 70 72 65 73 73  BUG..  [Suppress
03d0: 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63  UnmanagedCodeSec
03e0: 75 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a  urity]..#endif..
03f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
0400: 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61  c class UnsafeNa
0410: 74 69 76 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b  tiveMethods..  {
0420: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
0430: 43 72 69 74 69 63 61 6c 20 48 61 6e 64 6c 65 20  Critical Handle 
0440: 43 6f 75 6e 74 73 20 28 44 65 62 75 67 20 42 75  Counts (Debug Bu
0450: 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 43  ild Only)..#if C
0460: 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
0470: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20     //..      // 
0480: 4e 4f 54 45 3a 20 54 68 65 73 65 20 63 6f 75 6e  NOTE: These coun
0490: 74 73 20 72 65 70 72 65 73 65 6e 74 20 74 68 65  ts represent the
04a0: 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66   total number of
04b0: 20 6f 75 74 73 74 61 6e 64 69 6e 67 0d 0a 20 20   outstanding..  
04c0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 6e 6f      //       (no
04d0: 6e 2d 64 69 73 70 6f 73 65 64 29 20 43 72 69 74  n-disposed) Crit
04e0: 69 63 61 6c 48 61 6e 64 6c 65 20 64 65 72 69 76  icalHandle deriv
04f0: 65 64 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  ed object instan
0500: 63 65 73 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ces..      //   
0510: 20 20 20 20 63 72 65 61 74 65 64 20 62 79 20 74      created by t
0520: 68 69 73 20 6c 69 62 72 61 72 79 20 61 6e 64 20  his library and 
0530: 61 72 65 20 70 72 69 6d 61 72 69 6c 79 20 66 6f  are primarily fo
0540: 72 20 75 73 65 20 62 79 0d 0a 20 20 20 20 20 20  r use by..      
0550: 2f 2f 20 20 20 20 20 20 20 74 68 65 20 74 65 73  //       the tes
0560: 74 20 73 75 69 74 65 2e 20 20 54 68 65 73 65 20  t suite.  These 
0570: 63 6f 75 6e 74 73 20 61 72 65 20 69 6e 63 72 65  counts are incre
0580: 6d 65 6e 74 65 64 20 62 79 20 74 68 65 0d 0a 20  mented by the.. 
0590: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73       //       as
05a0: 73 6f 63 69 61 74 65 64 20 63 6f 6e 73 74 72 75  sociated constru
05b0: 63 74 6f 72 73 20 61 6e 64 20 61 72 65 20 64 65  ctors and are de
05c0: 63 72 65 6d 65 6e 74 65 64 20 75 70 6f 6e 20 74  cremented upon t
05d0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  he..      //    
05e0: 20 20 20 73 75 63 63 65 73 73 66 75 6c 20 63 6f     successful co
05f0: 6d 70 6c 65 74 69 6f 6e 20 6f 66 20 74 68 65 20  mpletion of the 
0600: 61 73 73 6f 63 69 61 74 65 64 20 52 65 6c 65 61  associated Relea
0610: 73 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20  seHandle..      
0620: 2f 2f 20 20 20 20 20 20 20 6d 65 74 68 6f 64 73  //       methods
0630: 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  ...      //..   
0640: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
0650: 69 63 20 69 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  ic int connectio
0660: 6e 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69  nCount;..      i
0670: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69  nternal static i
0680: 6e 74 20 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  nt statementCoun
0690: 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  t;..      intern
06a0: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 62 61  al static int ba
06b0: 63 6b 75 70 43 6f 75 6e 74 3b 0d 0a 23 65 6e 64  ckupCount;..#end
06c0: 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65  if..      #endre
06d0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
06e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0720: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
0730: 20 23 72 65 67 69 6f 6e 20 53 68 61 72 65 64 20   #region Shared 
0740: 4e 61 74 69 76 65 20 53 51 4c 69 74 65 20 4c 69  Native SQLite Li
0750: 62 72 61 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e  brary Pre-Loadin
0760: 67 20 43 6f 64 65 0d 0a 20 20 20 20 20 20 23 72  g Code..      #r
0770: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
0780: 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 2f  nstants..      /
0790: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
07a0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65      /// The file
07b0: 20 65 78 74 65 6e 73 69 6f 6e 20 75 73 65 64 20   extension used 
07c0: 66 6f 72 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  for dynamic link
07d0: 20 6c 69 62 72 61 72 69 65 73 2e 0d 0a 20 20 20   libraries...   
07e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
07f0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0800: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0810: 20 73 74 72 69 6e 67 20 44 6c 6c 46 69 6c 65 45   string DllFileE
0820: 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 64 6c 6c  xtension = ".dll
0830: 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  ";....      ////
0840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0880: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
0890: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
08a0: 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 65    /// The file e
08b0: 78 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f  xtension used fo
08c0: 72 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  r the XML config
08d0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20  uration file... 
08e0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
08f0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
0900: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
0910: 6c 79 20 73 74 72 69 6e 67 20 43 6f 6e 66 69 67  ly string Config
0920: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20  FileExtension = 
0930: 22 2e 63 6f 6e 66 69 67 22 3b 0d 0a 0d 0a 20 20  ".config";....  
0940: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
0990: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
09a0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
09b0: 69 73 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  is is the name o
09c0: 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  f the XML config
09d0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 73 70 65  uration file spe
09e0: 63 69 66 69 63 20 74 6f 20 74 68 65 0d 0a 20 20  cific to the..  
09f0: 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44      /// System.D
0a00: 61 74 61 2e 53 51 4c 69 74 65 20 61 73 73 65 6d  ata.SQLite assem
0a10: 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  bly...      /// 
0a20: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0a30: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0a40: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
0a50: 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   XmlConfigFileNa
0a60: 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  me =..          
0a70: 74 79 70 65 6f 66 28 55 6e 73 61 66 65 4e 61 74  typeof(UnsafeNat
0a80: 69 76 65 4d 65 74 68 6f 64 73 29 2e 4e 61 6d 65  iveMethods).Name
0a90: 73 70 61 63 65 20 2b 20 44 6c 6c 46 69 6c 65 45  space + DllFileE
0aa0: 78 74 65 6e 73 69 6f 6e 20 2b 0d 0a 20 20 20 20  xtension +..    
0ab0: 20 20 20 20 20 20 43 6f 6e 66 69 67 46 69 6c 65        ConfigFile
0ac0: 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20  Extension;..    
0ad0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
0ae0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
0b30: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
0b40: 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
0b50: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
0b60: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
0b70: 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65 64 20  is lock is used 
0b80: 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 73  to protect the s
0b90: 74 61 74 69 63 20 5f 53 51 4c 69 74 65 4e 61 74  tatic _SQLiteNat
0ba0: 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
0bb0: 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5f 53  e,..      /// _S
0bc0: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
0bd0: 65 48 61 6e 64 6c 65 2c 20 61 6e 64 20 70 72 6f  eHandle, and pro
0be0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
0bf0: 72 65 50 6c 61 74 66 6f 72 6d 73 20 66 69 65 6c  rePlatforms fiel
0c00: 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ds...      /// <
0c10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0c20: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0c30: 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
0c40: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d  staticSyncRoot =
0c50: 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
0c60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
0cc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0cd0: 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e  /// This diction
0ce0: 61 72 79 20 73 74 6f 72 65 73 20 74 68 65 20 72  ary stores the r
0cf0: 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 74  ead counts for t
0d00: 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69  he runtime confi
0d10: 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  guration..      
0d20: 2f 2f 2f 20 73 65 74 74 69 6e 67 73 2e 20 20 54  /// settings.  T
0d30: 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  his information 
0d40: 69 73 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64  is only recorded
0d50: 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 69   when compiled i
0d60: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  n the..      ///
0d70: 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 20 63   "Debug" build c
0d80: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a 20  onfiguration... 
0d90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
0da0: 72 79 3e 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  ry>..#if DEBUG..
0db0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
0dc0: 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c  atic Dictionary<
0dd0: 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65 74  string, int> set
0de0: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 3b 0d  tingReadCounts;.
0df0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
0e00: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
0e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
0e50: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0e60: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
0e70: 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65  dictionary store
0e80: 73 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62  s the mappings b
0e90: 65 74 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72  etween processor
0ea0: 20 61 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20   architecture.. 
0eb0: 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61       /// names a
0ec0: 6e 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  nd platform name
0ed0: 73 2e 20 20 54 68 65 73 65 20 6d 61 70 70 69 6e  s.  These mappin
0ee0: 67 73 20 61 72 65 20 6e 6f 77 20 75 73 65 64 20  gs are now used 
0ef0: 66 6f 72 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f  for two..      /
0f00: 2f 2f 20 70 75 72 70 6f 73 65 73 2e 20 20 46 69  // purposes.  Fi
0f10: 72 73 74 2c 20 74 68 65 79 20 61 72 65 20 75 73  rst, they are us
0f20: 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ed to determine 
0f30: 69 66 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  if the assembly 
0f40: 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  code..      /// 
0f50: 62 61 73 65 20 73 68 6f 75 6c 64 20 62 65 20 75  base should be u
0f60: 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74  sed instead of t
0f70: 68 65 20 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73  he location, bas
0f80: 65 64 20 75 70 6f 6e 20 77 68 65 74 68 65 72 20  ed upon whether 
0f90: 6f 6e 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  one..      /// o
0fa0: 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 6e 61  r more of the na
0fb0: 6d 65 64 20 73 75 62 2d 64 69 72 65 63 74 6f 72  med sub-director
0fc0: 69 65 73 20 65 78 69 73 74 20 77 69 74 68 69 6e  ies exist within
0fd0: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f   the assembly co
0fe0: 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61  de..      /// ba
0ff0: 73 65 2e 20 20 53 65 63 6f 6e 64 2c 20 74 68 65  se.  Second, the
1000: 79 20 61 72 65 20 75 73 65 64 20 74 6f 20 61 73  y are used to as
1010: 73 69 73 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20  sist in loading 
1020: 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d  the appropriate.
1030: 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74  .      /// SQLit
1040: 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62  e interop assemb
1050: 6c 79 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72  ly into the curr
1060: 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
1070: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1080: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
1090: 65 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e  e static Diction
10a0: 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  ary<string, stri
10b0: 6e 67 3e 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ng> processorArc
10c0: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
10d0: 6d 73 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  ms;..      #endr
10e0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
10f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1130: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
1140: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1150: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77       /// For now
1160: 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 73 69  , this method si
1170: 6d 70 6c 79 20 63 61 6c 6c 73 20 74 68 65 20 49  mply calls the I
1180: 6e 69 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64  nitialize method
1190: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
11a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 73  ummary>..      s
11b0: 74 61 74 69 63 20 55 6e 73 61 66 65 4e 61 74 69  tatic UnsafeNati
11c0: 76 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20 20  veMethods()..   
11d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11e0: 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20  Initialize();.. 
11f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
1250: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1260: 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
1270: 74 73 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65  ts to initialize
1280: 20 74 68 69 73 20 63 6c 61 73 73 20 62 79 20 70   this class by p
1290: 72 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e  re-loading the n
12a0: 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20  ative SQLite..  
12b0: 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20      /// library 
12c0: 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f  for the processo
12d0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f  r architecture o
12e0: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
12f0: 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ocess...      //
1300: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1310: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1320: 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c  tic void Initial
1330: 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ize()..      {..
1340: 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
1350: 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52  ARD || USE_INTER
1360: 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f  OP_DLL || PLATFO
1370: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1380: 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44  ORK..#if PRELOAD
1390: 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
13a0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
13b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
13c0: 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65  : If the "No_Pre
13d0: 4c 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69  LoadSQLite" envi
13e0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
13f0: 20 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20   is set (to..   
1400: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1410: 61 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20  anything), skip 
1420: 61 6c 6c 20 6f 75 72 20 73 70 65 63 69 61 6c 20  all our special 
1430: 63 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20  code and simply 
1440: 72 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20  return...       
1450: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1460: 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56   if (GetSettingV
1470: 61 6c 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64  alue("No_PreLoad
1480: 53 51 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21  SQLite", null) !
1490: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
14a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
14b0: 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a  #endif..#endif..
14c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
14d0: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
14e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
14f0: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1500: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1510: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1520: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6c  TE: Create the l
1530: 69 73 74 20 6f 66 20 73 74 61 74 69 73 74 69 63  ist of statistic
1540: 73 20 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74  s that will cont
1550: 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
1560: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1570: 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20  number of times 
1580: 65 61 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c  each setting val
1590: 75 65 20 68 61 73 20 62 65 65 6e 20 72 65 61 64  ue has been read
15a0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15b0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
15c0: 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52 65     if (settingRe
15d0: 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c  adCounts == null
15e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15f0: 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64       settingRead
1600: 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63  Counts = new Dic
1610: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
1620: 69 6e 74 3e 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  int>();..#endif.
1630: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1640: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1650: 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65     // TODO: Make
1660: 20 73 75 72 65 20 74 68 69 73 20 6c 69 73 74 20   sure this list 
1670: 69 73 20 75 70 64 61 74 65 64 20 69 66 20 74 68  is updated if th
1680: 65 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20  e supported..   
1690: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
16a0: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72      processor ar
16b0: 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73  chitecture names
16c0: 20 61 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d   and/or platform
16d0: 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20   names..        
16e0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
16f0: 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20  hanges...       
1700: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1710: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
1720: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1730: 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e  rePlatforms == n
1740: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1750: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1760: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1780: 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74  / NOTE: Create t
1790: 68 65 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73  he map of proces
17a0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
17b0: 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20   names..        
17c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
17d0: 20 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e     to platform n
17e0: 61 6d 65 73 20 75 73 69 6e 67 20 61 20 63 61 73  ames using a cas
17f0: 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74  e-insensitive st
1800: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ring..          
1810: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1820: 20 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20   comparer...    
1830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1850: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
1860: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
1870: 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  ms =..          
1880: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
1890: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
18a0: 67 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20  g, string>(..   
18b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c0: 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d         StringCom
18d0: 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e  parer.OrdinalIgn
18e0: 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20  oreCase);....   
18f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1900: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1910: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65       // NOTE: Se
1920: 74 75 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20  tup the list of 
1930: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61  platform names a
1940: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
1950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1960: 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73    //       the s
1970: 75 70 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73  upported process
1980: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 73  or architectures
1990: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
19a0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
19b0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
19c0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
19d0: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78  Platforms.Add("x
19e0: 38 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a  86", "Win32");..
19f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a00: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
1a10: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
1a20: 2e 41 64 64 28 22 41 4d 44 36 34 22 2c 20 22 78  .Add("AMD64", "x
1a30: 36 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  64");..         
1a40: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
1a50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
1a60: 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 49 41 36  atforms.Add("IA6
1a70: 34 22 2c 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d  4", "Itanium");.
1a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a90: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
1aa0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
1ab0: 73 2e 41 64 64 28 22 41 52 4d 22 2c 20 22 57 69  s.Add("ARM", "Wi
1ac0: 6e 43 45 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  nCE");..        
1ad0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 53        }....#if S
1ae0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c  QLITE_STANDARD |
1af0: 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c  | USE_INTEROP_DL
1b00: 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  L || PLATFORM_CO
1b10: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b20: 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49  #if PRELOAD_NATI
1b30: 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20  VE_LIBRARY..    
1b40: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1b50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42              // B
1b60: 55 47 42 55 47 3a 20 57 68 61 74 20 61 62 6f 75  UGBUG: What abou
1b70: 74 20 6f 74 68 65 72 20 61 70 70 6c 69 63 61 74  t other applicat
1b80: 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20  ion domains?..  
1b90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1bb0: 20 28 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d   (_SQLiteNativeM
1bc0: 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 3d 20 49  oduleHandle == I
1bd0: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1be0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c00: 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63  string baseDirec
1c10: 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  tory = null;..  
1c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c30: 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72  string processor
1c40: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 6e  Architecture = n
1c50: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1c60: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e            /* IGN
1c70: 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ORED */..       
1c80: 20 20 20 20 20 20 20 20 20 20 20 53 65 61 72 63             Searc
1c90: 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a  hForDirectory(..
1ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb0: 20 20 20 20 20 20 72 65 66 20 62 61 73 65 44 69        ref baseDi
1cc0: 72 65 63 74 6f 72 79 2c 20 72 65 66 20 70 72 6f  rectory, ref pro
1cd0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1ce0: 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  re);....        
1cf0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d10: 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
1d20: 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74 68 65   to pre-load the
1d30: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
1d40: 72 61 72 79 20 28 6f 72 0d 0a 20 20 20 20 20 20  rary (or..      
1d50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
1d60: 20 20 20 20 20 69 6e 74 65 72 6f 70 20 61 73 73       interop ass
1d70: 65 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f 72 65  embly) and store
1d80: 20 62 6f 74 68 20 74 68 65 20 66 69 6c 65 20 6e   both the file n
1d90: 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ame..           
1da0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1db0: 61 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  and native modul
1dc0: 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c 61 74  e handle for lat
1dd0: 65 72 20 75 73 61 67 65 2e 0d 0a 20 20 20 20 20  er usage...     
1de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e00: 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f     /* IGNORED */
1e10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e20: 20 20 20 20 50 72 65 4c 6f 61 64 53 51 4c 69 74      PreLoadSQLit
1e30: 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20  eDll(..         
1e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
1e50: 65 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63  eDirectory, proc
1e60: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
1e70: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1e80: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53            ref _S
1e90: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
1ea0: 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20  eFileName,..    
1eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec0: 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74    ref _SQLiteNat
1ed0: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 29  iveModuleHandle)
1ee0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ef0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64   }..#endif..#end
1f00: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
1f10: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
1f20: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1f70: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1f80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
1f90: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
1fa0: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
1fb0: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20  ation file name 
1fc0: 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79  for the assembly
1fd0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74  ..      /// cont
1fe0: 61 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67  aining the manag
1ff0: 65 64 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  ed System.Data.S
2000: 51 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73  QLite components
2010: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
2020: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
2030: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2040: 20 20 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20      /// The XML 
2050: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
2060: 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c  le name -OR- nul
2070: 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  l if it cannot b
2080: 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20  e determined..  
2090: 20 20 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20      /// or does 
20a0: 6e 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20  not exist...    
20b0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
20c0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
20d0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
20e0: 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  tXmlConfigFileNa
20f0: 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  me()..      {.. 
2100: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
2110: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
2120: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
2130: 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50  eName;....#if !P
2140: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2150: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2160: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
2170: 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e  AppDomain.Curren
2180: 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65  tDomain.BaseDire
2190: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
21a0: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74    fileName = Pat
21b0: 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74  h.Combine(direct
21c0: 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69  ory, XmlConfigFi
21d0: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
21e0: 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45        if (File.E
21f0: 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
2200: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2210: 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b  return fileName;
2220: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
2230: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20        directory 
2240: 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  = GetAssemblyDir
2250: 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20  ectory();..     
2260: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
2270: 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72  Path.Combine(dir
2280: 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69  ectory, XmlConfi
2290: 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  gFileName);.... 
22a0: 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
22b0: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
22c0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
22d0: 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61     return fileNa
22e0: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
22f0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
2300: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
2360: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2370: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
2380: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
2390: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73  e value of the s
23a0: 70 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67  pecified setting
23b0: 2c 20 75 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d  , using the XML.
23c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69  .      /// confi
23d0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e  guration file an
23e0: 64 2f 6f 72 20 74 68 65 20 65 6e 76 69 72 6f 6e  d/or the environ
23f0: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 66  ment variables f
2400: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  or the current..
2410: 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
2420: 73 20 61 6e 64 2f 6f 72 20 74 68 65 20 63 75 72  s and/or the cur
2430: 72 65 6e 74 20 73 79 73 74 65 6d 2c 20 77 68 65  rent system, whe
2440: 6e 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20  n available...  
2450: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2460: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
2470: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
2480: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2490: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74   name of the set
24a0: 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ting...      ///
24b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
24c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
24d0: 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20  ="default">..   
24e0: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
24f0: 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20   to be returned 
2500: 69 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 68  if the setting h
2510: 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20  as not been set 
2520: 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20  explicitly..    
2530: 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20    /// or cannot 
2540: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
2550: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2560: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
2570: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
2580: 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20  // The value of 
2590: 74 68 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d  the setting -OR-
25a0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   the default val
25b0: 75 65 20 73 70 65 63 69 66 69 65 64 20 62 79 0d  ue specified by.
25c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
25d0: 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75  mref name="defau
25e0: 6c 74 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73  lt" /> if it has
25f0: 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78   not been set ex
2600: 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20  plicitly or..   
2610: 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65     /// cannot be
2620: 20 64 65 74 65 72 6d 69 6e 65 64 2e 20 20 42 79   determined.  By
2630: 20 64 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65   default, all re
2640: 66 65 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73  ferences to exis
2650: 74 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ting..      /// 
2660: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
2670: 61 62 6c 65 73 20 77 69 6c 6c 20 62 65 20 65 78  ables will be ex
2680: 70 61 6e 64 65 64 20 74 6f 20 74 68 65 69 72 20  panded to their 
2690: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61  corresponding va
26a0: 6c 75 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lues..      /// 
26b0: 77 69 74 68 69 6e 20 74 68 65 20 76 61 6c 75 65  within the value
26c0: 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20   to be returned 
26d0: 75 6e 6c 65 73 73 20 65 69 74 68 65 72 20 74 68  unless either th
26e0: 65 20 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72  e "No_Expand" or
26f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f  ..      /// "No_
2700: 45 78 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66  Expand_<paramref
2710: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22   name="name" />"
2720: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
2730: 69 61 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f  iable is set [to
2740: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74  ..      /// anyt
2750: 68 69 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f  hing]...      //
2760: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2770: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
2780: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65  tic string GetSe
2790: 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
27a0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
27b0: 6d 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  me,    /* in */.
27c0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
27d0: 67 20 40 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e  g @default /* in
27e0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
27f0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
2800: 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d       if (name ==
2810: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2820: 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
2830: 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  fault;....      
2840: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2890: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
28a0: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
28b0: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
28c0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
28d0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 64      // NOTE: Upd
28e0: 61 74 65 20 73 74 61 74 69 73 74 69 63 73 20 66  ate statistics f
28f0: 6f 72 20 74 68 69 73 20 73 65 74 74 69 6e 67 20  or this setting 
2900: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
2910: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2920: 69 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43  if (settingReadC
2930: 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ounts != null)..
2940: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2950: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
2960: 6f 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ount;....       
2970: 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69         if (setti
2980: 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e 54 72 79  ngReadCounts.Try
2990: 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f  GetValue(name, o
29a0: 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20  ut count))..    
29b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
29c0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 5b  ttingReadCounts[
29d0: 6e 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20  name] = count + 
29e0: 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
29f0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
2a00: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
2a10: 67 52 65 61 64 43 6f 75 6e 74 73 2e 41 64 64 28  gReadCounts.Add(
2a20: 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20  name, 1);..     
2a30: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2a40: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
2a50: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
2a60: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2ab0: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
2ac0: 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66  e = null;....#if
2ad0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2ae0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2af0: 20 20 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61         bool expa
2b00: 6e 64 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  nd = true;....  
2b10: 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69          if (Envi
2b20: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
2b30: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 22  onmentVariable("
2b40: 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d 20 6e  No_Expand") != n
2b50: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2b60: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2b70: 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b   expand = false;
2b80: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
2b90: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
2ba0: 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65   (Environment.Ge
2bb0: 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
2bc0: 61 62 6c 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  able(String.Form
2bd0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2be0: 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e         "No_Expan
2bf0: 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21  d_{0}", name)) !
2c00: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2c10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c20: 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c      expand = fal
2c30: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
2c40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61  ....          va
2c50: 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  lue = Environmen
2c60: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
2c70: 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d  Variable(name);.
2c80: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
2c90: 28 65 78 70 61 6e 64 20 26 26 20 21 53 74 72 69  (expand && !Stri
2ca0: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
2cb0: 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  (value))..      
2cc0: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
2cd0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61  Environment.Expa
2ce0: 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  ndEnvironmentVar
2cf0: 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a  iables(value);..
2d00: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
2d10: 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  value != null)..
2d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2d30: 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6e  turn value;..#en
2d40: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
2d50: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
2d60: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d70: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
2d80: 20 3d 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46   = GetXmlConfigF
2d90: 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20  ileName();....  
2da0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2db0: 66 69 6c 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  fileName == null
2dc0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2dd0: 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66       return @def
2de0: 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ault;....       
2df0: 20 20 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65         XmlDocume
2e00: 6e 74 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65  nt document = ne
2e10: 77 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b  w XmlDocument();
2e20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e30: 20 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28    document.Load(
2e40: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
2e50: 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45              XmlE
2e60: 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74 20 3d  lement element =
2e70: 20 64 6f 63 75 6d 65 6e 74 2e 53 65 6c 65 63 74   document.Select
2e80: 53 69 6e 67 6c 65 4e 6f 64 65 28 53 74 72 69 6e  SingleNode(Strin
2e90: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
2ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f 63               "/c
2eb0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61 70 70  onfiguration/app
2ec0: 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40 6b 65  Settings/add[@ke
2ed0: 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65 29  y='{0}']", name)
2ee0: 29 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ) as..          
2ef0: 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65          XmlEleme
2f00: 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  nt;....         
2f10: 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74       if (element
2f20: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2f30: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2f50: 20 28 65 6c 65 6d 65 6e 74 2e 48 61 73 41 74 74   (element.HasAtt
2f60: 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29 29  ribute("value"))
2f70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f80: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
2f90: 65 6c 65 6d 65 6e 74 2e 47 65 74 41 74 74 72 69  element.GetAttri
2fa0: 62 75 74 65 28 22 76 61 6c 75 65 22 29 3b 0d 0a  bute("value");..
2fb0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2fc0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2fd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fe0: 20 20 20 20 69 66 20 28 65 78 70 61 6e 64 20 26      if (expand &
2ff0: 26 20 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  & !String.IsNull
3000: 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d  OrEmpty(value)).
3010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3020: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45         value = E
3030: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e  nvironment.Expan
3040: 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  dEnvironmentVari
3050: 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 23  ables(value);..#
3060: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
3070: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
3080: 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  alue != null).. 
3090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a0: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
30b0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
30c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
30d0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
30e0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
30f0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
3100: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
3110: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
3120: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
3130: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
3140: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
3150: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
3160: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
3170: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
3180: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
3190: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31a0: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
31b0: 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
31c0: 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
31d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
31f0: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
3200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3210: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
3220: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61  ry pre-loader fa
3230: 69 6c 65 64 20 74 6f 20 67 65 74 20 73 65 74 74  iled to get sett
3240: 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ing " +..       
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
3260: 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65 3a 20 7b  \"{0}\" value: {
3270: 31 7d 22 2c 20 6e 61 6d 65 2c 20 65 29 29 3b 20  1}", name, e)); 
3280: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
3290: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
32a0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
32b0: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
32c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32d0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
32e0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
32f0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
3300: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3310: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
3320: 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20  default;..      
3330: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
3340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3380: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
3390: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
33a0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72  MEWORK..      pr
33b0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
33c0: 69 6e 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67  ing ListToString
33d0: 28 49 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c  (IList<string> l
33e0: 69 73 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ist)..      {.. 
33f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 73           if (lis
3400: 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t == null)..    
3410: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3420: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
3430: 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65      StringBuilde
3440: 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53  r result = new S
3450: 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d  tringBuilder();.
3460: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
3470: 65 61 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65  each (string ele
3480: 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20  ment in list).. 
3490: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
34a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c            if (el
34b0: 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ement == null)..
34c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d0: 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20    continue;.... 
34e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
34f0: 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e  (result.Length >
3500: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
3510: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70         result.Ap
3520: 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20  pend(' ');....  
3530: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
3540: 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e  lt.Append(elemen
3550: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  t);..          }
3560: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
3570: 74 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74  turn result.ToSt
3580: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d  ring();..      }
3590: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
35a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
35f0: 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
3600: 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63  CheckForArchitec
3610: 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d  turesAndPlatform
3620: 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  s(..          st
3630: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d  ring directory,.
3640: 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 4c  .          ref L
3650: 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63  ist<string> matc
3660: 68 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29  hes..          )
3670: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
3680: 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20       int result 
3690: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
36a0: 20 20 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d    if (matches ==
36b0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
36c0: 20 20 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20        matches = 
36d0: 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  new List<string>
36e0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
36f0: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
3700: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
3710: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3720: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
3730: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
3740: 65 63 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20  ectory) &&..    
3750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
3760: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
3770: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d  turePlatforms !=
3780: 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
3790: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37a0: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65              fore
37b0: 61 63 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69  ach (KeyValuePai
37c0: 72 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  r<string, string
37d0: 3e 20 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20  > pair..        
37e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37f0: 20 20 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72      in processor
3800: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
3810: 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20  forms)..        
3820: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3840: 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79     if (Directory
3850: 2e 45 78 69 73 74 73 28 50 61 74 68 2e 43 6f 6d  .Exists(Path.Com
3860: 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 20  bine(directory, 
3870: 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20  pair.Key)))..   
3880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3890: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38b0: 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61 69 72  matches.Add(pair
38c0: 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  .Key);..        
38d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38e0: 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20    result++;..   
38f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3900: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
3920: 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70 61 69  ring value = pai
3930: 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  r.Value;....    
3940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3950: 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
3960: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3980: 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
3990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39a0: 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79     if (Directory
39b0: 2e 45 78 69 73 74 73 28 50 61 74 68 2e 43 6f 6d  .Exists(Path.Com
39c0: 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 20  bine(directory, 
39d0: 76 61 6c 75 65 29 29 29 0d 0a 20 20 20 20 20 20  value)))..      
39e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74               mat
3a10: 63 68 65 73 2e 41 64 64 28 76 61 6c 75 65 29 3b  ches.Add(value);
3a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3a30: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
3a40: 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20  lt++;..         
3a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
3a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a70: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
3a80: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
3a90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
3aa0: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
3ab0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
3b10: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
3b20: 63 20 62 6f 6f 6c 20 43 68 65 63 6b 41 73 73 65  c bool CheckAsse
3b30: 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 0d 0a 20  mblyCodeBase(.. 
3b40: 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
3b50: 79 20 61 73 73 65 6d 62 6c 79 2c 0d 0a 20 20 20  y assembly,..   
3b60: 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
3b70: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
3b80: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
3b90: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
3ba0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
3bb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3bc0: 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  assembly == null
3bd0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3be0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
3bf0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
3c00: 20 20 20 20 73 74 72 69 6e 67 20 63 6f 64 65 42      string codeB
3c10: 61 73 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 43  ase = assembly.C
3c20: 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a 20 20 20 20  odeBase;....    
3c30: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
3c40: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
3c50: 74 79 28 63 6f 64 65 42 61 73 65 29 29 0d 0a 20  ty(codeBase)).. 
3c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c70: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
3c80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3c90: 55 72 69 20 75 72 69 20 3d 20 6e 65 77 20 55 72  Uri uri = new Ur
3ca0: 69 28 63 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20  i(codeBase);..  
3cb0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
3cc0: 6e 67 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65  ng localFileName
3cd0: 20 3d 20 75 72 69 2e 4c 6f 63 61 6c 50 61 74 68   = uri.LocalPath
3ce0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3cf0: 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
3d00: 73 74 73 28 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d  sts(localFileNam
3d10: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
3d20: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
3d30: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
3d40: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
3d50: 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65  ectory = Path.Ge
3d60: 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 0d  tDirectoryName(.
3d70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3d80: 20 20 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65     localFileName
3d90: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
3da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3db0: 73 74 72 69 6e 67 20 78 6d 6c 43 6f 6e 66 69 67  string xmlConfig
3dc0: 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  FileName = Path.
3dd0: 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20  Combine(..      
3de0: 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65              dire
3df0: 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67  ctory, XmlConfig
3e00: 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
3e10: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3e20: 46 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43  File.Exists(xmlC
3e30: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d  onfigFileName)).
3e40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
3e50: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
3e60: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44  CT_20 && TRACE_D
3e70: 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20  ETECTION..      
3e80: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
3e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3ea0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3eb0: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
3ec0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
3ed0: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
3ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ef0: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
3f00: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
3f10: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
3f30: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
3f40: 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 58 4d  -loader found XM
3f50: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
3f60: 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  file " +..      
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f80: 20 20 20 20 22 76 69 61 20 63 6f 64 65 20 62 61      "via code ba
3f90: 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79  se for currently
3fa0: 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d   executing assem
3fb0: 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a  bly: \"{0}\"",..
3fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fd0: 20 20 20 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e            xmlCon
3fe0: 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f  figFileName)); /
3ff0: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
4000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
4010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4020: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
4030: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
4040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4050: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
4060: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
4070: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
4080: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4090: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
40a0: 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d   localFileName;.
40b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
40c0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
40d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
40e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
40f0: 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d    List<string> m
4100: 61 74 63 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a  atches = null;..
4110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4120: 69 66 20 28 43 68 65 63 6b 46 6f 72 41 72 63 68  if (CheckForArch
4130: 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74  itecturesAndPlat
4140: 66 6f 72 6d 73 28 64 69 72 65 63 74 6f 72 79 2c  forms(directory,
4150: 20 72 65 66 20 6d 61 74 63 68 65 73 29 20 3e 20   ref matches) > 
4160: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
4170: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
4180: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
4190: 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
41b0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
41c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
41d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
41e0: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
41f0: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
4200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4210: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
4220: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
4230: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
4240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4250: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
4260: 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
4270: 20 6e 61 74 69 76 65 20 73 75 62 2d 64 69 72 65   native sub-dire
4280: 63 74 6f 72 69 65 73 20 22 20 2b 0d 0a 20 20 20  ctories " +..   
4290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42a0: 20 20 20 20 20 20 20 22 76 69 61 20 63 6f 64 65         "via code
42b0: 20 62 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e   base for curren
42c0: 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
42d0: 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22  sembly: \"{0}\""
42e0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
42f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 73               Lis
4300: 74 54 6f 53 74 72 69 6e 67 28 6d 61 74 63 68 65  tToString(matche
4310: 73 29 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  s))); /* throw *
4320: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4330: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4340: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
4350: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4360: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4370: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
4380: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
4390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
43a0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
43b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
43c0: 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c  eName = localFil
43d0: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
43e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
43f0: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
4400: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
4410: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4420: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
4430: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
4440: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
4450: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
4460: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
4470: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
4480: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
4490: 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
44a0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
44b0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
44c0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
44d0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
44e0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
44f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4500: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
4510: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
4520: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
4530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4540: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
4550: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
4560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4570: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
4580: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
4590: 20 66 61 69 6c 65 64 20 74 6f 20 63 68 65 63 6b   failed to check
45a0: 20 63 6f 64 65 20 62 61 73 65 20 22 20 2b 0d 0a   code base " +..
45b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45c0: 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72 65        "for curre
45d0: 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61  ntly executing a
45e0: 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65  ssembly: {0}", e
45f0: 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
4600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
4610: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4620: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
4630: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4640: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
4650: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
4660: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
4670: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
4680: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
4690: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
46a0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
46b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
46c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
4700: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
4710: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
4720: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
4730: 73 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  s the directory 
4740: 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79  for the assembly
4750: 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67   currently being
4760: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 65 63  ..      /// exec
4770: 75 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  uted...      ///
4780: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4790: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
47a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
47b0: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
47c0: 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
47d0: 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75  ntly being execu
47e0: 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ted -OR- null if
47f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63  ..      /// it c
4800: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
4810: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
4820: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
4830: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
4840: 20 73 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d   string GetAssem
4850: 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a  blyDirectory()..
4860: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4870: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
4880: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4890: 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
48a0: 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e  mbly = Assembly.
48b0: 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73 65  GetExecutingAsse
48c0: 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  mbly();....     
48d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
48e0: 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  embly == null)..
48f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4900: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
4910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4920: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20  string fileName 
4930: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50  = null;....#if P
4940: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
4950: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
4960: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
4970: 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d  Name assemblyNam
4980: 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47 65 74  e = assembly.Get
4990: 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Name();....     
49a0: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
49b0: 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c  emblyName == nul
49c0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
49d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
49e0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
49f0: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61      fileName = a
4a00: 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f 64 65  ssemblyName.Code
4a10: 42 61 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  Base;..#else..  
4a20: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4a30: 21 43 68 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f  !CheckAssemblyCo
4a40: 64 65 42 61 73 65 28 61 73 73 65 6d 62 6c 79 2c  deBase(assembly,
4a50: 20 72 65 66 20 66 69 6c 65 4e 61 6d 65 29 29 0d   ref fileName)).
4a60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4a70: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73     fileName = as
4a80: 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b  sembly.Location;
4a90: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
4aa0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
4ab0: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
4ac0: 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ty(fileName)).. 
4ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ae0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
4af0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
4b00: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
4b10: 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74  = Path.GetDirect
4b20: 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65  oryName(fileName
4b30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
4b40: 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
4b50: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
4b60: 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20  ectory))..      
4b70: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4b80: 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
4b90: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4ba0: 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
4bb0: 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
4bc0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
4bd0: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
4be0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
4bf0: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
4c00: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63  lse..          c
4c10: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
4c20: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
4c30: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
4c40: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
4c50: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
4c60: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
4c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
4c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c90: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
4ca0: 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
4cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4cc0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
4cd0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
4ce0: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
4cf0: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
4d00: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
4d10: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
4d20: 67 65 74 20 64 69 72 65 63 74 6f 72 79 20 22 20  get directory " 
4d30: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
4d40: 20 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75           "for cu
4d50: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
4d60: 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22  g assembly: {0}"
4d70: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
4d80: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
4d90: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
4da0: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
4db0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
4dd0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
4de0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
4df0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
4e00: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
4e10: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
4e20: 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
4e30: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
4e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
4e90: 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f     #region Optio
4ea0: 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74  nal Native SQLit
4eb0: 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f  e Library Pre-Lo
4ec0: 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20  ading Code..    
4ed0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e    //..      // N
4ee0: 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c  OTE: If we are l
4ef0: 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73  ooking for the s
4f00: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44  tandard SQLite D
4f10: 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c  LL ("sqlite3.dll
4f20: 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  "),..      //   
4f30: 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20      the interop 
4f40: 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74  DLL ("SQLite.Int
4f50: 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77  erop.dll"), or w
4f60: 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e  e are running on
4f70: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
4f80: 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63       .NET Compac
4f90: 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20  t Framework, we 
4fa0: 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74  should include t
4fb0: 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69  his code (only i
4fc0: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  f the..      // 
4fd0: 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68 61        feature ha
4fe0: 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20  s actually been 
4ff0: 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20  enabled).  This 
5000: 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f  code would be to
5010: 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20  tally..      // 
5020: 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20        redundant 
5030: 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68  if this module h
5040: 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20  as been bundled 
5050: 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d  into the mixed-m
5060: 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ode..      //   
5070: 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20      assembly... 
5080: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c       //..#if SQL
5090: 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
50a0: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
50b0: 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
50c0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a  ACTFRAMEWORK....
50d0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
50e0: 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f  // NOTE: Only co
50f0: 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74  mpile in the nat
5100: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
5110: 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68 65  load code if the
5120: 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20   feature..      
5130: 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
5140: 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68  n enabled for th
5150: 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20  is build...     
5160: 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44   //..#if PRELOAD
5170: 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
5180: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
5190: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
51a0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
51b0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
51c0: 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  able containing 
51d0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20  the processor.. 
51e0: 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65       /// archite
51f0: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
5200: 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20  rent process... 
5210: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5220: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
5230: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
5240: 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53  ly string PROCES
5250: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
5260: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50   =..          "P
5270: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
5280: 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20  CTURE";....     
5290: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
52a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
52e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
52f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
5300: 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20  is the P/Invoke 
5310: 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70  method that wrap
5320: 73 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e  s the native Win
5330: 33 32 20 4c 6f 61 64 4c 69 62 72 61 72 79 0d 0a  32 LoadLibrary..
5340: 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69        /// functi
5350: 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53 44  on.  See the MSD
5360: 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  N documentation 
5370: 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73  for full details
5380: 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20   on what it..   
5390: 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20     /// does...  
53a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
53b0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
53c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
53d0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
53e0: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
53f0: 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69 62 72   executable libr
5400: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
5410: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
5420: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
5430: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
5440: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
5450: 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d  e upon success -
5460: 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20  OR- IntPtr.Zero 
5470: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
5480: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
5490: 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  >..#if !PLATFORM
54a0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
54b0: 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70  K..      [DllImp
54c0: 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 22 2c 0d  ort("kernel32",.
54d0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b 44  .#else..      [D
54e0: 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65 64 6c  llImport("coredl
54f0: 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l",..#endif..   
5500: 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67 43 6f         CallingCo
5510: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
5520: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e  ngConvention.Win
5530: 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d 20 43  api, CharSet = C
5540: 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23 69  harSet.Auto,..#i
5550: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
5560: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
5570: 20 20 20 20 20 20 20 20 42 65 73 74 46 69 74 4d          BestFitM
5580: 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20  apping = false, 
5590: 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c  ThrowOnUnmappabl
55a0: 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a 23  eChar = true,..#
55b0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
55c0: 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20   SetLastError = 
55d0: 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 70 72  true)]..      pr
55e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 65 78 74  ivate static ext
55f0: 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c  ern IntPtr LoadL
5600: 69 62 72 61 72 79 28 73 74 72 69 6e 67 20 66 69  ibrary(string fi
5610: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
5620: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
5670: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
5680: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
5690: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
56a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
56b0: 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b  s is the P/Invok
56c0: 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72  e method that wr
56d0: 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57  aps the native W
56e0: 69 6e 33 32 20 47 65 74 53 79 73 74 65 6d 49 6e  in32 GetSystemIn
56f0: 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75  fo..      /// fu
5700: 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65  nction.  See the
5710: 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74   MSDN documentat
5720: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
5730: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
5740: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
5750: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
5760: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
5770: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
5780: 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20  ystemInfo">..   
5790: 20 20 20 2f 2f 2f 20 54 68 65 20 73 79 73 74 65     /// The syste
57a0: 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74  m information st
57b0: 72 75 63 74 75 72 65 20 74 6f 20 62 65 20 66 69  ructure to be fi
57c0: 6c 6c 65 64 20 69 6e 20 62 79 20 74 68 65 20 66  lled in by the f
57d0: 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  unction...      
57e0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
57f0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
5800: 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e  coredll", Callin
5810: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
5820: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
5830: 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20 20  Winapi)]..      
5840: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65  private static e
5850: 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79  xtern void GetSy
5860: 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53  stemInfo(out SYS
5870: 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49  TEM_INFO systemI
5880: 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  nfo);....      /
5890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
58e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
58f0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e       /// This en
5900: 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69  umeration contai
5910: 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20  ns the possible 
5920: 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70  values for the p
5930: 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20  rocessor..      
5940: 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65  /// architecture
5950: 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79   field of the sy
5960: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
5970: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
5980: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5990: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
59a0: 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72 41   enum ProcessorA
59b0: 72 63 68 69 74 65 63 74 75 72 65 20 3a 20 75 73  rchitecture : us
59c0: 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a 20  hort /* COMPAT: 
59d0: 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20 20  Win32. */..     
59e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
59f0: 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20  tel = 0,..      
5a00: 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a 20      MIPS = 1,.. 
5a10: 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 20 3d           Alpha =
5a20: 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 50   2,..          P
5a30: 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20 20  owerPC = 3,..   
5a40: 20 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c 0d         SHx = 4,.
5a50: 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d 20 3d  .          ARM =
5a60: 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49   5,..          I
5a70: 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20 20  A64 = 6,..      
5a80: 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37 2c      Alpha64 = 7,
5a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49 4c  ..          MSIL
5aa0: 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 8,..         
5ab0: 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20 20   AMD64 = 9,..   
5ac0: 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f 57         IA32_on_W
5ad0: 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20 20  in64 = 10,..    
5ae0: 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20        Unknown = 
5af0: 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d 0d  0xFFFF..      }.
5b00: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
5b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b50: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
5b60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5b70: 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75 72  // This structur
5b80: 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72  e contains infor
5b90: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  mation about the
5ba0: 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74 65   current compute
5bb0: 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f  r. This..      /
5bc0: 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20  // includes the 
5bd0: 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c 20  processor type, 
5be0: 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f 72  page size, memor
5bf0: 79 20 61 64 64 72 65 73 73 65 73 2c 20 65 74 63  y addresses, etc
5c00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
5c10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b  ummary>..      [
5c20: 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
5c30: 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
5c40: 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70 72 69 76  al)]..      priv
5c50: 61 74 65 20 73 74 72 75 63 74 20 53 59 53 54 45  ate struct SYSTE
5c60: 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b 0d  M_INFO..      {.
5c70: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
5c80: 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  c ProcessorArchi
5c90: 74 65 63 74 75 72 65 20 77 50 72 6f 63 65 73 73  tecture wProcess
5ca0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
5cb0: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
5cc0: 63 20 75 73 68 6f 72 74 20 77 52 65 73 65 72 76  c ushort wReserv
5cd0: 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ed; /* NOT USED 
5ce0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
5cf0: 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61 67 65  blic uint dwPage
5d00: 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Size; /* NOT USE
5d10: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
5d20: 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c 70  public IntPtr lp
5d30: 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74 69  MinimumApplicati
5d40: 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f  onAddress; /* NO
5d50: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
5d60: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
5d70: 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70 6c  tr lpMaximumAppl
5d80: 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20  icationAddress; 
5d90: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
5da0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
5db0: 20 75 69 6e 74 20 64 77 41 63 74 69 76 65 50 72   uint dwActivePr
5dc0: 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20  ocessorMask; /* 
5dd0: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
5de0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
5df0: 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50 72 6f  nt dwNumberOfPro
5e00: 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20  cessors; /* NOT 
5e10: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
5e20: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
5e30: 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65 3b 20  wProcessorType; 
5e40: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
5e50: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
5e60: 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74 69   uint dwAllocati
5e70: 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b 20 2f  onGranularity; /
5e80: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
5e90: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
5ea0: 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f  ushort wProcesso
5eb0: 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55  rLevel; /* NOT U
5ec0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
5ed0: 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20    public ushort 
5ee0: 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69 73 69  wProcessorRevisi
5ef0: 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  on; /* NOT USED 
5f00: 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e  */..      }..#en
5f10: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  dif....      ///
5f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f60: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
5f70: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
5f80: 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Data..      /// 
5f90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5fa0: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
5fb0: 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65  module file name
5fc0: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
5fd0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f  SQLite library o
5fe0: 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  r null...      /
5ff0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6000: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
6010: 74 69 63 20 73 74 72 69 6e 67 20 5f 53 51 4c 69  tic string _SQLi
6020: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69  teNativeModuleFi
6030: 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a  leName = null;..
6040: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
6050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6090: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
60a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
60b0: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  / The native mod
60c0: 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 74  ule handle for t
60d0: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
60e0: 20 6c 69 62 72 61 72 79 20 6f 72 20 74 68 65 20   library or the 
60f0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  value..      ///
6100: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a 20   IntPtr.Zero... 
6110: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6120: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
6130: 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  te static IntPtr
6140: 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   _SQLiteNativeMo
6150: 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 49 6e 74  duleHandle = Int
6160: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
6170: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
6180: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
6190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
61d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
61e0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  ry>..      /// S
61f0: 65 61 72 63 68 65 73 20 66 6f 72 20 74 68 65 20  earches for the 
6200: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
6210: 62 72 61 72 79 20 69 6e 20 74 68 65 20 64 69 72  brary in the dir
6220: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
6230: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  g..      /// the
6240: 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e   assembly curren
6250: 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74  tly being execut
6260: 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68  ed as well as th
6270: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
6280: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20  ..      /// for 
6290: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
62a0: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d  ication domain..
62b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
62c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
62d0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
62e0: 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20  seDirectory">.. 
62f0: 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
6300: 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
6310: 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f  meter will be mo
6320: 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72 20  dified to refer 
6330: 74 6f 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  to the base..   
6340: 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79     /// directory
6350: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
6360: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
6370: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
6380: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6390: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
63a0: 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
63b0: 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
63c0: 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
63d0: 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
63e0: 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66  er will be modif
63f0: 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20  ied to refer to 
6400: 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  the name..      
6410: 2f 2f 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65 64  /// of the immed
6420: 69 61 74 65 20 64 69 72 65 63 74 6f 72 79 20 28  iate directory (
6430: 69 2e 65 2e 20 74 68 65 20 6f 66 66 73 65 74 20  i.e. the offset 
6440: 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 64 69  from the base di
6450: 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20  rectory)..      
6460: 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  /// containing t
6470: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
6480: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
6490: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
64a0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
64b0: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
64c0: 6e 2d 7a 65 72 6f 20 28 73 75 63 63 65 73 73 29  n-zero (success)
64d0: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
64e0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77 61  QLite library wa
64f0: 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69  s found; otherwi
6500: 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a  se,..      /// z
6510: 65 72 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a  ero (failure)...
6520: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
6530: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
6540: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
6550: 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f  SearchForDirecto
6560: 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ry(..          r
6570: 65 66 20 73 74 72 69 6e 67 20 62 61 73 65 44 69  ef string baseDi
6580: 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20  rectory,        
6590: 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
65a0: 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
65b0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
65c0: 63 74 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f 0d  cture /* out */.
65d0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
65e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
65f0: 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56   if (GetSettingV
6600: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
6610: 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
6620: 51 4c 69 74 65 5f 4e 6f 53 65 61 72 63 68 46 6f  QLite_NoSearchFo
6630: 72 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c  rDirectory", nul
6640: 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  l) != null)..   
6650: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6660: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
6670: 61 6c 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c 45  alse; /* DISABLE
6680: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
6690: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  }....          /
66a0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
66b0: 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
66c0: 6c 69 73 74 20 6f 66 20 62 61 73 65 20 64 69 72  list of base dir
66d0: 65 63 74 6f 72 69 65 73 20 61 6e 64 20 70 72 6f  ectories and pro
66e0: 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d  cessor/platform.
66f0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
6700: 20 20 20 20 6e 61 6d 65 73 2e 20 20 54 68 65 73      names.  Thes
6710: 65 20 6c 69 73 74 73 20 77 69 6c 6c 20 62 65 20  e lists will be 
6720: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f 63  used to help loc
6730: 61 74 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  ate the native..
6740: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6750: 20 20 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c     SQLite core l
6760: 69 62 72 61 72 79 20 28 6f 72 20 69 6e 74 65 72  ibrary (or inter
6770: 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 74 6f 20  op assembly) to 
6780: 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20  pre-load into.. 
6790: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
67a0: 20 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e 0d    this process..
67b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
67c0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
67d0: 5d 20 64 69 72 65 63 74 6f 72 69 65 73 20 3d 20  ] directories = 
67e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
67f0: 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65   GetAssemblyDire
6800: 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21 50  ctory(),..#if !P
6810: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6820: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
6830: 20 20 20 20 20 20 20 20 41 70 70 44 6f 6d 61 69          AppDomai
6840: 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e  n.CurrentDomain.
6850: 42 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a  BaseDirectory,..
6860: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
6870: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    };....        
6880: 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 44 69    string[] subDi
6890: 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20  rectories = {.. 
68a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
68b0: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
68c0: 63 74 75 72 65 28 29 2c 20 47 65 74 50 6c 61 74  cture(), GetPlat
68d0: 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d 0a  formName(null)..
68e0: 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a            };....
68f0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
6900: 68 20 28 73 74 72 69 6e 67 20 64 69 72 65 63 74  h (string direct
6910: 6f 72 79 20 69 6e 20 64 69 72 65 63 74 6f 72 69  ory in directori
6920: 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  es)..          {
6930: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6940: 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d  if (directory ==
6950: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
6960: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
6970: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
6980: 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74       foreach (st
6990: 72 69 6e 67 20 73 75 62 44 69 72 65 63 74 6f 72  ring subDirector
69a0: 79 20 69 6e 20 73 75 62 44 69 72 65 63 74 6f 72  y in subDirector
69b0: 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ies)..          
69c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
69d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62           if (sub
69e0: 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c  Directory == nul
69f0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
6a00: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
6a10: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
6a20: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
6a30: 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
6a40: 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68  DllFileName(Path
6a50: 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20  .Combine(..     
6a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6a70: 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69   Path.Combine(di
6a80: 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69 72 65  rectory, subDire
6a90: 63 74 6f 72 79 29 2c 20 53 51 4c 49 54 45 5f 44  ctory), SQLITE_D
6aa0: 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  LL));....       
6ab0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
6ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ad0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
6ae0: 20 53 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c 65   SQLite DLL file
6af0: 20 65 78 69 73 74 73 2c 20 72 65 74 75 72 6e 20   exists, return 
6b00: 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  success...      
6b10: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
6b20: 20 20 20 20 20 50 72 69 6f 72 20 74 6f 20 72 65       Prior to re
6b30: 74 75 72 6e 69 6e 67 2c 20 73 65 74 20 74 68 65  turning, set the
6b40: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
6b50: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
6b60: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6b70: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
6b80: 65 63 74 75 72 65 20 74 6f 20 72 65 66 6c 65 63  ecture to reflec
6b90: 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d 0a  t the location..
6ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bb0: 20 20 2f 2f 20 20 20 20 20 20 20 77 68 65 72 65    //       where
6bc0: 20 69 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d 0a   it was found...
6bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6be0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6bf0: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
6c00: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
6c10: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
6c20: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
6c40: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 64  aseDirectory = d
6c50: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
6c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c70: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
6c80: 65 63 74 75 72 65 20 3d 20 73 75 62 44 69 72 65  ecture = subDire
6c90: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
6ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6cb0: 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20 46 4f  turn true; /* FO
6cc0: 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  UND */..        
6cd0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
6ce0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
6cf0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
6d00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
6d10: 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f 55 4e  lse; /* NOT FOUN
6d20: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  D */..      }...
6d30: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
6d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
6d90: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6da0: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
6db0: 75 72 6e 73 20 74 68 65 20 62 61 73 65 20 64 69  urns the base di
6dc0: 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 20 63  rectory of the c
6dd0: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
6de0: 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  on..      /// do
6df0: 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  main...      ///
6e00: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6e10: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
6e20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
6e30: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 66  base directory f
6e40: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 61  or the current a
6e50: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
6e60: 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  n -OR- null if i
6e70: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  t..      /// can
6e80: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
6e90: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
6ea0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
6eb0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
6ec0: 74 72 69 6e 67 20 47 65 74 42 61 73 65 44 69 72  tring GetBaseDir
6ed0: 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
6ee0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  {..          //.
6ef0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
6f00: 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c  TE: If the "PreL
6f10: 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69  oadSQLite_BaseDi
6f20: 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e  rectory" environ
6f30: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d 0a 20  ment variable.. 
6f40: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6f50: 20 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74    is set, use it
6f60: 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68   verbatim for th
6f70: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
6f80: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
6f90: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
6fa0: 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65  g directory = Ge
6fb0: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 22 50  tSettingValue("P
6fc0: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73  reLoadSQLite_Bas
6fd0: 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a 20 20  eDirectory",..  
6fe0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c              null
6ff0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
7000: 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d  if (directory !=
7010: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
7020: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72        return dir
7030: 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66 20 21  ectory;....#if !
7040: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7050: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
7060: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
7070: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
7080: 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
7090: 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72  e_UseAssemblyDir
70a0: 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d  ectory" environm
70b0: 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ent..          /
70c0: 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65  /       variable
70d0: 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e 79 74   is set (to anyt
70e0: 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74 74 65  hing), then atte
70f0: 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 0d 0a  mpt to use the..
7100: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
7110: 20 20 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e     directory con
7120: 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75 72 72  taining the curr
7130: 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
7140: 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20  assembly..      
7150: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e      //       (i.
7160: 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  e. System.Data.S
7170: 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64 20 6f  QLite) intsead o
7180: 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  f the applicatio
7190: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  n..          // 
71a0: 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62 61 73        domain bas
71b0: 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  e directory...  
71c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
71d0: 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74        if (GetSet
71e0: 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
71f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
7200: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65  reLoadSQLite_Use
7210: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
7220: 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c  y", null) != nul
7230: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
7240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64  .              d
7250: 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41 73  irectory = GetAs
7260: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
7270: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
7280: 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72      if (director
7290: 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
72a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
72b0: 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d  turn directory;.
72c0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
72d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
72e0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
72f0: 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c   Otherwise, fall
7300: 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68  back on using th
7310: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
7320: 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
7330: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75 72 72     //       curr
7340: 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  ent application 
7350: 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 20  domain...       
7360: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
7370: 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d 61 69   return AppDomai
7380: 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e  n.CurrentDomain.
7390: 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a  BaseDirectory;..
73a0: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
73b0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
73c0: 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73  / NOTE: Otherwis
73d0: 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75  e, fallback on u
73e0: 73 69 6e 67 20 74 68 65 20 64 69 72 65 63 74 6f  sing the directo
73f0: 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20  ry containing.. 
7400: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
7410: 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20    the currently 
7420: 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62  executing assemb
7430: 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ly...          /
7440: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  /..          ret
7450: 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44  urn GetAssemblyD
7460: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23 65 6e  irectory();..#en
7470: 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  dif..      }....
7480: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
74d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
74e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
74f0: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
7500: 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  e dynamic link l
7510: 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
7520: 20 72 65 71 75 69 72 65 73 20 61 20 73 75 66 66   requires a suff
7530: 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e  ix..      /// an
7540: 64 20 61 64 64 73 20 69 74 20 69 66 20 6e 65 63  d adds it if nec
7550: 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  essary...      /
7560: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7570: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
7580: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
7590: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
75a0: 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63  original dynamic
75b0: 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69   link library fi
75c0: 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65  le name to inspe
75d0: 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ct...      /// <
75e0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
75f0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
7600: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61      /// The dyna
7610: 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79  mic link library
7620: 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73   file name, poss
7630: 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f  ibly modified to
7640: 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20   include an..   
7650: 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e     /// extension
7660: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
7670: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
7680: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
7690: 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46 69 6c  ring FixUpDllFil
76a0: 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eName(..        
76b0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
76c0: 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  e /* in */..    
76d0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
76e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
76f0: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
7700: 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
7710: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
7720: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 6c 61               Pla
7730: 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d  tformID platform
7740: 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  Id = Environment
7750: 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66  .OSVersion.Platf
7760: 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  orm;....        
7770: 20 20 20 20 20 20 69 66 20 28 28 70 6c 61 74 66        if ((platf
7780: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
7790: 6d 49 44 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a  mID.Win32S) ||..
77a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77b0: 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d    (platformId ==
77c0: 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33   PlatformID.Win3
77d0: 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a 20 20  2Windows) ||..  
77e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77f0: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
7800: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 4e  latformID.Win32N
7810: 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  T) ||..         
7820: 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f           (platfo
7830: 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d  rmId == Platform
7840: 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20 20  ID.WinCE))..    
7850: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7870: 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e 45 6e 64  f (!fileName.End
7880: 73 57 69 74 68 28 44 6c 6c 46 69 6c 65 45 78 74  sWith(DllFileExt
7890: 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  ension,..       
78a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78b0: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69     StringCompari
78c0: 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
78d0: 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eCase))..       
78e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
78f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7900: 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
7910: 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74  ame + DllFileExt
7920: 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  ension;..       
7930: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
7940: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
7950: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
7960: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
7970: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
7980: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
7990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79d0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
79e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
79f0: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
7a00: 20 72 65 74 75 72 6e 73 20 74 68 65 20 70 72 6f   returns the pro
7a10: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
7a20: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
7a30: 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  nt..      /// pr
7a40: 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ocess...      //
7a50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7a60: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
7a70: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
7a80: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
7a90: 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63  tecture of the c
7aa0: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20 2d  urrent process -
7ab0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a  OR- null if it..
7ac0: 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74        /// cannot
7ad0: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
7ae0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
7af0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
7b00: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
7b10: 6e 67 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41  ng GetProcessorA
7b20: 72 63 68 69 74 65 63 74 75 72 65 28 29 0d 0a 20  rchitecture().. 
7b30: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7b40: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
7b50: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
7b60: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50  "PreLoadSQLite_P
7b70: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
7b80: 74 75 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  ture" environmen
7b90: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
7ba0: 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 69        variable i
7bb0: 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76 65  s set, use it ve
7bc0: 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20 63  rbatim for the c
7bd0: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 6f 72  urrent processor
7be0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
7bf0: 20 20 20 20 20 61 72 63 68 69 74 65 63 74 75 72       architectur
7c00: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
7c10: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
7c20: 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
7c30: 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 53 65  itecture = GetSe
7c40: 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
7c50: 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c             "PreL
7c60: 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73  oadSQLite_Proces
7c70: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
7c80: 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20  , null);....    
7c90: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
7ca0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
7cb0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
7cc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
7cd0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
7ce0: 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ture;....       
7cf0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
7d00: 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69 6c 6c   // BUGBUG: Will
7d10: 20 74 68 69 73 20 61 6c 77 61 79 73 20 62 65 20   this always be 
7d20: 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20 20 20  reliable?..     
7d30: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
7d40: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
7d50: 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 53 65  itecture = GetSe
7d60: 74 74 69 6e 67 56 61 6c 75 65 28 50 52 4f 43 45  ttingValue(PROCE
7d70: 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52  SSOR_ARCHITECTUR
7d80: 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20  E, null);....   
7d90: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7de0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7df0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7e00: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
7e10: 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a          // HACK:
7e20: 20 43 68 65 63 6b 20 66 6f 72 20 61 6e 20 22 69   Check for an "i
7e30: 6d 70 6f 73 73 69 62 6c 65 22 20 73 69 74 75 61  mpossible" situa
7e40: 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 70 6f  tion.  If the po
7e50: 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20 20 20 20  inter size..    
7e60: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
7e70: 73 20 33 32 2d 62 69 74 73 2c 20 74 68 65 20 70  s 32-bits, the p
7e80: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
7e90: 63 74 75 72 65 20 63 61 6e 6e 6f 74 20 62 65 20  cture cannot be 
7ea0: 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20 20 20 20  "AMD64"...      
7eb0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 6e 20      //       In 
7ec0: 74 68 61 74 20 63 61 73 65 2c 20 77 65 20 61 72  that case, we ar
7ed0: 65 20 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e  e almost certain
7ee0: 6c 79 20 68 69 74 74 69 6e 67 20 61 20 62 75 67  ly hitting a bug
7ef0: 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   in the..       
7f00: 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 65 72     //       oper
7f10: 61 74 69 6e 67 20 73 79 73 74 65 6d 20 61 6e 64  ating system and
7f20: 2f 6f 72 20 56 69 73 75 61 6c 20 53 74 75 64 69  /or Visual Studi
7f30: 6f 20 74 68 61 74 20 63 61 75 73 65 73 20 74 68  o that causes th
7f40: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
7f50: 20 20 20 20 20 20 50 52 4f 43 45 53 53 4f 52 5f        PROCESSOR_
7f60: 41 52 43 48 49 54 45 43 54 55 52 45 20 65 6e 76  ARCHITECTURE env
7f70: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
7f80: 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  e to contain the
7f90: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
7fa0: 20 20 20 20 20 77 72 6f 6e 67 20 76 61 6c 75 65       wrong value
7fb0: 20 69 6e 20 73 6f 6d 65 20 63 69 72 63 75 6d 73   in some circums
7fc0: 74 61 6e 63 65 73 2e 20 20 50 6c 65 61 73 65 20  tances.  Please 
7fd0: 72 65 66 65 72 20 74 6f 20 74 69 63 6b 65 74 0d  refer to ticket.
7fe0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
7ff0: 20 20 20 20 5b 39 61 63 39 38 36 32 36 31 31 5d      [9ac9862611]
8000: 20 66 6f 72 20 66 75 72 74 68 65 72 20 69 6e 66   for further inf
8010: 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  ormation...     
8020: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
8030: 20 20 20 69 66 20 28 28 49 6e 74 50 74 72 2e 53     if ((IntPtr.S
8040: 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28 69 6e  ize == sizeof(in
8050: 74 29 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  t)) &&..        
8060: 20 20 20 20 20 20 53 74 72 69 6e 67 2e 45 71 75        String.Equ
8070: 61 6c 73 28 70 72 6f 63 65 73 73 6f 72 41 72 63  als(processorArc
8080: 68 69 74 65 63 74 75 72 65 2c 20 22 41 4d 44 36  hitecture, "AMD6
8090: 34 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  4",..           
80a0: 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d         StringCom
80b0: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
80c0: 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20  gnoreCase))..   
80d0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
80e0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
80f0: 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
8100: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8110: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
8120: 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e 20    // NOTE: When 
8130: 74 72 61 63 69 6e 67 20 69 73 20 65 6e 61 62 6c  tracing is enabl
8140: 65 64 2c 20 73 61 76 65 20 74 68 65 20 6f 72 69  ed, save the ori
8150: 67 69 6e 61 6c 6c 79 20 64 65 74 65 63 74 65 64  ginally detected
8160: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8170: 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73 73  //       process
8180: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
8190: 62 65 66 6f 72 65 20 63 68 61 6e 67 69 6e 67 20  before changing 
81a0: 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
81b0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
81c0: 20 20 20 20 20 73 74 72 69 6e 67 20 73 61 76 65       string save
81d0: 64 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  dProcessorArchit
81e0: 65 63 74 75 72 65 20 3d 20 70 72 6f 63 65 73 73  ecture = process
81f0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
8200: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
8210: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
8220: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
8230: 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74 68 61 74  TE: We know that
8240: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
8250: 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e 20 22  ms that return "
8260: 41 4d 44 36 34 22 20 61 73 0d 0a 20 20 20 20 20  AMD64" as..     
8270: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
8280: 20 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20    the processor 
8290: 61 72 63 68 69 74 65 63 74 75 72 65 20 61 72 65  architecture are
82a0: 20 61 63 74 75 61 6c 6c 79 20 61 20 73 75 70 65   actually a supe
82b0: 72 73 65 74 20 6f 66 0d 0a 20 20 20 20 20 20 20  rset of..       
82c0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
82d0: 74 68 65 20 22 78 38 36 22 20 70 72 6f 63 65 73  the "x86" proces
82e0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
82f0: 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 72 65 74  ; therefore, ret
8300: 75 72 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  urn..           
8310: 20 20 20 2f 2f 20 20 20 20 20 20 20 22 78 38 36     //       "x86
8320: 22 20 77 68 65 6e 20 74 68 65 20 70 6f 69 6e 74  " when the point
8330: 65 72 20 73 69 7a 65 20 69 73 20 33 32 2d 62 69  er size is 32-bi
8340: 74 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ts...           
8350: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
8360: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
8370: 63 68 69 74 65 63 74 75 72 65 20 3d 20 22 78 38  chitecture = "x8
8380: 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  6";....#if !NET_
8390: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
83a0: 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20  ACE_DETECTION.. 
83b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
83c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
83d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
83e0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
83f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
8400: 54 45 3a 20 53 68 6f 77 20 74 68 61 74 20 77 65  TE: Show that we
8410: 20 68 69 74 20 61 20 66 61 69 72 6c 79 20 75 6e   hit a fairly un
8420: 75 73 75 61 6c 20 73 69 74 75 61 74 69 6f 6e 20  usual situation 
8430: 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  (i.e...         
8440: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
8450: 20 20 74 68 65 20 22 77 72 6f 6e 67 22 20 70 72    the "wrong" pr
8460: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
8470: 74 75 72 65 20 77 61 73 20 64 65 74 65 63 74 65  ture was detecte
8480: 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d)...           
8490: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
84a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
84b0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
84c0: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84e0: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
84f0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
8500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8510: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
8520: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
8530: 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69   detected {0}-bi
8540: 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20  t pointer " +.. 
8550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8560: 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68 20       "size with 
8570: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
8580: 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20  ecture \"{1}\", 
8590: 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20  using " +..     
85a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85b0: 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68   "processor arch
85c0: 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22  itecture \"{2}\"
85d0: 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20   instead...",.. 
85e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85f0: 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65       IntPtr.Size
8600: 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c   * 8 /* bits */,
8610: 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
8620: 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20  rchitecture,..  
8630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8640: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
8650: 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20  hitecture)); /* 
8660: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
8670: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8680: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
8690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
86a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
86b0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
86c0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
86d0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
86e0: 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
86f0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
8700: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
8710: 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
8720: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8730: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
8740: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
8750: 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20  TE: On the .NET 
8760: 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
8770: 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  k, attempt to us
8780: 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  e the native..  
8790: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
87a0: 20 20 20 20 20 57 69 6e 33 32 20 41 50 49 20 66       Win32 API f
87b0: 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50 2f 49  unction (via P/I
87c0: 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61 6e 20  nvoke) that can 
87d0: 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20 20 20  provide us..    
87e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
87f0: 20 20 20 77 69 74 68 20 74 68 65 20 70 72 6f 63     with the proc
8800: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
8810: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
8820: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
8830: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
8840: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8850: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
8860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8870: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
8880: 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47 65  output of the Ge
8890: 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e 63  tSystemInfo func
88a0: 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20  tion will be..  
88b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
88c0: 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65 64 20  //       placed 
88d0: 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20  here.  Only the 
88e0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
88f0: 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a 20 20  ecture field..  
8900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8910: 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73 65 64  //       is used
8920: 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   by this method.
8930: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8940: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8950: 20 20 20 20 20 20 20 20 20 20 53 59 53 54 45 4d            SYSTEM
8960: 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f  _INFO systemInfo
8970: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
8980: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
8990: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
89a0: 4e 4f 54 45 3a 20 51 75 65 72 79 20 74 68 65 20  NOTE: Query the 
89b0: 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69  system informati
89c0: 6f 6e 20 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c  on via P/Invoke,
89d0: 20 74 68 75 73 0d 0a 20 20 20 20 20 20 20 20 20   thus..         
89e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
89f0: 20 20 66 69 6c 6c 69 6e 67 20 74 68 65 20 73 74    filling the st
8a00: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
8a10: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
8a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a30: 20 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 28    GetSystemInfo(
8a40: 6f 75 74 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b  out systemInfo);
8a50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8a60: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
8a70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
8a80: 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68 65 20  OTE: Return the 
8a90: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
8aa0: 65 63 74 75 72 65 20 76 61 6c 75 65 20 61 73 20  ecture value as 
8ab0: 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  a string...     
8ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
8ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8ae0: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
8af0: 69 74 65 63 74 75 72 65 20 3d 0d 0a 20 20 20 20  itecture =..    
8b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b10: 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72    systemInfo.wPr
8b20: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
8b30: 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  ure.ToString();.
8b40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
8b50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8b60: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
8b70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8b80: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
8b90: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
8ba0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
8bb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
8bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
8bd0: 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69 6c 75  NOTE: Upon failu
8be0: 72 65 2c 20 72 65 74 75 72 6e 20 61 6e 20 65 6d  re, return an em
8bf0: 70 74 79 20 73 74 72 69 6e 67 2e 20 20 54 68 69  pty string.  Thi
8c00: 73 20 77 69 6c 6c 20 70 72 65 76 65 6e 74 0d 0a  s will prevent..
8c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8c20: 20 20 20 20 20 20 20 74 68 65 20 63 61 6c 6c 69         the calli
8c30: 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 63  ng method from c
8c40: 6f 6e 73 69 64 65 72 69 6e 67 20 74 68 69 73 20  onsidering this 
8c50: 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61 0d 0a 20  method call a.. 
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
8c70: 20 20 20 20 20 20 22 66 61 69 6c 75 72 65 22 2e        "failure".
8c80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8c90: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
8ca0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
8cb0: 74 65 63 74 75 72 65 20 3d 20 53 74 72 69 6e 67  tecture = String
8cc0: 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 20  .Empty;..       
8cd0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
8ce0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
8cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8d30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
8d40: 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63  urn processorArc
8d50: 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20 20 20  hitecture;..    
8d60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
8d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8db0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
8dc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8dd0: 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65     /// Given the
8de0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
8df0: 74 65 63 74 75 72 65 2c 20 72 65 74 75 72 6e 73  tecture, returns
8e00: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
8e10: 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20   platform...    
8e20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8e30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
8e40: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73  am name="process
8e50: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e  orArchitecture">
8e60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
8e70: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
8e80: 65 63 74 75 72 65 20 74 6f 20 62 65 20 74 72 61  ecture to be tra
8e90: 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70 6c 61  nslated to a pla
8ea0: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
8eb0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
8ec0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
8ed0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
8ee0: 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  The platform nam
8ef0: 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  e for the specif
8f00: 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ied processor ar
8f10: 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52 2d 20  chitecture -OR- 
8f20: 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  null..      /// 
8f30: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
8f40: 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
8f50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
8f60: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
8f70: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
8f80: 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d  etPlatformName(.
8f90: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
8fa0: 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  g processorArchi
8fb0: 74 65 63 74 75 72 65 20 2f 2a 20 69 6e 20 2a 2f  tecture /* in */
8fc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
8fd0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8fe0: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
8ff0: 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
9000: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
9010: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
9020: 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50  hitecture = GetP
9030: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
9040: 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ture();....     
9050: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
9060: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72  IsNullOrEmpty(pr
9070: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
9080: 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ure))..         
9090: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
90a0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  ;....          l
90b0: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
90c0: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
90d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
90e0: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
90f0: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
9100: 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rms == null)..  
9110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9120: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
9130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
9140: 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d  ring platformNam
9150: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
9160: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
9170: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
9180: 74 66 6f 72 6d 73 2e 54 72 79 47 65 74 56 61 6c  tforms.TryGetVal
9190: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
91a0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
91b0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
91c0: 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61  , out platformNa
91d0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
91e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
91f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9200: 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20  platformName;.. 
9210: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9220: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
9230: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9240: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  null;..      }..
9250: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
9260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92a0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
92b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
92c0: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f  / Attempts to lo
92d0: 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ad the native SQ
92e0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 62 61 73  Lite library bas
92f0: 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66  ed on the specif
9300: 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  ied..      /// d
9310: 69 72 65 63 74 6f 72 79 20 61 6e 64 20 70 72 6f  irectory and pro
9320: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
9330: 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ure...      /// 
9340: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9350: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
9360: 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f 72 79  e="baseDirectory
9370: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
9380: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
9390: 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f   to use, null fo
93a0: 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 20 62  r default (the b
93b0: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66  ase directory of
93c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
93d0: 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
93e0: 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68  ion domain).  Th
93f0: 69 73 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f  is directory sho
9400: 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d  uld contain the.
9410: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65  .      /// proce
9420: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
9430: 65 20 73 70 65 63 69 66 69 63 20 73 75 62 2d 64  e specific sub-d
9440: 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20  irectories...   
9450: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
9460: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
9470: 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f  m name="processo
9480: 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d  rArchitecture">.
9490: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  .      /// The r
94a0: 65 71 75 65 73 74 65 64 20 70 72 6f 63 65 73 73  equested process
94b0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
94c0: 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c   null for defaul
94d0: 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  t (the..      //
94e0: 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  / processor arch
94f0: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
9500: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 29  current process)
9510: 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72 20 73  .  This caller s
9520: 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  hould..      ///
9530: 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73   almost always s
9540: 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20  pecify null for 
9550: 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 2e 0d  this parameter..
9560: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
9570: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
9580: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69  param name="nati
9590: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
95a0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
95b0: 65 20 63 61 6e 64 69 64 61 74 65 20 6e 61 74 69  e candidate nati
95c0: 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e  ve module file n
95d0: 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77 69 6c 6c  ame to load will
95e0: 20 62 65 20 73 74 6f 72 65 64 20 68 65 72 65 2c   be stored here,
95f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 6e  ..      /// if n
9600: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
9610: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9620: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
9630: 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75  name="nativeModu
9640: 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20 20 20 20  leHandle">..    
9650: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
9660: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 61   module handle a
9670: 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 4c 6f  s returned by Lo
9680: 61 64 4c 69 62 72 61 72 79 20 77 69 6c 6c 20 62  adLibrary will b
9690: 65 20 73 74 6f 72 65 64 0d 0a 20 20 20 20 20 20  e stored..      
96a0: 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20 6e 65 63  /// here, if nec
96b0: 65 73 73 61 72 79 2e 20 20 54 68 69 73 20 76 61  essary.  This va
96c0: 6c 75 65 20 77 69 6c 6c 20 62 65 20 49 6e 74 50  lue will be IntP
96d0: 74 72 2e 5a 65 72 6f 20 69 66 20 74 68 65 20 63  tr.Zero if the c
96e0: 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f  all to..      //
96f0: 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 66 61  / LoadLibrary fa
9700: 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ils...      /// 
9710: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
9720: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
9730: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
9740: 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  o if the native 
9750: 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f 61 64 65  module was loade
9760: 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 3b 20  d successfully; 
9770: 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20  otherwise,..    
9780: 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20    /// zero...   
9790: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
97a0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
97b0: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50 72 65   static bool Pre
97c0: 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a  LoadSQLiteDll(..
97d0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
97e0: 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
97f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
9800: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   */..          s
9810: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
9820: 72 63 68 69 74 65 63 74 75 72 65 2c 20 20 20 20  rchitecture,    
9830: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
9840: 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 6e      ref string n
9850: 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
9860: 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  ame, /* out */..
9870: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
9880: 74 50 74 72 20 6e 61 74 69 76 65 4d 6f 64 75 6c  tPtr nativeModul
9890: 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a 20 6f 75  eHandle    /* ou
98a0: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
98b0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
98c0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
98d0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
98e0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62 61  the specified ba
98f0: 73 65 20 64 69 72 65 63 74 6f 72 79 20 69 73 20  se directory is 
9900: 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20 64 65  null, use the de
9910: 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 20 20 20  fault..         
9920: 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20   //       (i.e. 
9930: 61 74 74 65 6d 70 74 20 74 6f 20 61 75 74 6f 6d  attempt to autom
9940: 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63 74 20  atically detect 
9950: 69 74 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  it)...          
9960: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
9970: 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 20   (baseDirectory 
9980: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
9990: 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65          baseDire
99a0: 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73 65 44  ctory = GetBaseD
99b0: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20  irectory();.... 
99c0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
99d0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
99e0: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
99f0: 71 75 65 72 79 20 74 68 65 20 62 61 73 65 20 64  query the base d
9a00: 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70 20 6e  irectory, stop n
9a10: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ow...          /
9a20: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
9a30: 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d  (baseDirectory =
9a40: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
9a50: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
9a60: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
9a70: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9a80: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
9a90: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
9aa0: 62 72 61 72 79 20 65 78 69 73 74 73 20 69 6e 20  brary exists in 
9ab0: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
9ac0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ry..          //
9ad0: 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20 73         itself, s
9ae0: 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
9af0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
9b00: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
9b10: 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65  e = FixUpDllFile
9b20: 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e  Name(Path.Combin
9b30: 65 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  e(baseDirectory,
9b40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9b50: 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d  SQLITE_DLL));...
9b60: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46  .          if (F
9b70: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
9b80: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
9b90: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
9ba0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
9bb0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
9bc0: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
9bd0: 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
9be0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69  r architecture i
9bf0: 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d  s null, use the.
9c00: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
9c10: 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20      default...  
9c20: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9c30: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
9c40: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
9c50: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
9c60: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
9c70: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
9c80: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
9c90: 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
9ca0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9cb0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
9cc0: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
9cd0: 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73  query the proces
9ce0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
9cf0: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
9d00: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9d10: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
9d20: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
9d30: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
9d40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
9d50: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
9d60: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9d70: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
9d80: 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
9d90: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
9da0: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
9db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
9dc0: 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69       library usi
9dd0: 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
9de0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
9df0: 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
9e00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  /..          fil
9e10: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
9e20: 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f  FileName(Path.Co
9e30: 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69  mbine(Path.Combi
9e40: 6e 65 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  ne(baseDirectory
9e50: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
9e60: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
9e70: 65 63 74 75 72 65 29 2c 20 53 51 4c 49 54 45 5f  ecture), SQLITE_
9e80: 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  DLL));....      
9e90: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
9ea0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
9eb0: 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61 73 65  e file name base
9ec0: 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65 73 73  d on the process
9ed0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
9ee0: 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  name..          
9ef0: 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c  // is not found,
9f00: 20 74 72 79 20 75 73 69 6e 67 20 74 68 65 20 61   try using the a
9f10: 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74 66 6f  ssociated platfo
9f20: 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
9f30: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
9f40: 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73    if (!File.Exis
9f50: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
9f60: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9f70: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9f80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
9f90: 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20  OTE: Attempt to 
9fa0: 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70 72  translate the pr
9fb0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
9fc0: 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20 20 20  ture to a..     
9fd0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9fe0: 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e    platform name.
9ff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a000: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
a010: 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72    string platfor
a020: 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61 74 66  mName = GetPlatf
a030: 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f  ormName(processo
a040: 72 41 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d  rArchitecture);.
a050: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a060: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
a070: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
a080: 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72 61 6e  e failed to tran
a090: 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74 66 6f  slate the platfo
a0a0: 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f  rm name, stop no
a0b0: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w...            
a0c0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a0d0: 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f 72 6d      if (platform
a0e0: 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Name == null).. 
a0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a100: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
a110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a120: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
a130: 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
a140: 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61   the full path a
a150: 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  nd file name for
a160: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
a170: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  te..            
a180: 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61    //       libra
a190: 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61  ry using the pla
a1a0: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
a1b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
a1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
a1d0: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
a1e0: 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f  FileName(Path.Co
a1f0: 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69  mbine(Path.Combi
a200: 6e 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ne(..           
a210: 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
a220: 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61  tory, platformNa
a230: 6d 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29  me), SQLITE_DLL)
a240: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
a250: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a260: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
a270: 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20  f the file does 
a280: 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20  not exist, skip 
a290: 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69  trying to load i
a2a0: 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t...            
a2b0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a2c0: 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
a2d0: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
a2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a2f0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
a300: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
a310: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
a320: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
a330: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
a340: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
a350: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
a360: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
a370: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a380: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a3a0: 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61  / NOTE: Show exa
a3b0: 63 74 6c 79 20 77 68 65 72 65 20 77 65 20 61 72  ctly where we ar
a3c0: 65 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64  e trying to load
a3d0: 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
a3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a3f0: 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c  /       SQLite l
a400: 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20  ibrary from...  
a410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a420: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
a430: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
a440: 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72  eLine(String.For
a450: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
a460: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
a470: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
a480: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
a490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
a4a0: 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
a4b0: 72 65 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79  re-loader is try
a4c0: 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69  ing to load nati
a4d0: 76 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ve " +..        
a4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53                "S
a4f0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22  QLite library \"
a500: 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e  {0}\"...", fileN
a510: 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ame)); /* throw 
a520: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
a530: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
a540: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
a550: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a560: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a570: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
a580: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
a590: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
a5a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
a5b0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
a5c0: 20 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64   Attempt to load
a5d0: 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72   the native libr
a5e0: 61 72 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20  ary.  This will 
a5f0: 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  either..        
a600: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
a610: 65 74 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61  eturn a valid na
a620: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
a630: 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74  le, return IntPt
a640: 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20  r.Zero,..       
a650: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
a660: 6f 72 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65  or throw an exce
a670: 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ption...        
a680: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
a690: 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
a6a0: 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 66  duleFileName = f
a6b0: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
a6c0: 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
a6d0: 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4c 6f 61  duleHandle = Loa
a6e0: 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61 6d  dLibrary(fileNam
a6f0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
a700: 20 20 20 20 20 72 65 74 75 72 6e 20 28 6e 61 74       return (nat
a710: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
a720: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  != IntPtr.Zero);
a730: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
a740: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
a750: 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
a760: 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63  OAD..          c
a770: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
a780: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
a790: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
a7a0: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
a7b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
a7c0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
a7d0: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
a7e0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
a7f0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
a800: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a810: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a830: 2f 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67  / NOTE: First, g
a840: 72 61 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e  rab the last Win
a850: 33 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e  32 error number.
a860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a870: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a880: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61            int la
a890: 73 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61  stError = Marsha
a8a0: 6c 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72  l.GetLastWin32Er
a8b0: 72 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ror(); /* throw 
a8c0: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
a8d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
a8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a8f0: 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 72   NOTE: Show wher
a900: 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 6c  e we failed to l
a910: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53  oad the native S
a920: 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20  QLite..         
a930: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
a940: 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 61    library from a
a950: 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57 69  long with the Wi
a960: 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20 61  n32 error code a
a970: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nd..            
a980: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65        //       e
a990: 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61  xception informa
a9a0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
a9b0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
a9d0: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
a9e0: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
a9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa00: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
aa10: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
aa20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa30: 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
aa40: 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
aa50: 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61  er failed to loa
aa60: 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20  d native " +..  
aa70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa80: 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72      "SQLite libr
aa90: 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28 67 65 74  ary \"{0}\" (get
aaa0: 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29  LastError = {1})
aab0: 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {2}",..       
aac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
aad0: 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72  ileName, lastErr
aae0: 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  or, e)); /* thro
aaf0: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
ab00: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
ab10: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
ab20: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
ab40: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
ab50: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
ab60: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
ab70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ab80: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
ab90: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
aba0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23  .#endif..      #
abb0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
abc0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
abd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
ac10: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
ac20: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
ac30: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
ac40: 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20  TE: On the .NET 
ac50: 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
ac60: 6b 2c 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e  k, the native in
ac70: 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d  terop assembly m
ac80: 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ust..    //     
ac90: 20 20 62 65 20 75 73 65 64 20 62 65 63 61 75 73    be used becaus
aca0: 65 20 69 74 20 70 72 6f 76 69 64 65 73 20 73 65  e it provides se
acb0: 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64  veral workaround
acc0: 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63  s to .NET Compac
acd0: 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  t..    //       
ace0: 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61  Framework limita
acf0: 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20  tions important 
ad00: 66 6f 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61  for proper opera
ad10: 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65  tion of the core
ad20: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53  ..    //       S
ad30: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
ad40: 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20  e functionality 
ad50: 28 65 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65  (e.g. being able
ad60: 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f   to bind..    //
ad70: 20 20 20 20 20 20 20 70 61 72 61 6d 65 74 65 72         parameter
ad80: 73 20 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c  s and handle col
ad90: 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79  umn values of ty
ada0: 70 65 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f  pes Int64 and Do
adb0: 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  uble)...    //..
adc0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
add0: 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45  st string SQLITE
ade0: 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49  _DLL = "SQLite.I
adf0: 6e 74 65 72 6f 70 2e 30 39 34 2e 64 6c 6c 22 3b  nterop.094.dll";
ae00: 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53  ..#elif SQLITE_S
ae10: 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d  TANDARD..    //.
ae20: 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74  .    // NOTE: Ot
ae30: 68 65 72 77 69 73 65 2c 20 69 66 20 74 68 65 20  herwise, if the 
ae40: 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
ae50: 6c 69 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c  library is enabl
ae60: 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20  ed, use it...   
ae70: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
ae80: 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
ae90: 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c  QLITE_DLL = "sql
aea0: 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53  ite3";..#elif US
aeb0: 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20  E_INTEROP_DLL.. 
aec0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20       //..    // 
aed0: 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
aee0: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
aef0: 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73  QLite interop as
af00: 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65  sembly is enable
af10: 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  d,..    //      
af20: 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f   use it...    //
af30: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
af40: 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
af50: 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65  TE_DLL = "SQLite
af60: 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a  .Interop.dll";..
af70: 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20  #else..    //.. 
af80: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61     // NOTE: Fina
af90: 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74  lly, assume that
afa0: 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20   the mixed-mode 
afb0: 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e  assembly is bein
afc0: 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  g used...    //.
afd0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
afe0: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
aff0: 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e  E_DLL = "System.
b000: 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22  Data.SQLite.dll"
b010: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
b020: 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e   // This section
b030: 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61   uses interop ca
b040: 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65  lls that also fe
b050: 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20  tch text length 
b060: 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76  to optimize conv
b070: 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20  ersion...    // 
b080: 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73  When using the s
b090: 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20  tandard dll, we 
b0a0: 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73  can replace thes
b0b0: 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72  e calls with nor
b0c0: 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73  mal sqlite calls
b0d0: 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20   and..    // do 
b0e0: 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76  unoptimized conv
b0f0: 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20  ersions instead 
b100: 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20  afterwards..    
b110: 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20  #region interop 
b120: 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68  added textlength
b130: 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53   calls....#if !S
b140: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
b150: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b160: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
b170: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b180: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
b190: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
b1a0: 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74  rameter_name_int
b1b0: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
b1c0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
b1d0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
b1e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b1f0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
b200: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b210: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
b220: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
b230: 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  base_name_intero
b240: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
b250: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
b260: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
b270: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b280: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
b290: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
b2a0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
b2b0: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
b2c0: 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
b2d0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
b2e0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
b2f0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
b300: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b310: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
b320: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b330: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
b340: 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
b350: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
b360: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
b370: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
b380: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b390: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
b3a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b3b0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
b3c0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
b3d0: 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72  decltype16_inter
b3e0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
b3f0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
b400: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
b410: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b420: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
b430: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b440: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
b450: 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69  e3_column_name_i
b460: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
b470: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
b480: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
b490: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b4a0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
b4b0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b4c0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
b4d0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
b4e0: 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
b4f0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
b500: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
b510: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
b520: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b530: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
b540: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
b550: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
b560: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f  umn_origin_name_
b570: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
b580: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
b590: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
b5a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b5b0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
b5c0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b5d0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
b5e0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
b5f0: 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74  rigin_name16_int
b600: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
b610: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
b620: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
b630: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b640: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
b650: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b660: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
b670: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
b680: 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  e_name_interop(I
b690: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
b6a0: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
b6b0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
b6c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b6d0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
b6e0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b6f0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
b700: 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
b710: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
b720: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
b730: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
b740: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
b750: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
b760: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b770: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b780: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
b790: 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  n_text_interop(I
b7a0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
b7b0: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
b7c0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
b7d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b7e0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
b7f0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b800: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
b810: 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74  olumn_text16_int
b820: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
b830: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
b840: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
b850: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b860: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
b870: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b880: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
b890: 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65  ite3_errmsg_inte
b8a0: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 6f  rop(IntPtr db, o
b8b0: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
b8c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b8d0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
b8e0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b8f0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
b900: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
b910: 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28  prepare_interop(
b920: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
b930: 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
b940: 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73  es, out IntPtr s
b950: 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  tmt, out IntPtr 
b960: 70 74 72 52 65 6d 61 69 6e 2c 20 6f 75 74 20 69  ptrRemain, out i
b970: 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a  nt nRemain);....
b980: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b990: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
b9a0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b9b0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
b9c0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
b9d0: 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
b9e0: 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e  adata_interop(In
b9f0: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
ba00: 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
ba10: 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
ba20: 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50  olName, out IntP
ba30: 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
ba40: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f  out IntPtr ptrCo
ba50: 6c 6c 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e  llSeq, out int n
ba60: 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20  otNull, out int 
ba70: 70 72 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20  primaryKey, out 
ba80: 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 6f 75 74  int autoInc, out
ba90: 20 69 6e 74 20 64 74 4c 65 6e 2c 20 6f 75 74 20   int dtLen, out 
baa0: 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20  int csLen);.... 
bab0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
bac0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
bad0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
bae0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
baf0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
bb00: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
bb10: 70 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  p, out int len);
bb20: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
bb30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
bb40: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
bb50: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
bb60: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
bb70: 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
bb80: 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e  IntPtr p, out in
bb90: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
bba0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
bbb0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
bbc0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
bbd0: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d  rn int sqlite3_m
bbe0: 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72  alloc_size_inter
bbf0: 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  op(IntPtr p);...
bc00: 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47  .#if INTEROP_LOG
bc10: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bc20: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
bc30: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bc40: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
bc50: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
bc60: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74  3_config_log_int
bc70: 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  erop();..#endif.
bc80: 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
bc90: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
bca0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
bcb0: 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66  ..    // These f
bcc0: 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69  unctions add exi
bcd0: 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c  sting functional
bce0: 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51  ity on top of SQ
bcf0: 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72 65  Lite and require
bd00: 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74   a little effort
bd10: 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20   to..    // get 
bd20: 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69  working when usi
bd30: 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  ng the standard 
bd40: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
bd50: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74  .    #region int
bd60: 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74  erop added funct
bd70: 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20  ionality....#if 
bd80: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
bd90: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
bda0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
bdb0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
bdc0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
bdd0: 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76 65  tr interop_libve
bde0: 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  rsion();....    
bdf0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
be00: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
be10: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
be20: 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72  ern IntPtr inter
be30: 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  op_sourceid();..
be40: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
be50: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
be60: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
be70: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69 6e  ic extern int in
be80: 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
be90: 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20  ion_used(IntPtr 
bea0: 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  zOptName);....  
beb0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
bec0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
bed0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
bee0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74  xtern IntPtr int
bef0: 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  erop_compileopti
bf00: 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a  on_get(int N);..
bf10: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bf20: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
bf30: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bf40: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
bf50: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
bf60: 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28  3_close_interop(
bf70: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
bf80: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
bf90: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
bfa0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
bfb0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
bfc0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
bfd0: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69  reate_function_i
bfe0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
bff0: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
c000: 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
c010: 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
c020: 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
c030: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
c040: 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
c050: 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
c060: 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e  lback ffinal, in
c070: 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d  t needCollSeq);.
c080: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
c090: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
c0a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c0b0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
c0c0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
c0d0: 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65  e3_finalize_inte
c0e0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
c0f0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
c100: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c110: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c120: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
c130: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
c140: 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
c150: 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sh_interop(IntPt
c160: 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  r backup);....  
c170: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c180: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
c190: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c1a0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
c1b0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
c1c0: 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  en_interop(byte[
c1d0: 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
c1e0: 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
c1f0: 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75 74 20 49  num flags, out I
c200: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
c210: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c220: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
c230: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c240: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
c250: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
c260: 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74  en16_interop(byt
c270: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
c280: 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  , SQLiteOpenFlag
c290: 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75 74  sEnum flags, out
c2a0: 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
c2b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c2c0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
c2d0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c2e0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
c2f0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
c300: 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e  reset_interop(In
c310: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
c320: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c330: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
c340: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
c350: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
c360: 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72  e3_changes_inter
c370: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
c380: 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49  #endif..// !SQLI
c390: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
c3a0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
c3b0: 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e  .    // The stan
c3c0: 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71  dard api call eq
c3d0: 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65  uivalents of the
c3e0: 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63   above interop c
c3f0: 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
c400: 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73 69  n standard versi
c410: 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66  ons of interop f
c420: 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20  unctions....#if 
c430: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
c440: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c450: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c460: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c470: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c480: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c490: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c4a0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c4b0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c4c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c4d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c4e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c4f0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
c500: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
c510: 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
c520: 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45  .#if !INTEROP_LE
c530: 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20  GACY_CLOSE..#if 
c540: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c550: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c560: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c570: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c580: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c590: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c5a0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
c5b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c5c0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
c5d0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c5e0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
c5f0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
c600: 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e  ite3_close_v2(In
c610: 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37  tPtr db); /* 3.7
c620: 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d  .14+ */..#endif.
c630: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c640: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c650: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c660: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c670: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c680: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c690: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c6a0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c6b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c6c0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c6d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c6e0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
c6f0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
c700: 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50  te_function(IntP
c710: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
c720: 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  rName, int nArgs
c730: 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
c740: 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
c750: 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
c760: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
c770: 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e  fstep, SQLiteFin
c780: 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61  alCallback ffina
c790: 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  l);....#if !PLAT
c7a0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c7b0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c7c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c7d0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c7e0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c7f0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c800: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c810: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c820: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c830: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c840: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
c850: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
c860: 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
c870: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
c880: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c890: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c8a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c8b0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c8c0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c8d0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c8e0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c8f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c900: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c910: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c920: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
c930: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
c940: 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
c950: 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
c960: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c970: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c980: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c990: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c9a0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c9b0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c9c0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c9d0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c9e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c9f0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
ca00: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ca10: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
ca20: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73  Code sqlite3_res
ca30: 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  et(IntPtr stmt);
ca40: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
ca50: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ca60: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
ca70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
ca80: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ca90: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
caa0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
cab0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
cac0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
cad0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
cae0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
caf0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
cb00: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
cb10: 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  er_name(IntPtr s
cb20: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
cb30: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
cb40: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
cb50: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
cb60: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
cb70: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
cb80: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
cb90: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
cba0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
cbb0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
cbc0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
cbd0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
cbe0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
cbf0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
cc00: 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ase_name(IntPtr 
cc10: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
cc20: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
cc30: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
cc40: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
cc50: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cc60: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cc70: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cc80: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
cc90: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cca0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ccb0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
ccc0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ccd0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
cce0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
ccf0: 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  base_name16(IntP
cd00: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
cd10: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
cd20: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
cd30: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
cd40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cd50: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
cd60: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
cd70: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
cd80: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
cd90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cda0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
cdb0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
cdc0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
cdd0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
cde0: 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20 73  ecltype(IntPtr s
cdf0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
ce00: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
ce10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ce20: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
ce30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
ce40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ce50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
ce60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
ce70: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
ce80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ce90: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
cea0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ceb0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
cec0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
ced0: 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ype16(IntPtr stm
cee0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
cef0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
cf00: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
cf10: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cf20: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
cf30: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
cf40: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
cf50: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
cf60: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
cf70: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
cf80: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
cf90: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
cfa0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
cfb0: 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e  3_column_name(In
cfc0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
cfd0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
cfe0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
cff0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d000: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d010: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d020: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d030: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d040: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d050: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d060: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d070: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d080: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
d090: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
d0a0: 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
d0b0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
d0c0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d0d0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d0e0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d0f0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d100: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d110: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d120: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d130: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d140: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d150: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d160: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d170: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
d180: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
d190: 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  n_name(IntPtr st
d1a0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
d1b0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
d1c0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
d1d0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
d1e0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
d1f0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
d200: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
d210: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
d220: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
d230: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d240: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
d250: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
d260: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
d270: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
d280: 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
d290: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
d2a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d2b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d2c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d2d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d2e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d2f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d300: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d310: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d320: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d330: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d340: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d350: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
d360: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65  te3_column_table
d370: 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
d380: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
d390: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d3a0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d3b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d3c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
d3d0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
d3e0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d3f0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
d400: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
d410: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d420: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
d430: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d440: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
d450: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
d460: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
d470: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
d480: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d490: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d4a0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d4b0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
d4c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
d4d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d4e0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
d4f0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
d500: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d510: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
d520: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d530: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
d540: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e  3_column_text(In
d550: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
d560: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
d570: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d580: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d590: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d5a0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d5b0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d5c0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d5d0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d5e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d5f0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d600: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d610: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
d620: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
d630: 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
d640: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
d650: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
d660: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d670: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d680: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d690: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d6a0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d6b0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d6c0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d6d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d6e0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d6f0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d700: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
d710: 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50 74  te3_errmsg(IntPt
d720: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
d730: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d740: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d750: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d760: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d770: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d780: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d790: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d7a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d7b0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d7c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d7d0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
d7e0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
d7f0: 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74  e3_prepare(IntPt
d800: 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71  r db, IntPtr pSq
d810: 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f  l, int nBytes, o
d820: 75 74 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ut IntPtr stmt, 
d830: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 52 65  out IntPtr ptrRe
d840: 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55 53  main);....#if US
d850: 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23 69  E_PREPARE_V2..#i
d860: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d870: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d880: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d890: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
d8a0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
d8b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
d8c0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
d8d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d8e0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
d8f0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d900: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
d910: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
d920: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
d930: 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  2(IntPtr db, Int
d940: 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
d950: 79 74 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72  ytes, out IntPtr
d960: 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74   stmt, out IntPt
d970: 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 23  r ptrRemain);..#
d980: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
d990: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
d9a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
d9b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d9c0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
d9d0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
d9e0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
d9f0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
da00: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
da10: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
da20: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
da30: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
da40: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
da50: 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
da60: 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20 64  etadata(IntPtr d
da70: 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
da80: 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
da90: 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
daa0: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72  , out IntPtr ptr
dab0: 44 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e  DataType, out In
dac0: 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
dad0: 20 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   out int notNull
dae0: 2c 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72  , out int primar
daf0: 79 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75  yKey, out int au
db00: 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21  toInc);....#if !
db10: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
db20: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
db30: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
db40: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
db50: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
db60: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
db70: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
db80: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
db90: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
dba0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
dbb0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
dbc0: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
dbd0: 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b  _text(IntPtr p);
dbe0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
dbf0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
dc00: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
dc10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
dc20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
dc30: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
dc40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
dc50: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
dc60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
dc70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
dc80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
dc90: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
dca0: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
dcb0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
dcc0: 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53 51  endif..    // SQ
dcd0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
dce0: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
dcf0: 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
dd00: 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75  functions are cu
dd10: 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f  stom and have no
dd20: 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e   equivalent stan
dd30: 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74  dard library met
dd40: 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c  hod...    // All
dd50: 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69   of them are "ni
dd60: 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64  ce to haves" and
dd70: 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79   not necessarily
dd80: 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22   "need to haves"
dd90: 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e  ...    #region n
dda0: 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
ddb0: 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a  ndard method....
ddc0: 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
ddd0: 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
dde0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ddf0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
de00: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
de10: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
de20: 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f 69  ontext_collseq_i
de30: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
de40: 6e 74 65 78 74 2c 20 6f 75 74 20 69 6e 74 20 74  ntext, out int t
de50: 79 70 65 2c 20 6f 75 74 20 69 6e 74 20 65 6e 63  ype, out int enc
de60: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
de70: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
de80: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
de90: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
dea0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
deb0: 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63  qlite3_context_c
dec0: 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65 72  ollcompare_inter
ded0: 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
dee0: 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e  t, byte[] p1, in
def0: 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20  t p1len, byte[] 
df00: 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d  p2, int p2len);.
df10: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
df20: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
df30: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
df40: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
df50: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
df60: 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 5f  e3_cursor_rowid_
df70: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
df80: 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72 2c  tmt, int cursor,
df90: 20 6f 75 74 20 6c 6f 6e 67 20 72 6f 77 69 64 29   out long rowid)
dfa0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
dfb0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
dfc0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
dfd0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
dfe0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
dff0: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d  ite3_index_colum
e000: 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49  n_info_interop(I
e010: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
e020: 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d   catalog, byte[]
e030: 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65   IndexName, byte
e040: 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 6f  [] ColumnName, o
e050: 75 74 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72  ut int sortOrder
e060: 2c 20 6f 75 74 20 69 6e 74 20 6f 6e 45 72 72 6f  , out int onErro
e070: 72 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 43 6f  r, out IntPtr Co
e080: 6c 6c 61 74 69 6f 6e 2c 20 6f 75 74 20 69 6e 74  llation, out int
e090: 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   colllen);....  
e0a0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e0b0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
e0c0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e0d0: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
e0e0: 65 33 5f 72 65 73 65 74 61 6c 6c 5f 69 6e 74 65  e3_resetall_inte
e0f0: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
e100: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
e110: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e120: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
e130: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
e140: 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72  qlite3_table_cur
e150: 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  sor_interop(IntP
e160: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c  tr stmt, int db,
e170: 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61   int tableRootPa
e180: 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a  ge);....#endif..
e190: 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  // !SQLITE_STAND
e1a0: 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
e1b0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
e1c0: 53 74 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c  Standard API cal
e1d0: 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73  ls global across
e1e0: 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72   versions.  Ther
e1f0: 65 20 61 72 65 20 61 20 66 65 77 20 69 6e 73 74  e are a few inst
e200: 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70  ances of interop
e210: 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73   calls..    // s
e220: 63 61 74 74 65 72 65 64 20 69 6e 20 68 65 72 65  cattered in here
e230: 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20 6f  , but they are o
e240: 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65 6e 20  nly active when 
e250: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e260: 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63  FRAMEWORK is dec
e270: 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67  lared...    #reg
e280: 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c  ion standard sql
e290: 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d  ite api calls...
e2a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
e2b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e2c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e2d0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
e2e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
e2f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e300: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
e310: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e320: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
e330: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
e340: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
e350: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
e360: 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a  _libversion();..
e370: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e380: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e390: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e3a0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
e3b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
e3c0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e3d0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
e3e0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
e3f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e400: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
e410: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e420: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c  rn int sqlite3_l
e430: 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72  ibversion_number
e440: 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
e450: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
e460: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
e470: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e480: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
e490: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
e4a0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
e4b0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
e4c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e4d0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
e4e0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e4f0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
e500: 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28  qlite3_sourceid(
e510: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
e520: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e530: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
e540: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
e550: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e560: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
e570: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
e580: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
e590: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e5a0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
e5b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e5c0: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
e5d0: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
e5e0: 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70  _used(IntPtr zOp
e5f0: 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  tName);....#if !
e600: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e610: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
e620: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e630: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
e640: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
e650: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
e660: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
e670: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e680: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
e690: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e6a0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
e6b0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69  tr sqlite3_compi
e6c0: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74  leoption_get(int
e6d0: 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   N);....#if !PLA
e6e0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e6f0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e700: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e710: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e720: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e730: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e740: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e750: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e760: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e770: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e780: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
e790: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
e7a0: 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74  _enable_load_ext
e7b0: 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ension(..       
e7c0: 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20   IntPtr db, int 
e7d0: 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20  enable);....#if 
e7e0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
e7f0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
e800: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e810: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
e820: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
e830: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
e840: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
e850: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e860: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
e870: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
e880: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
e890: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
e8a0: 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  ite3_load_extens
e8b0: 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ion(..        In
e8c0: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
e8d0: 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b 5d  fileName, byte[]
e8e0: 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20 49   procName, ref I
e8f0: 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b 0d 0a  ntPtr pError);..
e900: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e910: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e920: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e930: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
e940: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
e950: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e960: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
e970: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
e980: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e990: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
e9a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e9b0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
e9c0: 64 65 20 73 71 6c 69 74 65 33 5f 6f 76 65 72 6c  de sqlite3_overl
e9d0: 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74  oad_function(Int
e9e0: 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a  Ptr db, IntPtr z
e9f0: 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 29  Name, int nArgs)
ea00: 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53  ;....#if WINDOWS
ea10: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
ea20: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
ea30: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ea40: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
ea50: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
ea60: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ea70: 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
ea80: 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
ea90: 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
eaa0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
eab0: 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
eac0: 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
ead0: 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
eae0: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
eaf0: 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
eb00: 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74  win32_set_direct
eb10: 6f 72 79 22 20 53 51 4c 69 74 65 20 63 6f 72 65  ory" SQLite core
eb20: 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f   library functio
eb30: 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20  n is..    //    
eb40: 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65     only supporte
eb50: 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d 0a 20  d on Windows... 
eb60: 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
eb70: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
eb80: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
eb90: 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f  e sqlite3_win32_
eba0: 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28 75 69  set_directory(ui
ebb0: 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e 67 20  nt type, string 
ebc0: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
ebd0: 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45 3a 20 53  DEBUG // NOTE: S
ebe0: 68 6f 75 6c 64 20 62 65 20 22 57 49 4e 33 32 48  hould be "WIN32H
ebf0: 45 41 50 20 26 26 20 21 4d 45 4d 44 45 42 55 47  EAP && !MEMDEBUG
ec00: 22 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  "..#if !PLATFORM
ec10: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
ec20: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
ec30: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
ec40: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
ec50: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
ec60: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
ec70: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
ec80: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ec90: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d  .#endif..    //.
eca0: 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
ecb0: 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  e "sqlite3_win32
ecc0: 5f 72 65 73 65 74 5f 68 65 61 70 22 20 53 51 4c  _reset_heap" SQL
ecd0: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
ece0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20   function is..  
ecf0: 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20    //       only 
ed00: 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e  supported on Win
ed10: 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20 57 69  dows when the Wi
ed20: 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63  n32 native alloc
ed30: 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20  ator is in..    
ed40: 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28 69 2e  //       use (i.
ed50: 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69  e. by default, i
ed60: 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c  n "Release" buil
ed70: 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
ed80: 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f  a.SQLite..    //
ed90: 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42         only).  B
eda0: 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44  y default, in "D
edb0: 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20  ebug" builds of 
edc0: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
edd0: 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  te, the..    // 
ede0: 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61        MEMDEBUG a
edf0: 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64  llocator is used
ee00: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
ee10: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ee20: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
ee30: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69  rCode sqlite3_wi
ee40: 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 28 29  n32_reset_heap()
ee50: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
ee60: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ee70: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ee80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
ee90: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
eea0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
eeb0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
eec0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
eed0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
eee0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f  ]..#endif..    /
eef0: 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
ef00: 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e  The "sqlite3_win
ef10: 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 22  32_compact_heap"
ef20: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
ef30: 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73  rary function is
ef40: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f  ..    //       o
ef50: 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e  nly supported on
ef60: 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68   Windows when th
ef70: 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61  e Win32 native a
ef80: 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a  llocator is in..
ef90: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65      //       use
efa0: 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c   (i.e. by defaul
efb0: 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20  t, in "Release" 
efc0: 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d  builds of System
efd0: 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20  .Data.SQLite..  
efe0: 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29    //       only)
eff0: 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69  .  By default, i
f000: 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 73  n "Debug" builds
f010: 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e   of System.Data.
f020: 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20  SQLite, the..   
f030: 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42   //       MEMDEB
f040: 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20  UG allocator is 
f050: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  used...    //.. 
f060: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f070: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
f080: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
f090: 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f  3_win32_compact_
f0a0: 68 65 61 70 28 72 65 66 20 75 69 6e 74 20 6c 61  heap(ref uint la
f0b0: 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  rgest);..#endif.
f0c0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
f0d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f0e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f0f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f100: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
f110: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
f120: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f130: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
f140: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f150: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
f160: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f170: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
f180: 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  tr sqlite3_mallo
f190: 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66  c(int n);....#if
f1a0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f1b0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f1c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f1d0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
f1e0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
f1f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
f200: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
f210: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f220: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
f230: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
f240: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
f250: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 65 61  tPtr sqlite3_rea
f260: 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70 2c 20 69  lloc(IntPtr p, i
f270: 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nt n);....#if !P
f280: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f290: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
f2a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f2b0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
f2c0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
f2d0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
f2e0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
f2f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f300: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
f310: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
f320: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
f330: 73 71 6c 69 74 65 33 5f 66 72 65 65 28 49 6e 74  sqlite3_free(Int
f340: 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
f350: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f360: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f370: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f380: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
f390: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
f3a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f3b0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
f3c0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f3d0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
f3e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f3f0: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
f400: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
f410: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65  te3_open_v2(byte
f420: 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c  [] utf8Filename,
f430: 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 2c 20   out IntPtr db, 
f440: 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
f450: 6e 75 6d 20 66 6c 61 67 73 2c 20 49 6e 74 50 74  num flags, IntPt
f460: 72 20 76 66 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  r vfs);....#if !
f470: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f480: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f490: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f4a0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
f4b0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
f4c0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f4d0: 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
f4e0: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
f4f0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
f500: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f510: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
f520: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
f530: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
f540: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f550: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
f560: 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  e sqlite3_open16
f570: 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
f580: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29  , out IntPtr db)
f590: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
f5a0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f5b0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
f5c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
f5d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f5e0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
f5f0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
f600: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
f610: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f620: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
f630: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f640: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
f650: 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74  e3_interrupt(Int
f660: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
f670: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
f680: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
f690: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f6a0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
f6b0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
f6c0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
f6d0: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
f6e0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f6f0: 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61   long sqlite3_la
f700: 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
f710: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e  IntPtr db);..#en
f720: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
f730: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f740: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
f750: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f760: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
f770: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
f780: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
f790: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
f7a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f7b0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
f7c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
f7d0: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
f7e0: 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50  te3_changes(IntP
f7f0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
f800: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f810: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f820: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f830: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
f840: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
f850: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f860: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
f870: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f880: 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
f890: 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e  ory_used();..#en
f8a0: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
f8b0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f8c0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
f8d0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f8e0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
f8f0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
f900: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
f910: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f920: 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
f930: 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
f940: 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72 65  highwater(int re
f950: 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69  setFlag);..#endi
f960: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
f970: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f980: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
f990: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
f9a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f9b0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
f9c0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
f9d0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
f9e0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f9f0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
fa00: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
fa10: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
fa20: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68  rCode sqlite3_sh
fa30: 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66  utdown();....#if
fa40: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
fa50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
fa60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
fa70: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
fa80: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
fa90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
faa0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
fab0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
fac0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
fad0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
fae0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
faf0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
fb00: 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
fb10: 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  ut(IntPtr db, in
fb20: 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  t ms);....#if !P
fb30: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
fb40: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
fb50: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
fb60: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
fb70: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
fb80: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
fb90: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
fba0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
fbb0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
fbc0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
fbd0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
fbe0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
fbf0: 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74  e3_bind_blob(Int
fc00: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
fc10: 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75  dex, Byte[] valu
fc20: 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e  e, int nSize, In
fc30: 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29  tPtr nTransient)
fc40: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
fc50: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
fc60: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
fc70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
fc80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
fc90: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
fca0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
fcb0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
fcc0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
fcd0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
fce0: 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e  3_bind_double(In
fcf0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
fd00: 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c  ndex, double val
fd10: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
fd20: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
fd30: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
fd40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
fd50: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
fd60: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
fd70: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
fd80: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
fd90: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
fda0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
fdb0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
fdc0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
fdd0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
fde0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
fdf0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
fe00: 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61  nt index, int va
fe10: 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d  lue);....    //.
fe20: 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
fe30: 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63  is really just c
fe40: 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69  alls "sqlite3_bi
fe50: 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72  nd_int"; however
fe60: 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
fe70: 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
fe80: 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
fe90: 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
fea0: 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67  d (32-bit) integ
feb0: 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
fec0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
fed0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
fee0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
fef0: 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
ff00: 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
ff10: 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67  nd_int", Calling
ff20: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
ff30: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
ff40: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
ff50: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ff60: 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
ff70: 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
ff80: 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e  bind_int")]..#en
ff90: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
ffa0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
ffb0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
ffc0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
ffd0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
ffe0: 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76  nt index, uint v
fff0: 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
10000 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10010 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10020 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10030 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10040 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10050 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10060 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
10070 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
10080 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
10090 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
100a0 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
100b0 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76  nt index, long v
100c0 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
100d0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
100e0 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
100f0 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
10100 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
10110 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20  4"; however, it 
10120 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  has the..    // 
10130 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79        correct ty
10140 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72  pe signature for
10150 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e   an unsigned lon
10160 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67  g (64-bit) integ
10170 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
10180 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10190 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
101a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
101b0 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
101c0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
101d0 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69  nd_int64", Calli
101e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
101f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10200 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
10210 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10220 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
10230 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
10240 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20  d_uint64(IntPtr 
10250 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
10260 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
10270 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
10280 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10290 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
102a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
102b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
102c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
102d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
102e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
102f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10300 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10310 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10320 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10330 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
10340 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74  e3_bind_null(Int
10350 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
10360 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
10370 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10380 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10390 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
103a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
103b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
103c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
103d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
103e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
103f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10400 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10410 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
10420 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
10430 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50  3_bind_text(IntP
10440 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
10450 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  ex, byte[] value
10460 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
10470 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
10480 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10490 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
104a0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
104b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
104c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
104d0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
104e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
104f0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
10500 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10510 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
10520 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10530 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
10540 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63  bind_parameter_c
10550 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
10560 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10570 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10580 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10590 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
105a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
105b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
105c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
105d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
105e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
105f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10600 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10610 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
10620 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
10630 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73  r_index(IntPtr s
10640 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e  tmt, byte[] strN
10650 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
10660 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10670 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10680 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10690 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
106a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
106b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
106c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
106d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
106e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
106f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10700 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
10710 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
10720 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
10730 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10740 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10750 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10760 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10770 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10780 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10790 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
107a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
107b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
107c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
107d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
107e0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
107f0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65  Code sqlite3_ste
10800 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
10810 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10820 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10830 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10840 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10850 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10860 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10870 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
10880 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10890 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73   extern double s
108a0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
108b0 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74  uble(IntPtr stmt
108c0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23  , int index);..#
108d0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
108e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
108f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10900 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10910 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10920 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10930 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10940 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10950 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10960 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10970 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10980 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
10990 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74  lite3_column_int
109a0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
109b0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
109c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
109d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
109e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
109f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10a00 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10a10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10a20 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
10a30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10a40 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63  n long sqlite3_c
10a50 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50  olumn_int64(IntP
10a60 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
10a70 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ex);..#endif....
10a80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10a90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10aa0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10ab0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10ac0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10ad0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10ae0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
10af0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10b00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
10b10 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
10b20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10b30 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
10b40 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50  column_blob(IntP
10b50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
10b60 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
10b70 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10b80 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
10b90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10ba0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
10bb0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10bc0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10bd0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
10be0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10bf0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10c00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10c10 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
10c20 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65  ite3_column_byte
10c30 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  s(IntPtr stmt, i
10c40 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
10c50 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10c60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10c70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10c80 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
10c90 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10ca0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10cb0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10cc0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10cd0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10ce0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10cf0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
10d00 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
10d10 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72  n_bytes16(IntPtr
10d20 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
10d30 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10d40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10d50 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10d60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10d70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10d80 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10d90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10da0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
10db0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10dc0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10dd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10de0 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e  extern TypeAffin
10df0 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ity sqlite3_colu
10e00 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73  mn_type(IntPtr s
10e10 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
10e20 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10e30 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10e40 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10e50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10e60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10e70 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10e80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10e90 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
10ea0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10eb0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
10ec0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10ed0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
10ee0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65  Code sqlite3_cre
10ef0 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e  ate_collation(In
10f00 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
10f10 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79  strName, 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 6f 6c 6c 61 74 69  r, SQLiteCollati
10f40 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66  on func);....#if
10f50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10f60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10f70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10f80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10f90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10fa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10fb0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10fc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10fd0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10fe0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10ff0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
11000 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67  t sqlite3_aggreg
11010 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72  ate_count(IntPtr
11020 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
11030 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11040 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11050 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11060 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11070 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11080 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11090 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
110a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
110b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
110c0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
110d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
110e0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
110f0 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  lue_blob(IntPtr 
11100 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
11110 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11120 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11130 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11140 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11150 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11160 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11170 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11180 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11190 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
111a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
111b0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
111c0 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28  te3_value_bytes(
111d0 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
111e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
111f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11200 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11210 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11220 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11230 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11240 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11250 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11260 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11270 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11280 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
11290 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt sqlite3_value
112a0 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20  _bytes16(IntPtr 
112b0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
112c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
112d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
112e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
112f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11300 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11310 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11320 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11330 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62  atic extern doub
11340 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  le sqlite3_value
11350 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70  _double(IntPtr p
11360 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
11370 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11380 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11390 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
113a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
113b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
113c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
113d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
113e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
113f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11400 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11410 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
11420 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  nt sqlite3_value
11430 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d  _int(IntPtr p);.
11440 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11450 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11460 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11470 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11480 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
11490 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
114a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
114b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
114c0 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
114d0 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
114e0 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e  (IntPtr p);..#en
114f0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
11500 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11510 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11520 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11530 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11540 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11550 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11560 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11570 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11580 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11590 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
115a0 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69   extern TypeAffi
115b0 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c  nity sqlite3_val
115c0 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70  ue_type(IntPtr p
115d0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
115e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
115f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11600 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11610 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11620 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11630 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11640 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
11650 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11660 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11670 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11680 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
11690 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28  te3_result_blob(
116a0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
116b0 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  byte[] value, in
116c0 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20  t nSize, IntPtr 
116d0 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
116e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
116f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11700 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11710 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11720 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11730 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11740 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
11750 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11760 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
11770 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28  3_result_double(
11780 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
11790 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
117a0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
117b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
117c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
117d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
117e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
117f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
11800 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
11810 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
11820 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11830 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
11840 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11850 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
11860 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
11870 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74  rror(IntPtr cont
11880 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45  ext, byte[] strE
11890 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a  rr, int nLen);..
118a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
118b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
118c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
118d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
118e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
118f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11900 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
11910 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
11920 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
11930 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
11940 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11950 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
11960 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64  result_error_cod
11970 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
11980 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  , SQLiteErrorCod
11990 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  e value);....#if
119a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
119b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
119c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
119d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
119e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
119f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
11a00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
11a10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11a20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11a30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11a40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
11a50 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
11a60 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49  t_error_toobig(I
11a70 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
11a80 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11a90 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11aa0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11ab0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11ac0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
11ad0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11ae0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11af0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
11b00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11b10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11b20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11b30 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
11b40 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f  _result_error_no
11b50 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  mem(IntPtr conte
11b60 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  xt);....#if !PLA
11b70 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11b80 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11b90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11ba0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11bb0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11bc0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11bd0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11be0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11bf0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
11c00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11c10 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
11c20 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c  lite3_result_val
11c30 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ue(IntPtr contex
11c40 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29  t, IntPtr value)
11c50 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11c60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11c70 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11c80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11c90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11ca0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11cb0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11cc0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11cd0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11ce0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11cf0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11d00 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
11d10 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c  e3_result_zerobl
11d20 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ob(IntPtr contex
11d30 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d  t, int nLen);...
11d40 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11d50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11d60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11d70 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11d80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11d90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11da0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
11db0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11dc0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
11dd0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
11de0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11df0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
11e00 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72  esult_int(IntPtr
11e10 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61   context, int va
11e20 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
11e30 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11e40 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11e50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11e60 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11e70 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11e80 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11e90 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
11ea0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
11eb0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
11ec0 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63  t_int64(IntPtr c
11ed0 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c  ontext, long val
11ee0 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
11ef0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11f00 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11f10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11f20 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11f30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11f40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11f50 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11f60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11f70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11f80 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11f90 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11fa0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
11fb0 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72  sult_null(IntPtr
11fc0 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
11fd0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11fe0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11ff0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12000 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
12010 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12020 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12030 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12040 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12050 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
12060 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
12070 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
12080 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
12090 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63  lt_text(IntPtr c
120a0 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76  ontext, byte[] v
120b0 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20  alue, int nLen, 
120c0 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
120d0 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
120e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
120f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12100 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12110 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12120 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12130 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12140 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12150 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12160 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12170 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12180 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
12190 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
121a0 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20  _context(IntPtr 
121b0 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79  context, int nBy
121c0 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tes);....#if !PL
121d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
121e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
121f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12200 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12210 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12220 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
12230 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
12240 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
12250 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12260 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12270 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
12280 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
12290 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
122a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
122b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
122c0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
122d0 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t16(IntPtr stmt,
122e0 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69   int index, stri
122f0 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c  ng value, int nl
12300 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  en, IntPtr pvRes
12310 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
12320 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12330 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12340 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12350 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
12360 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12370 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12380 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
12390 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
123a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
123b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
123c0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
123d0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
123e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
123f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
12400 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
12410 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e  esult_error16(In
12420 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74  tPtr context, st
12430 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e  ring strName, in
12440 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  t nLen);....#if 
12450 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12460 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12470 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12480 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12490 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
124a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
124b0 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
124c0 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
124d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
124e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
124f0 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
12500 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
12510 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12520 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12530 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
12540 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e  result_text16(In
12550 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74  tPtr context, st
12560 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e  ring strName, in
12570 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70  t nLen, IntPtr p
12580 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
12590 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43  if INTEROP_CODEC
125a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
125b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
125c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
125d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
125e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
125f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12600 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12610 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12620 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12630 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12640 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12650 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
12660 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49  de sqlite3_key(I
12670 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
12680 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e   key, int keylen
12690 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
126a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
126b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
126c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
126d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
126e0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
126f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12700 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
12710 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12720 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
12730 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
12740 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
12750 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72  orCode sqlite3_r
12760 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  ekey(IntPtr db, 
12770 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
12780 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66  keylen);..#endif
12790 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
127a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
127b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
127c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
127d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
127e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
127f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12800 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12810 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12820 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12830 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12840 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
12850 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a  te3_set_authoriz
12860 65 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  er(IntPtr db, SQ
12870 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61  LiteAuthorizerCa
12880 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
12890 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
128a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
128b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
128c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
128d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
128e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
128f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12900 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12910 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12920 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12930 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12940 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12950 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
12960 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50  update_hook(IntP
12970 74 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64  tr db, SQLiteUpd
12980 61 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ateCallback func
12990 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
129a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
129b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
129c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
129d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
129e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
129f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12a00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12a10 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12a20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12a30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12a40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12a50 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
12a60 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b  ite3_commit_hook
12a70 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
12a80 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b  teCommitCallback
12a90 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
12aa0 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
12ab0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12ac0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12ad0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12ae0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12af0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12b00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12b10 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12b20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12b30 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12b40 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12b50 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
12b60 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28  r sqlite3_trace(
12b70 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
12b80 65 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66  eTraceCallback f
12b90 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
12ba0 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53  er);....    // S
12bb0 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e  ince sqlite3_con
12bc0 66 69 67 28 29 20 74 61 6b 65 73 20 61 20 76 61  fig() takes a va
12bd0 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20  riable argument 
12be0 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f  list, we have to
12bf0 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72   overload declar
12c00 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66  ations..    // f
12c10 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20  or all possible 
12c20 63 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61  calls that we wa
12c30 6e 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20  nt to use...#if 
12c40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12c50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12c60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12c70 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
12c80 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
12c90 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
12ca0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12cb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12cc0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
12cd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12ce0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
12cf0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
12d00 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
12d10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12d20 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
12d30 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
12d40 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53  e3_config_none(S
12d50 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e  QLiteConfigOpsEn
12d60 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  um op);....#if !
12d70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12d80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12d90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12da0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
12db0 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
12dc0 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
12dd0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12de0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12df0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12e00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12e10 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
12e20 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
12e30 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
12e40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
12e50 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
12e60 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
12e70 33 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c  3_config_int(SQL
12e80 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d  iteConfigOpsEnum
12e90 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b   op, int value);
12ea0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12eb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12ec0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12ed0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
12ee0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
12ef0 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
12f00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
12f10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12f20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12f30 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12f40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
12f50 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
12f60 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
12f70 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12f80 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12f90 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
12fa0 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
12fb0 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66  g_log(SQLiteConf
12fc0 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51  igOpsEnum op, SQ
12fd0 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20  LiteLogCallback 
12fe0 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
12ff0 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
13000 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13010 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13020 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13030 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13040 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13050 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13060 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13070 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13080 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13090 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
130a0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
130b0 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63   sqlite3_rollbac
130c0 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  k_hook(IntPtr db
130d0 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b  , SQLiteRollback
130e0 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
130f0 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
13100 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13110 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13120 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13130 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13140 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13150 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13160 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13170 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13180 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13190 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
131a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
131b0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
131c0 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50  3_db_handle(IntP
131d0 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
131e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
131f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13200 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13210 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13220 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13230 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
13240 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
13250 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13260 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
13270 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13280 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
13290 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
132a0 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65  lite3_db_release
132b0 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64  _memory(IntPtr d
132c0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
132d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
132e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
132f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13300 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13310 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13320 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13330 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
13340 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13350 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13360 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13370 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
13380 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61  qlite3_db_filena
13390 6d 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  me(IntPtr db, In
133a0 74 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d  tPtr dbName);...
133b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
133c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
133d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
133e0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
133f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13400 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13410 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13420 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13430 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13440 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13450 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13460 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
13470 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74  _next_stmt(IntPt
13480 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d  r db, IntPtr stm
13490 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
134a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
134b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
134c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
134d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
134e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
134f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13500 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
13510 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13520 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13530 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13540 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
13550 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
13560 65 78 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20  exec(IntPtr db, 
13570 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49  byte[] strSql, I
13580 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b  ntPtr pvCallback
13590 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d  , IntPtr pvParam
135a0 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 65 72 72  , out IntPtr err
135b0 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Msg);....#if !PL
135c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
135d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
135e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
135f0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13600 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13610 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13620 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13630 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13640 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13650 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13660 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
13670 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65  lite3_release_me
13680 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29  mory(int nBytes)
13690 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
136a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
136b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
136c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
136d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
136e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
136f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13700 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13710 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13720 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13730 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13740 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
13750 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74  3_get_autocommit
13760 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
13770 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13780 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13790 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
137a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
137b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
137c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
137d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
137e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
137f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13800 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13810 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13820 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
13830 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
13840 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49  d_result_codes(I
13850 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e  ntPtr db, int on
13860 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  off);....#if !PL
13870 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13880 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13890 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
138a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
138b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
138c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
138d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
138e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
138f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13900 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13910 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
13920 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
13930 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72  3_errcode(IntPtr
13940 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
13950 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13960 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13970 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13980 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13990 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
139a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
139b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
139c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
139d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
139e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
139f0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
13a00 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
13a10 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f  3_extended_errco
13a20 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  de(IntPtr db);..
13a30 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
13a40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13a50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13a60 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
13a70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
13a80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13a90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
13aa0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
13ab0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
13ac0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
13ad0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
13ae0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
13af0 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45  3_errstr(SQLiteE
13b00 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a  rrorCode rc); /*
13b10 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20   3.7.15+ */.... 
13b20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69     // Since sqli
13b30 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20  te3_log() takes 
13b40 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d  a variable argum
13b50 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76  ent list, we hav
13b60 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65  e to overload de
13b70 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20  clarations..    
13b80 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69  // for all possi
13b90 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20  ble calls.  For 
13ba0 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79  now, we are only
13bb0 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67   exposing a sing
13bc0 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a  le string, and..
13bd0 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e      // depend on
13be0 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66   the caller to f
13bf0 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67  ormat the string
13c00 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13c10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13c20 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
13c30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
13c40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
13c50 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
13c60 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
13c70 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
13c80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13c90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13ca0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13cb0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
13cc0 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72  _log(SQLiteError
13cd0 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62  Code iErrCode, b
13ce0 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d  yte[] zFormat);.
13cf0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13d00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13d10 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
13d20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
13d30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
13d40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
13d50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
13d60 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
13d70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13d80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13d90 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13da0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
13db0 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  ode sqlite3_file
13dc0 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20  _control(IntPtr 
13dd0 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61  db, byte[] zDbNa
13de0 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50  me, int op, IntP
13df0 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66  tr pArg);....#if
13e00 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
13e10 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13e20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13e30 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13e40 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13e50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
13e60 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
13e70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13e80 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
13e90 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13ea0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
13eb0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63  tPtr sqlite3_bac
13ec0 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20  kup_init(IntPtr 
13ed0 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a  destDb, byte[] z
13ee0 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72  DestName, IntPtr
13ef0 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b   sourceDb, byte[
13f00 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d  ] zSourceName);.
13f10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13f20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13f30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
13f40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
13f50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
13f60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
13f70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
13f80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
13f90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13fa0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13fb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13fc0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
13fd0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
13fe0 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62  up_step(IntPtr b
13ff0 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65  ackup, int nPage
14000 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
14010 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
14020 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
14030 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14040 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14050 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14060 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14070 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14080 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14090 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
140a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
140b0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
140c0 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e  e3_backup_remain
140d0 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ing(IntPtr backu
140e0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
140f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14100 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
14110 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14120 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
14130 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
14140 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
14150 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
14160 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14170 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
14180 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14190 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
141a0 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63  te3_backup_pagec
141b0 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b  ount(IntPtr back
141c0 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
141d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
141e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
141f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14200 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14210 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14220 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14230 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14240 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14250 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14260 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14270 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
14280 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
14290 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49 6e  _declare_vtab(In
142a0 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
142b0 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  zSQL);....#if !P
142c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
142d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
142e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
142f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
14300 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
14310 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
14320 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
14330 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14340 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
14350 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14360 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
14370 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74  r sqlite3_mprint
14380 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74 2c  f(IntPtr format,
14390 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20 20   __arglist);..  
143a0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
143b0 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41 50      // SQLite AP
143c0 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72 65  I calls that are
143d0 20 70 72 6f 76 69 64 65 64 20 62 79 20 22 77 65   provided by "we
143e0 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73  ll-known" extens
143f0 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62 65  ions that may be
14400 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20   statically..   
14410 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68 20   // linked with 
14420 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
14430 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 63  native library c
14440 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e  urrently in use.
14450 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65 78  ..    #region ex
14460 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20 61  tension sqlite a
14470 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 49 4e  pi calls..#if IN
14480 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
14490 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  BLE..#if !PLATFO
144a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
144b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
144c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
144d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
144e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
144f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14500 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14510 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14520 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14530 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14540 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
14550 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
14560 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e  osable_module(In
14570 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
14580 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c 69 74 65  name, ref sqlite
14590 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c  3_module module,
145a0 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
145b0 61 74 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64  ata, xDestroyMod
145c0 75 6c 65 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a  ule xDestroy);..
145d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
145e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
145f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14600 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
14610 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
14620 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14630 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
14640 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
14650 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14660 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
14670 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14680 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
14690 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49  dispose_module(I
146a0 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d  ntPtr pModule);.
146b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e  .#endif..    #en
146c0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
146d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14720 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74 65    #region sqlite
14730 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61 6c   interop api cal
14740 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74  ls (.NET Compact
14750 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29   Framework only)
14760 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
14770 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
14780 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  && !SQLITE_STAND
14790 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ARD..    [DllImp
147a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
147b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
147c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
147d0 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69  d sqlite3_last_i
147e0 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65  nsert_rowid_inte
147f0 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72  rop(IntPtr db, r
14800 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d  ef long rowId);.
14810 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
14820 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14830 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14840 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
14850 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
14860 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66 20  sed_interop(ref 
14870 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a  long bytes);....
14880 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14890 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
148a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
148b0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
148c0 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
148d0 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e  water_interop(in
148e0 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66  t resetFlag, ref
148f0 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d   long bytes);...
14900 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14910 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
14920 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14930 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
14940 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
14950 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74  _bind_double_int
14960 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
14970 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
14980 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
14990 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
149a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
149b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
149c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
149d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
149e0 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e  e3_bind_int64_in
149f0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
14a00 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
14a10 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  f long value);..
14a20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
14a30 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
14a40 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
14a50 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e  e3_bind_int64_in
14a60 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e  terop")]..    in
14a70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14a80 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
14a90 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
14aa0 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  d_uint64_interop
14ab0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
14ac0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f  t index, ref ulo
14ad0 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng value);....  
14ae0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14af0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
14b00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14b10 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
14b20 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65  e3_column_double
14b30 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
14b40 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
14b50 20 6f 75 74 20 64 6f 75 62 6c 65 20 76 61 6c 75   out double valu
14b60 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
14b70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14b80 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
14b90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
14ba0 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  oid sqlite3_colu
14bb0 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  mn_int64_interop
14bc0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
14bd0 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 6c 6f 6e  t index, out lon
14be0 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
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 20 20 20 20 69 6e  TE_DLL)]..    in
14c10 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14c20 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
14c30 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69  3_value_double_i
14c40 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
14c50 20 6f 75 74 20 64 6f 75 62 6c 65 20 76 61 6c 75   out double valu
14c60 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
14c70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14c80 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
14c90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
14ca0 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  oid sqlite3_valu
14cb0 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  e_int64_interop(
14cc0 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 49 6e  IntPtr p, out In
14cd0 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  t64 value);.... 
14ce0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14cf0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14d00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14d10 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
14d20 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
14d30 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
14d40 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64 6f   context, ref do
14d50 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
14d60 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14d70 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
14d80 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14d90 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
14da0 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
14db0 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
14dc0 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e   context, ref In
14dd0 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  t64 value);.... 
14de0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14df0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14e00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14e10 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
14e20 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73  lite3_create_dis
14e30 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69  posable_module_i
14e40 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20  nterop(..       
14e50 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50   IntPtr db, IntP
14e60 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72 20  tr name, IntPtr 
14e70 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56 65  pModule, int iVe
14e80 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20 78  rsion, xCreate x
14e90 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20  Create,..       
14ea0 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65   xConnect xConne
14eb0 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20 78  ct, xBestIndex x
14ec0 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73 63  BestIndex, xDisc
14ed0 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65  onnect xDisconne
14ee0 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65  ct,..        xDe
14ef0 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c 20  stroy xDestroy, 
14f00 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43 6c  xOpen xOpen, xCl
14f10 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69 6c  ose xClose, xFil
14f20 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20 20  ter xFilter,..  
14f30 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65 78        xNext xNex
14f40 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78 43  t, xEof xEof, xC
14f50 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78  olumn xColumn, x
14f60 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78 55  RowId xRowId, xU
14f70 70 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d 0a  pdate xUpdate,..
14f80 20 20 20 20 20 20 20 20 78 42 65 67 69 6e 20 78          xBegin x
14f90 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53 79  Begin, xSync xSy
14fa0 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d  nc, xCommit xCom
14fb0 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20 78  mit, xRollback x
14fc0 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Rollback,..     
14fd0 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e     xFindFunction
14fe0 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20   xFindFunction, 
14ff0 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 2c  xRename xRename,
15000 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76   xSavepoint xSav
15010 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20  epoint,..       
15020 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61   xRelease xRelea
15030 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  se, xRollbackTo 
15040 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74  xRollbackTo, Int
15050 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c  Ptr pClientData,
15060 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72  ..        xDestr
15070 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f  oyModule xDestro
15080 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69  yModule);..#endi
15090 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46 4f  f..    // PLATFO
150a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
150b0 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53  ORK && !SQLITE_S
150c0 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65 6e  TANDARD..    #en
150d0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
150e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
15130 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
15140 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66 20   Delegates..#if 
15150 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f  INTEROP_VIRTUAL_
15160 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54  TABLE..#if !PLAT
15170 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15180 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
15190 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
151a0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
151b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
151c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
151d0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
151e0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65  teErrorCode xCre
151f0 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ate(..        In
15200 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
15210 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d     IntPtr pAux,.
15220 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
15230 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
15240 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
15250 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
15260 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ab,..        ref
15270 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a   IntPtr pError..
15280 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
15290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
152e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
152f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15300 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
15310 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
15320 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15330 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
15340 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
15350 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
15360 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  e xConnect(..   
15370 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c       IntPtr pDb,
15380 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
15390 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20   pAux,..        
153a0 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
153b0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
153c0 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
153d0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
153e0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
153f0 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  Error..    );...
15400 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
15410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15450 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15460 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15470 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
15480 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
15490 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
154a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
154b0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
154c0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
154d0 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e  rrorCode xBestIn
154e0 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  dex(..        In
154f0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
15500 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64       IntPtr pInd
15510 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ex..    );....  
15520 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15570 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15580 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15590 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
155a0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
155b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
155c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
155d0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
155e0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
155f0 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63  rCode xDisconnec
15600 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
15610 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
15620 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
15630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15670 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
15680 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15690 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
156a0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
156b0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
156c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
156d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
156e0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
156f0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73  teErrorCode xDes
15700 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 49  troy(..        I
15710 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
15720 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
15730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15770 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
15780 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15790 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
157a0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
157b0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
157c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
157d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
157e0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
157f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
15800 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  Open(..        I
15810 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
15820 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
15830 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b   pCursor..    );
15840 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
15850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15890 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
158a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
158b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
158c0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
158d0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
158e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
158f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
15900 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
15910 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f  teErrorCode xClo
15920 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  se(..        Int
15930 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
15940 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
15950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15990 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
159a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
159b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
159c0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
159d0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
159e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
159f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
15a00 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
15a10 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
15a20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Filter(..       
15a30 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
15a40 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 64  ..        int id
15a50 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 49  xNum,..        I
15a60 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20  ntPtr idxStr,.. 
15a70 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
15a80 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
15a90 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d   argv..    );...
15aa0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
15ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15af0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15b00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15b10 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
15b20 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
15b30 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
15b40 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
15b50 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
15b60 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
15b70 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d  rrorCode xNext(.
15b80 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
15b90 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
15ba0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
15bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bf0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
15c00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15c10 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
15c20 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
15c30 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
15c40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15c50 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
15c60 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78  c delegate int x
15c70 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  Eof(..        In
15c80 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
15c90 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
15ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ce0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
15cf0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15d00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15d10 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
15d20 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
15d30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15d40 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
15d50 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
15d60 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
15d70 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20  xColumn(..      
15d80 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
15d90 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
15da0 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20  r pContext,..   
15db0 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a       int index..
15dc0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
15dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
15e20 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15e30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15e40 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
15e50 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
15e60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15e70 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
15e80 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
15e90 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
15ea0 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20  e xRowId(..     
15eb0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
15ec0 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  r,..        ref 
15ed0 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20  long rowId..    
15ee0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
15ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f30 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
15f40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15f50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
15f60 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
15f70 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
15f80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15f90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
15fa0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
15fb0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55  LiteErrorCode xU
15fc0 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
15fd0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
15fe0 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
15ff0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
16000 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
16010 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
16020 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
16030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16070 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
16080 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16090 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
160a0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
160b0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
160c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
160d0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
160e0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
160f0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
16100 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20  e xBegin(..     
16110 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
16120 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
16130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
16180 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16190 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
161a0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
161b0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
161c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
161d0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
161e0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
161f0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
16200 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20  de xSync(..     
16210 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
16220 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
16230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
16280 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16290 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
162a0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
162b0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
162c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
162d0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
162e0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
162f0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
16300 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  de xCommit(..   
16310 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
16320 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
16330 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16380 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
16390 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
163a0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
163b0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
163c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
163d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
163e0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
163f0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
16400 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d  Code xRollback(.
16410 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
16420 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
16430 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
16440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16480 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16490 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
164a0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
164b0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
164c0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
164d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
164e0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
164f0 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46 69  delegate int xFi
16500 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
16510 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
16520 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
16530 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 49  nArg,..        I
16540 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20  ntPtr zName,..  
16550 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65        ref SQLite
16560 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63  Callback callbac
16570 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  k,..        ref 
16580 49 6e 74 50 74 72 20 70 55 73 65 72 44 61 74 61  IntPtr pUserData
16590 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
165a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
165f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16600 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16610 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
16620 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
16630 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16640 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
16650 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
16660 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
16670 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20  ode xRename(..  
16680 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
16690 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ab,..        Int
166a0 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b  Ptr zNew..    );
166b0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
166c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16700 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
16710 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
16720 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
16730 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
16740 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
16750 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
16760 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
16770 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
16780 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76  teErrorCode xSav
16790 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  epoint(..       
167a0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
167b0 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
167c0 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a  epoint..    );..
167d0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
167e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16820 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
16830 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16840 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
16850 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
16860 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
16870 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16880 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
16890 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
168a0 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61  ErrorCode xRelea
168b0 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  se(..        Int
168c0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
168d0 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
168e0 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  nt..    );....  
168f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16940 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
16950 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
16960 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
16970 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
16980 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
16990 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
169a0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
169b0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
169c0 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54  rCode xRollbackT
169d0 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  o(..        IntP
169e0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
169f0 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
16a00 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
16a10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16a60 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
16a70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
16a80 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
16a90 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
16aa0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
16ab0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
16ac0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
16ad0 67 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72  gate void xDestr
16ae0 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20  oyModule(IntPtr 
16af0 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 23  pClientData);..#
16b00 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72  endif..    #endr
16b10 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
16b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
16b70 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 53  #region Native S
16b80 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20 49  tructures..#if I
16b90 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
16ba0 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75 63  ABLE..    [Struc
16bb0 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
16bc0 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
16bd0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16be0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64  ruct sqlite3_mod
16bf0 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ule..    {..    
16c00 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
16c10 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  Version;..      
16c20 20 20 70 75 62 6c 69 63 20 78 43 72 65 61 74 65    public xCreate
16c30 20 78 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20   xCreate;..     
16c40 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65     public xConne
16c50 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20  ct xConnect;..  
16c60 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65        public xBe
16c70 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64  stIndex xBestInd
16c80 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ex;..        pub
16c90 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65 63 74 20  lic xDisconnect 
16ca0 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20  xDisconnect;..  
16cb0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 65        public xDe
16cc0 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d  stroy xDestroy;.
16cd0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16ce0 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20  xOpen xOpen;..  
16cf0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6c        public xCl
16d00 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20  ose xClose;..   
16d10 20 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6c       public xFil
16d20 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20  ter xFilter;..  
16d30 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 4e 65        public xNe
16d40 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20  xt xNext;..     
16d50 20 20 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78     public xEof x
16d60 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  Eof;..        pu
16d70 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f  blic xColumn xCo
16d80 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70  lumn;..        p
16d90 75 62 6c 69 63 20 78 52 6f 77 49 64 20 78 52 6f  ublic xRowId xRo
16da0 77 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  wId;..        pu
16db0 62 6c 69 63 20 78 55 70 64 61 74 65 20 78 55 70  blic xUpdate xUp
16dc0 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  date;..        p
16dd0 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65  ublic xBegin xBe
16de0 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  gin;..        pu
16df0 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e 63  blic xSync xSync
16e00 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
16e10 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69  c xCommit xCommi
16e20 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
16e30 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f  ic xRollback xRo
16e40 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20  llback;..       
16e50 20 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e   public xFindFun
16e60 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74  ction xFindFunct
16e70 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ion;..        pu
16e80 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65  blic xRename xRe
16e90 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  name;..        /
16ea0 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62  * The methods ab
16eb0 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73 69  ove are in versi
16ec0 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69  on 1 of the sqli
16ed0 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
16ee0 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20       * object.  
16ef0 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20  Those below are 
16f00 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e  for version 2 an
16f10 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20  d greater. */.. 
16f20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53         public xS
16f30 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f  avepoint xSavepo
16f40 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  int;..        pu
16f50 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78 52  blic xRelease xR
16f60 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20 20  elease;..       
16f70 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63   public xRollbac
16f80 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b  kTo xRollbackTo;
16f90 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
16fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
16ff0 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
17000 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
17010 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
17020 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
17030 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b  ite3_vtab..    {
17040 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17050 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b   IntPtr pModule;
17060 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17070 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f   int nRef; /* NO
17080 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d   LONGER USED */.
17090 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
170a0 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d  IntPtr zErrMsg;.
170b0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
170c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17100 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17110 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
17120 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
17130 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
17140 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
17150 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d  te3_vtab_cursor.
17160 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
17170 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 56  public IntPtr pV
17180 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  Tab;..    }.... 
17190 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
171a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
171e0 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
171f0 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
17200 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
17210 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
17220 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
17230 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b  onstraint..    {
17240 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17250 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
17260 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20  onstraint(..    
17270 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
17280 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f  dexConstraint co
17290 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20  nstraint..      
172a0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
172b0 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
172c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
172d0 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72        if (constr
172e0 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  aint != null).. 
172f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43                iC
17310 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69  olumn = constrai
17320 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  nt.iColumn;..   
17330 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 20               op 
17340 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b  = constraint.op;
17350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17360 20 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74    usable = const
17370 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20  raint.usable;.. 
17380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
17390 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e  TermOffset = con
173a0 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66  straint.iTermOff
173b0 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  set;..          
173c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
173d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
173e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17420 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
17430 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b  lic int iColumn;
17440 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17450 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
17460 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20  traintOp op;..  
17470 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
17480 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20  e usable;..     
17490 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 54     public int iT
174a0 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20  ermOffset;..    
174b0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
174c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17500 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
17510 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
17520 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
17530 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
17540 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
17550 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20  ndex_orderby..  
17560 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
17570 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  lic sqlite3_inde
17580 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20  x_orderby(..    
17590 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
175a0 64 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65 72  dexOrderBy order
175b0 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  By..            
175c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
175d0 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
175e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
175f0 69 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20 6e  if (orderBy != n
17600 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
17610 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
17620 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f       iColumn = o
17630 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d  rderBy.iColumn;.
17640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17650 20 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79 2e   desc = orderBy.
17660 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 20  desc;..         
17670 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
17680 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
17690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
176e0 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e  blic int iColumn
176f0 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62  ; /* Column numb
17700 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  er */..        p
17710 75 62 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b  ublic byte desc;
17720 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44     /* True for D
17730 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20  ESC.  False for 
17740 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  ASC. */..    }..
17750 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
17760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177a0 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
177b0 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
177c0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
177d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
177e0 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
177f0 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
17800 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ge..    {..     
17810 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65     public sqlite
17820 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
17830 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20  nt_usage(..     
17840 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
17850 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
17860 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  e constraintUsag
17870 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
17880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
17890 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
178a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
178b0 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  f (constraintUsa
178c0 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ge != null)..   
178d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
178e0 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76              argv
178f0 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61 69  Index = constrai
17900 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65  ntUsage.argvInde
17910 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x;..            
17920 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74      omit = const
17930 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b  raintUsage.omit;
17940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
17950 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
17960 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
17970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
179b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
179c0 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20 2f  int argvIndex; /
179d0 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61  * if >0, constra
179e0 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61  int is part of a
179f0 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a  rgv to xFilter *
17a00 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
17a10 63 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20 20  c byte omit;    
17a20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20   /* Do not code 
17a30 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20  a test for this 
17a40 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20  constraint */.. 
17a50 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
17a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17aa0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
17ab0 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
17ac0 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
17ad0 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
17ae0 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
17af0 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20  3_index_info..  
17b00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20    {..        /* 
17b10 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  Inputs */..     
17b20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 43     public int nC
17b30 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e 75  onstraint; /* Nu
17b40 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20  mber of entries 
17b50 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a  in aConstraint *
17b60 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
17b70 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72  c IntPtr aConstr
17b80 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  aint;..        p
17b90 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72  ublic int nOrder
17ba0 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  By;..        pub
17bb0 6c 69 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65  lic IntPtr aOrde
17bc0 72 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  rBy;..        /*
17bd0 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20   Outputs */..   
17be0 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
17bf0 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73  tr aConstraintUs
17c00 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  age;..        pu
17c10 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b  blic int idxNum;
17c20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75             /* Nu
17c30 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65  mber used to ide
17c40 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20  ntify the index 
17c50 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
17c60 69 63 20 73 74 72 69 6e 67 20 69 64 78 53 74 72  ic string idxStr
17c70 3b 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69  ;        /* Stri
17c80 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74  ng, possibly obt
17c90 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74  ained from sqlit
17ca0 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20  e3_malloc */..  
17cb0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
17cc0 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53 74   needToFreeIdxSt
17cd0 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74  r; /* Free idxSt
17ce0 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f  r using sqlite3_
17cf0 66 72 65 65 28 29 20 69 66 20 74 72 75 65 20 2a  free() if true *
17d00 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
17d10 63 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e  c int orderByCon
17d20 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20  sumed;  /* True 
17d30 69 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72  if output is alr
17d40 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d  eady ordered */.
17d50 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17d60 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64  double estimated
17d70 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74  Cost; /* Estimat
17d80 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67  ed cost of using
17d90 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a   this index */..
17da0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
17db0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
17dc0 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f   }....  ////////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e10 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
17e20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
17e30 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e  MEWORK..  intern
17e40 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73  al abstract clas
17e50 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  s CriticalHandle
17e60 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a   : IDisposable..
17e70 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65    {..    private
17e80 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b   bool _isClosed;
17e90 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
17ea0 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a  IntPtr handle;..
17eb0 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
17ec0 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49  CriticalHandle(I
17ed0 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e  ntPtr invalidHan
17ee0 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b  dleValue)..    {
17ef0 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
17f00 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
17f10 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43  lue;..      _isC
17f20 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a  losed = false;..
17f30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72      }....    ~Cr
17f40 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a  iticalHandle()..
17f50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
17f60 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
17f70 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
17f80 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28  te void Cleanup(
17f90 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
17fa0 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a  if (!IsClosed)..
17fb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17fc0 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20   this._isClosed 
17fd0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
17fe0 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29   if (!IsInvalid)
17ff0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
18000 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61         ReleaseHa
18010 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  ndle();..       
18020 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
18030 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20  nalize(this);.. 
18040 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
18050 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
18060 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73  public void Clos
18070 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
18080 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
18090 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
180a0 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
180b0 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  se()..    {..   
180c0 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
180d0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
180e0 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
180f0 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62  l void Dispose(b
18100 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a  ool disposing)..
18110 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65      {..      Cle
18120 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a  anup();..    }..
18130 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
18140 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65  abstract bool Re
18150 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a  leaseHandle();..
18160 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
18170 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49  void SetHandle(I
18180 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20  ntPtr value)..  
18190 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c    {..      handl
181a0 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  e = value;..    
181b0 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
181c0 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73  void SetHandleAs
181d0 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b  Invalid()..    {
181e0 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65  ..      _isClose
181f0 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
18200 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
18210 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
18220 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
18230 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a   bool IsClosed..
18240 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
18250 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f   { return _isClo
18260 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d  sed; }..    }...
18270 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74  .    public abst
18280 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ract bool IsInva
18290 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  lid..    {..    
182a0 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d    get;..    }...
182b0 0a 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a  .  }....#endif..
182c0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
182d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18310 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
18320 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
18330 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  nHandle Class.. 
18340 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68     // Handles th
18350 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61  e unmanaged data
18360 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e  base pointer, an
18370 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  d provides final
18380 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20  ization..    // 
18390 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d  support for it..
183a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
183b0 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
183c0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
183d0 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
183e0 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53  le..    {..#if S
183f0 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26  QLITE_STANDARD &
18400 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  & !PLATFORM_COMP
18410 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18420 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64        internal d
18430 65 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f  elegate void Clo
18440 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c  seConnectionCall
18450 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
18460 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
18470 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49  ionHandle hdl, I
18480 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
18490 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
184a0 74 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65  tatic CloseConne
184b0 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c  ctionCallback cl
184c0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d  oseConnection =.
184d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
184e0 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
184f0 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66  nection;..#endif
18500 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
18510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18550 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ///....#if PLATF
18560 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
18570 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
18580 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
18590 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
185a0 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
185b0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
185c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
185d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18610 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
18620 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d  ol ownHandle;...
18630 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18680 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
18690 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
186a0 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
186b0 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  tr(SQLiteConnect
186c0 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20  ionHandle db).. 
186d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
186e0 20 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20        if (db != 
186f0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
18700 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
18710 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18720 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
18730 20 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79       lock (db.sy
18740 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
18750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18760 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18770 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
18780 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  b.handle;..     
18790 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
187a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
187b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
187c0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
187d0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
187e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
187f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18830 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
18840 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
18850 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c  andle(IntPtr db,
18860 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29   bool ownHandle)
18870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
18880 74 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d  this(ownHandle).
18890 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
188a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
188b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
188c0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
188d0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
188e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
188f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
18900 68 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20  his.ownHandle = 
18910 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ownHandle;..    
18920 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
18930 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20  andle(db);..    
18940 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
18950 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
18960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
189b0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
189c0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
189d0 65 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65  e(bool ownHandle
189e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
189f0 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72   base(IntPtr.Zer
18a00 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  o)..        {..#
18a10 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
18a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
18a30 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20  (ownHandle)..   
18a40 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
18a50 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65  erlocked.Increme
18a60 6e 74 28 72 65 66 20 55 6e 73 61 66 65 4e 61 74  nt(ref UnsafeNat
18a70 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65  iveMethods.conne
18a80 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65  ctionCount);..#e
18a90 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
18aa0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18af0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
18b00 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
18b10 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
18b20 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
18b30 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
18b40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
18b60 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
18b70 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
18b80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
18b90 20 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e       if (!ownHan
18ba0 64 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65  dle) return true
18bb0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
18bc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
18bd0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
18be0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
18bf0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18c00 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
18c10 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
18c20 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
18c30 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
18c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c50 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
18c60 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
18c70 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
18c80 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
18c90 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
18ca0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
18cb0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
18cc0 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65             close
18cd0 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c  Connection(this,
18ce0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
18cf0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
18d00 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
18d10 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
18d20 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
18d30 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
18d40 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
18d50 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63  ection(this, loc
18d60 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64  alHandle);..#end
18d70 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  if....#if !NET_C
18d80 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
18d90 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
18da0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
18db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18dc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18dd0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
18de0 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
18df0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
18e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
18e10 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a  CloseConnection:
18e20 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
18e30 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  le)); /* throw *
18e40 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
18e50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
18e60 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
18e70 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
18e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e90 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
18ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18eb0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
18ec0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
18ed0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18ee0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
18ef0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
18f00 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
18f10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
18f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f30 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
18f40 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  CloseConnection(
18f50 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  this, handle);..
18f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f70 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
18f80 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
18f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18fa0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
18fb0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
18fc0 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
18fd0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
18fe0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
18ff0 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
19000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19010 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
19020 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74  eMethods.connect
19030 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  ionCount);..#end
19040 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
19050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
19060 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
19070 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
19080 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
19090 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
190a0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
190b0 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
190c0 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
190d0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
190e0 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
190f0 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
19100 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
19110 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
19120 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
19130 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
19140 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
19150 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
19160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19170 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
19180 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(String.Forma
19190 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
191a0 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
191b0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30  seConnection: {0
191c0 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31  }, exception: {1
191d0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
191e0 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e               han
191f0 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  dle, e)); /* thr
19200 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
19210 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19220 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
19230 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19240 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19250 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
19260 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
19270 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
19280 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
19290 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
192a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
192b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
192c0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
192d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
192e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
192f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19300 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61   SetHandleAsInva
19310 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  lid();..        
19320 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
19330 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45         }..#if DE
19340 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
19350 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
19360 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
19370 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
19380 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
19390 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
193a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55  /////....#if COU
193f0 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
19400 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61     public int Wa
19410 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20  sReleasedOk().. 
19420 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19430 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
19440 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
19450 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
19460 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e       ref UnsafeN
19470 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e  ativeMethods.con
19480 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
19490 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
194a0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
194b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
19500 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48  public bool OwnH
19510 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b  andle..        {
19520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
19530 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
19540 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
19550 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19560 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19570 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
19580 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
19590 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
195a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
195b0 20 72 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c   return ownHandl
195c0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
195d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
195e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
195f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
19600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19640 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
19650 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
19660 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
19670 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
19680 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
19690 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
196a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
196b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
196c0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
196d0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
196e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
196f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19700 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
19710 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
19720 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
19730 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
19740 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
19750 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
197b0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
197c0 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
197d0 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
197e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
197f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19800 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
19810 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
19820 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
19830 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
19840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
19850 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
19860 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
19870 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
19880 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
19890 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
198a0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
198b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
19900 69 6f 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d  ion SQLiteStatem
19910 65 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  entHandle Class.
19920 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73  .    // Provides
19930 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75   finalization su
19940 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61  pport for unmana
19950 67 65 64 20 53 51 4c 69 74 65 20 73 74 61 74 65  ged SQLite state
19960 6d 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65  ments...    inte
19970 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
19980 73 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  s SQLiteStatemen
19990 74 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  tHandle : Critic
199a0 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
199b0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
199c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
199d0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
199e0 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
199f0 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
19a00 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
19a10 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
19a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a60 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
19a70 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
19a80 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
19a90 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
19aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ae0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19af0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
19b00 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
19b10 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53  r IntPtr(SQLiteS
19b20 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73  tatementHandle s
19b30 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  tmt)..        {.
19b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
19b50 28 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a  (stmt != null)..
19b60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
19b70 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
19b80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
19ba0 63 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f  ck (stmt.syncRoo
19bb0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
19bc0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
19bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19be0 20 20 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68     return stmt.h
19bf0 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
19c00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
19c10 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19c20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
19c30 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
19c40 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
19c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19ca0 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
19cb0 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
19cc0 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
19cd0 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e  onHandle cnn, In
19ce0 74 50 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20  tPtr stmt)..    
19cf0 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
19d00 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
19d10 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
19d20 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19d30 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
19d40 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
19d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
19d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d70 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d  this.cnn = cnn;.
19d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19d90 20 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29   SetHandle(stmt)
19da0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
19db0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
19dc0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19e10 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
19e20 65 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  e SQLiteStatemen
19e30 74 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  tHandle()..     
19e40 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
19e50 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
19e60 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
19e70 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
19e80 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
19e90 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Increment(..   
19ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
19eb0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
19ec0 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f  hods.statementCo
19ed0 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  unt);..#endif.. 
19ee0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
19ef0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
19f40 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
19f50 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52   override bool R
19f60 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a  eleaseHandle()..
19f70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19f80 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
19f90 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
19fa0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19fb0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
19fc0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
19fd0 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20  r localHandle = 
19fe0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68  Interlocked.Exch
19ff0 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ange(..         
1a000 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68             ref h
1a010 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65  andle, IntPtr.Ze
1a020 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ro);....        
1a030 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
1a040 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
1a050 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1a060 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
1a070 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65  iteBase.Finalize
1a080 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c  Statement(cnn, l
1a090 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a  ocalHandle);....
1a0a0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
1a0b0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
1a0c0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
1a0d0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
1a0e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1a0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a100 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
1a110 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
1a120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a130 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69           "Finali
1a140 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d  zeStatement: {0}
1a150 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
1a160 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
1a170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1a180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a190 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
1a1a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a1b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
1a1c0 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
1a1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
1a1e0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
1a1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1a200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a210 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
1a220 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
1a230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a240 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1a250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a260 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61   SQLiteBase.Fina
1a270 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e  lizeStatement(cn
1a280 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  n, handle);..   
1a290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a2a0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
1a2b0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
1a2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a2d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1a2e0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1a2f0 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
1a300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a310 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
1a320 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20  crement(..      
1a330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1a340 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f UnsafeNativeMe
1a350 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43  thods.statementC
1a360 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
1a370 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1a380 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1a390 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
1a3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1a3b0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
1a3c0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
1a3d0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
1a3e0 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
1a3f0 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
1a400 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
1a410 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
1a420 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
1a430 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
1a440 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
1a450 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
1a460 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
1a470 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1a480 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a4a0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
1a4b0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
1a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a4d0 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a          "Finaliz
1a4e0 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c  eStatement: {0},
1a4f0 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22   exception: {1}"
1a500 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1a510 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c             handl
1a520 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  e, e)); /* throw
1a530 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1a540 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a550 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
1a560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1a570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a580 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
1a590 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1a5a0 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
1a5b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1a5c0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1a5d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1a5f0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1a600 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1a610 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1a630 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
1a640 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
1a650 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1a660 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55       }..#if DEBU
1a670 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  G..            r
1a680 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65  eturn false;..#e
1a690 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
1a6a0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
1a6b0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
1a6c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a710 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54  ///....#if COUNT
1a720 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1a730 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52   public int WasR
1a740 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20  eleasedOk()..   
1a750 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a760 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72      return Inter
1a770 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
1a780 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1a790 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
1a7a0 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65  iveMethods.state
1a7b0 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  mentCount);..   
1a7c0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1a7d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1a7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a820 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
1a830 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
1a840 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
1a850 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a860 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
1a870 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
1a880 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1a890 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1a8a0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1a8b0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1a8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a8d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a8e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
1a8f0 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
1a900 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
1a910 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a920 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1a930 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a980 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
1a990 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
1a9a0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
1a9b0 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
1a9c0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1a9d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a9e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1a9f0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1aa00 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1aa10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1aa30 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
1aa40 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
1aa50 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1aa60 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
1aa70 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1aa80 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
1aa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aaa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aad0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
1aae0 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  on SQLiteBackupH
1aaf0 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20  andle Class..   
1ab00 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e   // Provides fin
1ab10 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72  alization suppor
1ab20 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20  t for unmanaged 
1ab30 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62  SQLite backup ob
1ab40 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65  jects...    inte
1ab50 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
1ab60 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  s SQLiteBackupHa
1ab70 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
1ab80 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
1ab90 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1aba0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1abb0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
1abc0 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
1abd0 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
1abe0 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
1abf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac40 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
1ac50 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
1ac60 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b  ctionHandle cnn;
1ac70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acc0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
1acd0 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
1ace0 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49  licit operator I
1acf0 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b  ntPtr(SQLiteBack
1ad00 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29  upHandle backup)
1ad10 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1ad20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 63           if (bac
1ad30 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  kup != null)..  
1ad40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1ad50 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1ad60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ad70 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1ad80 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f   (backup.syncRoo
1ad90 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1ada0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1adc0 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70     return backup
1add0 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
1ade0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1adf0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1ae00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
1ae10 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
1ae20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1ae30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ae40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ae80 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
1ae90 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
1aea0 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
1aeb0 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
1aec0 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20  Ptr backup)..   
1aed0 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
1aee0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1aef0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1af00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1af10 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1af20 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1af30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1af40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1af50 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b   this.cnn = cnn;
1af60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1af70 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b    SetHandle(back
1af80 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  up);..          
1af90 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1afa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aff0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
1b000 76 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75  vate SQLiteBacku
1b010 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  pHandle()..     
1b020 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
1b030 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1b040 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
1b050 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
1b060 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
1b070 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Increment(..   
1b080 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1b090 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
1b0a0 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74  hods.backupCount
1b0b0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
1b0c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1b0d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b110 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1b120 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
1b130 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
1b140 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
1b150 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b160 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1b170 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
1b180 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b190 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1b1a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
1b1b0 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
1b1c0 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
1b1d0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
1b1e0 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
1b1f0 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
1b200 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1b210 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
1b220 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1b230 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1b240 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1b250 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75  Base.FinishBacku
1b260 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64  p(cnn, localHand
1b270 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  le);....#if !NET
1b280 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
1b290 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
1b2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
1b2b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b2c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1b2d0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
1b2e0 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
1b2f0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1b300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b310 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20   "FinishBackup: 
1b320 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
1b330 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
1b340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b350 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1b360 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
1b370 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1b380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1b390 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
1b3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b3b0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1b3c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b3d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1b3e0 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
1b3f0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
1b400 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1b410 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b430 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
1b440 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c  inishBackup(cnn,
1b450 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
1b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b470 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
1b480 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
1b490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1b4b0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
1b4c0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
1b4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4e0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
1b4f0 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
1b500 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1b510 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1b520 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ods.backupCount)
1b530 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
1b540 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
1b550 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
1b560 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
1b570 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
1b580 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1b590 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1b5a0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1b5b0 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
1b5c0 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
1b5d0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1b5e0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
1b5f0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1b600 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
1b610 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
1b620 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
1b630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1b640 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
1b650 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b660 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1b670 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
1b680 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
1b690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6a0 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70     "FinishBackup
1b6b0 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
1b6c0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
1b6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6e0 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
1b6f0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
1b700 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1b710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1b720 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1b730 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b740 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1b750 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
1b760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
1b770 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
1b780 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1b790 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b7a0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1b7b0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1b7c0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1b7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b7f0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
1b800 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
1b810 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1b820 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1b830 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1b840 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1b850 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
1b860 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1b870 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1b880 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1b890 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1b8e0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1b8f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1b900 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
1b910 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1b920 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1b930 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1b940 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
1b950 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
1b960 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1b970 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a  .backupCount);..
1b980 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1b990 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
1b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1b9f0 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
1ba00 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
1ba10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ba20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
1ba30 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1ba40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ba50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1ba60 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1ba70 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1ba80 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1ba90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1baa0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1bab0 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
1bac0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
1bad0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1bae0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1baf0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1bb00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1bb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1bb50 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1bb60 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
1bb70 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
1bb80 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1bb90 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1bba0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1bbb0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1bbc0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1bbd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1bbe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bbf0 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
1bc00 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
1bc10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1bc20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
1bc30 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
1bc40 69 6f 6e 0d 0a 7d 0d 0a                          ion..}..