System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 92cc033c9dd14dbded268438f86ff7fc2f5bf3b0:


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 20 20 20 20 20 20 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
0cc0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
0cd0: 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72  / This dictionar
0ce0: 79 20 73 74 6f 72 65 73 20 74 68 65 20 6d 61 70  y stores the map
0cf0: 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20 70 72  pings between pr
0d00: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
0d10: 74 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ture..      /// 
0d20: 6e 61 6d 65 73 20 61 6e 64 20 70 6c 61 74 66 6f  names and platfo
0d30: 72 6d 20 6e 61 6d 65 73 2e 20 20 54 68 65 73 65  rm names.  These
0d40: 20 6d 61 70 70 69 6e 67 73 20 61 72 65 20 6e 6f   mappings are no
0d50: 77 20 75 73 65 64 20 66 6f 72 20 74 77 6f 0d 0a  w used for two..
0d60: 20 20 20 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73        /// purpos
0d70: 65 73 2e 20 20 46 69 72 73 74 2c 20 74 68 65 79  es.  First, they
0d80: 20 61 72 65 20 75 73 65 64 20 74 6f 20 64 65 74   are used to det
0d90: 65 72 6d 69 6e 65 20 69 66 20 74 68 65 20 61 73  ermine if the as
0da0: 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20  sembly code..   
0db0: 20 20 20 2f 2f 2f 20 62 61 73 65 20 73 68 6f 75     /// base shou
0dc0: 6c 64 20 62 65 20 75 73 65 64 20 69 6e 73 74 65  ld be used inste
0dd0: 61 64 20 6f 66 20 74 68 65 20 6c 6f 63 61 74 69  ad of the locati
0de0: 6f 6e 2c 20 62 61 73 65 64 20 75 70 6f 6e 20 77  on, based upon w
0df0: 68 65 74 68 65 72 20 6f 6e 65 0d 0a 20 20 20 20  hether one..    
0e00: 20 20 2f 2f 2f 20 6f 72 20 6d 6f 72 65 20 6f 66    /// or more of
0e10: 20 74 68 65 20 6e 61 6d 65 64 20 73 75 62 2d 64   the named sub-d
0e20: 69 72 65 63 74 6f 72 69 65 73 20 65 78 69 73 74  irectories exist
0e30: 20 77 69 74 68 69 6e 20 74 68 65 20 61 73 73 65   within the asse
0e40: 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20  mbly code..     
0e50: 20 2f 2f 2f 20 62 61 73 65 2e 20 20 53 65 63 6f   /// base.  Seco
0e60: 6e 64 2c 20 74 68 65 79 20 61 72 65 20 75 73 65  nd, they are use
0e70: 64 20 74 6f 20 61 73 73 69 73 74 20 69 6e 20 6c  d to assist in l
0e80: 6f 61 64 69 6e 67 20 74 68 65 20 61 70 70 72 6f  oading the appro
0e90: 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 2f 2f  priate..      //
0ea0: 2f 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  / SQLite interop
0eb0: 20 61 73 73 65 6d 62 6c 79 20 69 6e 74 6f 20 74   assembly into t
0ec0: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
0ed0: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
0ee0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0ef0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0f00: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0f10: 67 2c 20 73 74 72 69 6e 67 3e 20 70 72 6f 63 65  g, string> proce
0f20: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
0f30: 50 6c 61 74 66 6f 72 6d 73 3b 0d 0a 20 20 20 20  Platforms;..    
0f40: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
0f50: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
0f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
0fa0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0fb0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0fc0: 46 6f 72 20 6e 6f 77 2c 20 74 68 69 73 20 6d 65  For now, this me
0fd0: 74 68 6f 64 20 73 69 6d 70 6c 79 20 63 61 6c 6c  thod simply call
0fe0: 73 20 74 68 65 20 49 6e 69 74 69 61 6c 69 7a 65  s the Initialize
0ff0: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1000: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1010: 20 20 20 20 20 20 73 74 61 74 69 63 20 55 6e 73        static Uns
1020: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1030: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
1040: 20 20 20 20 20 20 20 49 6e 69 74 69 61 6c 69 7a         Initializ
1050: 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  e();..      }...
1060: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
1070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
10c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
10d0: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 69 6e 69   Attempts to ini
10e0: 74 69 61 6c 69 7a 65 20 74 68 69 73 20 63 6c 61  tialize this cla
10f0: 73 73 20 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e  ss by pre-loadin
1100: 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  g the native SQL
1110: 69 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c  ite..      /// l
1120: 69 62 72 61 72 79 20 66 6f 72 20 74 68 65 20 70  ibrary for the p
1130: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
1140: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
1150: 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20  rent process... 
1160: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1170: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
1180: 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20  nal static void 
1190: 49 6e 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20  Initialize()..  
11a0: 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54      {..#if SQLIT
11b0: 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53  E_STANDARD || US
11c0: 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c  E_INTEROP_DLL ||
11d0: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
11e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20  TFRAMEWORK..#if 
11f0: 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c  PRELOAD_NATIVE_L
1200: 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20  IBRARY..        
1210: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1220: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
1230: 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74  "No_PreLoadSQLit
1240: 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  e" environment v
1250: 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 28  ariable is set (
1260: 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  to..          //
1270: 20 20 20 20 20 20 20 61 6e 79 74 68 69 6e 67 29         anything)
1280: 2c 20 73 6b 69 70 20 61 6c 6c 20 6f 75 72 20 73  , skip all our s
1290: 70 65 63 69 61 6c 20 63 6f 64 65 20 61 6e 64 20  pecial code and 
12a0: 73 69 6d 70 6c 79 20 72 65 74 75 72 6e 2e 0d 0a  simply return...
12b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
12c0: 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53          if (GetS
12d0: 65 74 74 69 6e 67 56 61 6c 75 65 28 22 4e 6f 5f  ettingValue("No_
12e0: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 2c 20  PreLoadSQLite", 
12f0: 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  null) != null)..
1300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1310: 74 75 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  turn;..#endif..#
1320: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
1330: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
1340: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
1350: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1360: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1370: 20 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20         // TODO: 
1380: 4d 61 6b 65 20 73 75 72 65 20 74 68 69 73 20 6c  Make sure this l
1390: 69 73 74 20 69 73 20 75 70 64 61 74 65 64 20 69  ist is updated i
13a0: 66 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 0d  f the supported.
13b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
13c0: 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f  /       processo
13d0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e  r architecture n
13e0: 61 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74  ames and/or plat
13f0: 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20 20 20  form names..    
1400: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1410: 20 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20     changes...   
1420: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1430: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1440: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
1450: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
1460: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1470: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1480: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14a0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61     // NOTE: Crea
14b0: 74 65 20 74 68 65 20 6d 61 70 20 6f 66 20 70 72  te the map of pr
14c0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
14d0: 74 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20 20 20  ture names..    
14e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
14f0: 20 20 20 20 20 20 20 74 6f 20 70 6c 61 74 66 6f         to platfo
1500: 72 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67 20 61  rm names using a
1510: 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76   case-insensitiv
1520: 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  e string..      
1530: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
1540: 20 20 20 20 20 63 6f 6d 70 61 72 65 72 2e 0d 0a       comparer...
1550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1560: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1570: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
1580: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
1590: 74 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20  tforms =..      
15a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b0: 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73  new Dictionary<s
15c0: 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 0d  tring, string>(.
15d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15e0: 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
15f0: 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61  gComparer.Ordina
1600: 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d  lIgnoreCase);...
1610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1620: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1630: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1640: 3a 20 53 65 74 75 70 20 74 68 65 20 6c 69 73 74  : Setup the list
1650: 20 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d   of platform nam
1660: 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  es associated wi
1670: 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  th..            
1680: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
1690: 68 65 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f  he supported pro
16a0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
16b0: 75 72 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  ures...         
16c0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
16d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
16e0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
16f0: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
1700: 64 28 22 78 38 36 22 2c 20 22 57 69 6e 33 32 22  d("x86", "Win32"
1710: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1720: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
1730: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
1740: 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22  orms.Add("AMD64"
1750: 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20  , "x64");..     
1760: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
1770: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1780: 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28  rePlatforms.Add(
1790: 22 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d  "IA64", "Itanium
17a0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
17b0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
17c0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
17d0: 66 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c  forms.Add("ARM",
17e0: 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20   "WinCE");..    
17f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 23            }....#
1800: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
1810: 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
1820: 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
1830: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1840: 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  RK..#if PRELOAD_
1850: 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
1860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1880: 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74 20  // BUGBUG: What 
1890: 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c  about other appl
18a0: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f  ication domains?
18b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18c0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
18d0: 20 20 69 66 20 28 5f 53 51 4c 69 74 65 4e 61 74    if (_SQLiteNat
18e0: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
18f0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1900: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
1910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1920: 20 20 20 20 73 74 72 69 6e 67 20 62 61 73 65 44      string baseD
1930: 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b  irectory = null;
1940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1950: 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65      string proce
1960: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1970: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
1980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
1990: 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20   IGNORED */..   
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
19b0: 65 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72  earchForDirector
19c0: 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
19d0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 62 61            ref ba
19e0: 73 65 44 69 72 65 63 74 6f 72 79 2c 20 72 65 66  seDirectory, ref
19f0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
1a00: 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20  ecture);....    
1a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a30: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74      // NOTE: Att
1a40: 65 6d 70 74 20 74 6f 20 70 72 65 2d 6c 6f 61 64  empt to pre-load
1a50: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
1a60: 20 6c 69 62 72 61 72 79 20 28 6f 72 0d 0a 20 20   library (or..  
1a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a80: 2f 2f 20 20 20 20 20 20 20 69 6e 74 65 72 6f 70  //       interop
1a90: 20 61 73 73 65 6d 62 6c 79 29 20 61 6e 64 20 73   assembly) and s
1aa0: 74 6f 72 65 20 62 6f 74 68 20 74 68 65 20 66 69  tore both the fi
1ab0: 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20  le name..       
1ac0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1ad0: 20 20 20 20 61 6e 64 20 6e 61 74 69 76 65 20 6d      and native m
1ae0: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72  odule handle for
1af0: 20 6c 61 74 65 72 20 75 73 61 67 65 2e 0d 0a 20   later usage... 
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b10: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1b20: 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45         /* IGNORE
1b30: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
1b40: 20 20 20 20 20 20 20 20 50 72 65 4c 6f 61 64 53          PreLoadS
1b50: 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20  QLiteDll(..     
1b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b70: 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
1b80: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1b90: 63 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  cture,..        
1ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1bb0: 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  f _SQLiteNativeM
1bc0: 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a  oduleFileName,..
1bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be0: 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c 69 74        ref _SQLit
1bf0: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  eNativeModuleHan
1c00: 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
1c10: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1c20: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1c30: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
1c40: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1c90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
1ca0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1cb0: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
1cc0: 72 6e 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66  rns the XML conf
1cd0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
1ce0: 61 6d 65 20 66 6f 72 20 74 68 65 20 61 73 73 65  ame for the asse
1cf0: 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  mbly..      /// 
1d00: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d  containing the m
1d10: 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44 61  anaged System.Da
1d20: 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e  ta.SQLite compon
1d30: 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ents...      ///
1d40: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1d50: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1d60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
1d70: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
1d80: 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d  n file name -OR-
1d90: 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e   null if it cann
1da0: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
1db0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64  ..      /// or d
1dc0: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a  oes not exist...
1dd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1de0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
1df0: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
1e00: 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69  g GetXmlConfigFi
1e10: 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20  leName()..      
1e20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  {..          str
1e30: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  ing directory;..
1e40: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1e50: 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69   fileName;....#i
1e60: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e70: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e80: 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
1e90: 79 20 3d 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75  y = AppDomain.Cu
1ea0: 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65  rrentDomain.Base
1eb0: 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  Directory;..    
1ec0: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
1ed0: 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69   Path.Combine(di
1ee0: 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66  rectory, XmlConf
1ef0: 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  igFileName);....
1f00: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
1f10: 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
1f20: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
1f30: 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
1f40: 61 6d 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ame;..#endif....
1f50: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
1f60: 6f 72 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c  ory = GetAssembl
1f70: 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20  yDirectory();.. 
1f80: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
1f90: 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65  e = Path.Combine
1fa0: 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43  (directory, XmlC
1fb0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d  onfigFileName);.
1fc0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
1fd0: 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c  (File.Exists(fil
1fe0: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
1ff0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
2000: 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  leName;....     
2010: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
2020: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
2030: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2080: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2090: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
20a0: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
20b0: 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  s the value of t
20c0: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74  he specified set
20d0: 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 20  ting, using the 
20e0: 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  XML..      /// c
20f0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
2100: 65 20 61 6e 64 2f 6f 72 20 74 68 65 20 65 6e 76  e and/or the env
2110: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
2120: 65 73 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  es for the curre
2130: 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  nt..      /// pr
2140: 6f 63 65 73 73 20 61 6e 64 2f 6f 72 20 74 68 65  ocess and/or the
2150: 20 63 75 72 72 65 6e 74 20 73 79 73 74 65 6d 2c   current system,
2160: 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e   when available.
2170: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
2180: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2190: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
21a0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
21b0: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
21c0: 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20   setting...     
21d0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
21e0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
21f0: 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d  name="default">.
2200: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
2210: 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
2220: 6e 65 64 20 69 66 20 74 68 65 20 73 65 74 74 69  ned if the setti
2230: 6e 67 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  ng has not been 
2240: 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a  set explicitly..
2250: 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e        /// or can
2260: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
2270: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
2280: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
2290: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
22a0: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
22b0: 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 20   of the setting 
22c0: 2d 4f 52 2d 20 74 68 65 20 64 65 66 61 75 6c 74  -OR- the default
22d0: 20 76 61 6c 75 65 20 73 70 65 63 69 66 69 65 64   value specified
22e0: 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c   by..      /// <
22f0: 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64  paramref name="d
2300: 65 66 61 75 6c 74 22 20 2f 3e 20 69 66 20 69 74  efault" /> if it
2310: 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65   has not been se
2320: 74 20 65 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d  t explicitly or.
2330: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f  .      /// canno
2340: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
2350: 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 61 6c    By default, al
2360: 6c 20 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20  l references to 
2370: 65 78 69 73 74 69 6e 67 0d 0a 20 20 20 20 20 20  existing..      
2380: 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  /// environment 
2390: 76 61 72 69 61 62 6c 65 73 20 77 69 6c 6c 20 62  variables will b
23a0: 65 20 65 78 70 61 6e 64 65 64 20 74 6f 20 74 68  e expanded to th
23b0: 65 69 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  eir correspondin
23c0: 67 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20  g values..      
23d0: 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68 65 20 76  /// within the v
23e0: 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
23f0: 6e 65 64 20 75 6e 6c 65 73 73 20 65 69 74 68 65  ned unless eithe
2400: 72 20 74 68 65 20 22 4e 6f 5f 45 78 70 61 6e 64  r the "No_Expand
2410: 22 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  " or..      /// 
2420: 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70 61 72 61  "No_Expand_<para
2430: 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  mref name="name"
2440: 20 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   />" environment
2450: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
2460: 20 5b 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   [to..      /// 
2470: 61 6e 79 74 68 69 6e 67 5d 2e 0d 0a 20 20 20 20  anything]...    
2480: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2490: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
24a0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
24b0: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
24c0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
24d0: 67 20 6e 61 6d 65 2c 20 20 20 20 2f 2a 20 69 6e  g name,    /* in
24e0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   */..          s
24f0: 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 2f  tring @default /
2500: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
2510: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
2520: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d           if (nam
2530: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2540: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2550: 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20   @default;....  
2560: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
2570: 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  alue = null;....
2580: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2590: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25a0: 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65            bool e
25b0: 78 70 61 6e 64 20 3d 20 74 72 75 65 3b 0d 0a 0d  xpand = true;...
25c0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45  .          if (E
25d0: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
25e0: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
25f0: 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21  e("No_Expand") !
2600: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2610: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2620: 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c      expand = fal
2630: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
2640: 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65  ..          else
2650: 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74   if (Environment
2660: 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  .GetEnvironmentV
2670: 61 72 69 61 62 6c 65 28 53 74 72 69 6e 67 2e 46  ariable(String.F
2680: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
2690: 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 45 78            "No_Ex
26a0: 70 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29  pand_{0}", name)
26b0: 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  ) != null)..    
26c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
26d0: 20 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20         expand = 
26e0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
26f0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2700: 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e   value = Environ
2710: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
2720: 65 6e 74 56 61 72 69 61 62 6c 65 28 6e 61 6d 65  entVariable(name
2730: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2740: 69 66 20 28 65 78 70 61 6e 64 20 26 26 20 21 53  if (expand && !S
2750: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
2760: 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
2770: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
2780: 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45   = Environment.E
2790: 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74  xpandEnvironment
27a0: 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29  Variables(value)
27b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
27c0: 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
27d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
27e0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
27f0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
2800: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2810: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2820: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
2830: 61 6d 65 20 3d 20 47 65 74 58 6d 6c 43 6f 6e 66  ame = GetXmlConf
2840: 69 67 46 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a 0d  igFileName();...
2850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
2860: 66 20 28 66 69 6c 65 4e 61 6d 65 20 3d 3d 20 6e  f (fileName == n
2870: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2880: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
2890: 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20  default;....    
28a0: 20 20 20 20 20 20 20 20 20 20 58 6d 6c 44 6f 63            XmlDoc
28b0: 75 6d 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20 3d  ument document =
28c0: 20 6e 65 77 20 58 6d 6c 44 6f 63 75 6d 65 6e 74   new XmlDocument
28d0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
28e0: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f       document.Lo
28f0: 61 64 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  ad(fileName);...
2900: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58  .              X
2910: 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e  mlElement elemen
2920: 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65 6c  t = document.Sel
2930: 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28 53 74  ectSingleNode(St
2940: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
2950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2960: 22 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f  "/configuration/
2970: 61 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b  appSettings/add[
2980: 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61  @key='{0}']", na
2990: 6d 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20  me)) as..       
29a0: 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c             XmlEl
29b0: 65 6d 65 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  ement;....      
29c0: 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
29d0: 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ent != null)..  
29e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
29f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a00: 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 48 61 73   if (element.Has
2a10: 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75 65  Attribute("value
2a20: 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
2a30: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
2a40: 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65 74 41 74   = element.GetAt
2a50: 74 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29  tribute("value")
2a60: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
2a70: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2a80: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2a90: 20 20 20 20 20 20 20 69 66 20 28 65 78 70 61 6e         if (expan
2aa0: 64 20 26 26 20 21 53 74 72 69 6e 67 2e 49 73 4e  d && !String.IsN
2ab0: 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65  ullOrEmpty(value
2ac0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
2ad0: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
2ae0: 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78  = Environment.Ex
2af0: 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  pandEnvironmentV
2b00: 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b  ariables(value);
2b10: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
2b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2b30: 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
2b40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
2b60: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
2b70: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2b80: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
2b90: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
2ba0: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
2bb0: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
2bc0: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
2bd0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
2be0: 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
2bf0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
2c00: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
2c10: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
2c20: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
2c30: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2c40: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
2c60: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
2c70: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
2c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c90: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
2ca0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
2cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc0: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
2cd0: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
2ce0: 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20 73   failed to get s
2cf0: 65 74 74 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20  etting " +..    
2d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d10: 20 20 22 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65    "\"{0}\" value
2d20: 3a 20 7b 31 7d 22 2c 20 6e 61 6d 65 2c 20 65 29  : {1}", name, e)
2d30: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
2d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2d50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
2d60: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
2d70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d80: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
2d90: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
2da0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
2dc0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
2dd0: 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20  n @default;..   
2de0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
2df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e30: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2e40: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2e50: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2e60: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2e70: 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53 74 72  string ListToStr
2e80: 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69 6e 67  ing(IList<string
2e90: 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 7b  > list)..      {
2ea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
2eb0: 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  list == null).. 
2ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2ed0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
2ee0: 20 20 20 20 20 20 20 53 74 72 69 6e 67 42 75 69         StringBui
2ef0: 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e 65  lder result = ne
2f00: 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28  w StringBuilder(
2f10: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2f20: 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20  foreach (string 
2f30: 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29  element in list)
2f40: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
2f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2f60: 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c  (element == null
2f70: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2f80: 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
2f90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fa0: 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74  if (result.Lengt
2fb0: 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  h > 0)..        
2fc0: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
2fd0: 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d  .Append(' ');...
2fe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
2ff0: 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65  esult.Append(ele
3000: 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ment);..        
3010: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
3020: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 54   return result.T
3030: 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
3040: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
3050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3090: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
30a0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
30b0: 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63 68 69  nt CheckForArchi
30c0: 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66  tecturesAndPlatf
30d0: 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20 20 20  orms(..         
30e0: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
30f0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  y,..          re
3100: 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d  f List<string> m
3110: 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20 20 20  atches..        
3120: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
3130: 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75          int resu
3140: 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  lt = 0;....     
3150: 20 20 20 20 20 69 66 20 28 6d 61 74 63 68 65 73       if (matches
3160: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
3170: 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73           matches
3180: 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69   = new List<stri
3190: 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ng>();....      
31a0: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
31b0: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
31c0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31d0: 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
31e0: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
31f0: 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d 0a 20  directory) &&.. 
3200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3210: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
3220: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
3230: 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   != null))..    
3240: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
3260: 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c 75 65  oreach (KeyValue
3270: 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73 74 72  Pair<string, str
3280: 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20 20 20  ing> pair..     
3290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32a0: 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63 65 73         in proces
32b0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
32c0: 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20  latforms)..     
32d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
32e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f0: 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74        if (Direct
3300: 6f 72 79 2e 45 78 69 73 74 73 28 50 61 74 68 2e  ory.Exists(Path.
3310: 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72  Combine(director
3320: 79 2c 20 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a  y, pair.Key)))..
3330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3340: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3360: 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 70     matches.Add(p
3370: 61 69 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20  air.Key);..     
3380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3390: 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a       result++;..
33a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33d0: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20   string value = 
33e0: 70 61 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20  pair.Value;.... 
33f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3400: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
3410: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
3420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3430: 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
3440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3450: 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74        if (Direct
3460: 6f 72 79 2e 45 78 69 73 74 73 28 50 61 74 68 2e  ory.Exists(Path.
3470: 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72  Combine(director
3480: 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a 20 20 20  y, value)))..   
3490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
34b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34c0: 6d 61 74 63 68 65 73 2e 41 64 64 28 76 61 6c 75  matches.Add(valu
34d0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
34e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
34f0: 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20  esult++;..      
3500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3510: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
3520: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3530: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3540: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3550: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
3560: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
3570: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
35c0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
35d0: 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b 41  atic bool CheckA
35e0: 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65 28  ssemblyCodeBase(
35f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73 73 65  ..          Asse
3600: 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 2c 0d 0a  mbly assembly,..
3610: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
3620: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20  ring fileName.. 
3630: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
3640: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
3650: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
3660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
3670: 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e  f (assembly == n
3680: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3690: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
36a0: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
36b0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f         string co
36c0: 64 65 42 61 73 65 20 3d 20 61 73 73 65 6d 62 6c  deBase = assembl
36d0: 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a 20  y.CodeBase;.... 
36e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
36f0: 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
3700: 45 6d 70 74 79 28 63 6f 64 65 42 61 73 65 29 29  Empty(codeBase))
3710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3720: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
3730: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3740: 20 20 20 55 72 69 20 75 72 69 20 3d 20 6e 65 77     Uri uri = new
3750: 20 55 72 69 28 63 6f 64 65 42 61 73 65 29 3b 0d   Uri(codeBase);.
3760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
3770: 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69 6c 65 4e  tring localFileN
3780: 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63 61 6c 50  ame = uri.LocalP
3790: 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ath;....        
37a0: 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e        if (!File.
37b0: 45 78 69 73 74 73 28 6c 6f 63 61 6c 46 69 6c 65  Exists(localFile
37c0: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
37d0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
37e0: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
37f0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
3800: 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68  directory = Path
3810: 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d  .GetDirectoryNam
3820: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
3830: 20 20 20 20 20 20 6c 6f 63 61 6c 46 69 6c 65 4e        localFileN
3840: 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  ame); /* throw *
3850: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
3860: 20 20 20 73 74 72 69 6e 67 20 78 6d 6c 43 6f 6e     string xmlCon
3870: 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61  figFileName = Pa
3880: 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20  th.Combine(..   
3890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
38a0: 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e  irectory, XmlCon
38b0: 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  figFileName);...
38c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
38d0: 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 78  f (File.Exists(x
38e0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
38f0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
3900: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
3910: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
3920: 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
3930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3940: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
3950: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
3970: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
3980: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
3990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39a0: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
39b0: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
39c0: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
39d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39e0: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
39f0: 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
3a00: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
3a10: 6f 6e 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20  on file " +..   
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a30: 20 20 20 20 20 20 20 22 76 69 61 20 63 6f 64 65         "via code
3a40: 20 62 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e   base for curren
3a50: 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
3a60: 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22  sembly: \"{0}\""
3a70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
3a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 6d 6c               xml
3a90: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29  ConfigFileName))
3aa0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
3ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ac0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
3ad0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
3ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
3af0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b00: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
3b10: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
3b20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
3b30: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
3b40: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
3b50: 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d  e = localFileNam
3b60: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
3b70: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
3b80: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
3b90: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
3ba0: 20 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67       List<string
3bb0: 3e 20 6d 61 74 63 68 65 73 20 3d 20 6e 75 6c 6c  > matches = null
3bc0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3bd0: 20 20 20 69 66 20 28 43 68 65 63 6b 46 6f 72 41     if (CheckForA
3be0: 72 63 68 69 74 65 63 74 75 72 65 73 41 6e 64 50  rchitecturesAndP
3bf0: 6c 61 74 66 6f 72 6d 73 28 64 69 72 65 63 74 6f  latforms(directo
3c00: 72 79 2c 20 72 65 66 20 6d 61 74 63 68 65 73 29  ry, ref matches)
3c10: 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
3c20: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
3c30: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
3c40: 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a  RACE_DETECTION..
3c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c60: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
3c70: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c90: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
3ca0: 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
3cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3cc0: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
3cd0: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
3ce0: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
3cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d00: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
3d10: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f  ry pre-loader fo
3d20: 75 6e 64 20 6e 61 74 69 76 65 20 73 75 62 2d 64  und native sub-d
3d30: 69 72 65 63 74 6f 72 69 65 73 20 22 20 2b 0d 0a  irectories " +..
3d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d50: 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20 63            "via c
3d60: 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75 72  ode base for cur
3d70: 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67  rently executing
3d80: 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d   assembly: \"{0}
3d90: 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  \"",..          
3da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3db0: 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 6d 61 74  ListToString(mat
3dc0: 63 68 65 73 29 29 29 3b 20 2f 2a 20 74 68 72 6f  ches))); /* thro
3dd0: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
3de0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
3e00: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
3e10: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
3e30: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
3e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e50: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e70: 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c  fileName = local
3e80: 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  FileName;..     
3e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
3ea0: 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
3eb0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3ec0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3ed0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
3ee0: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
3ef0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
3f00: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
3f10: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
3f20: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
3f30: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
3f40: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
3f50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
3f60: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
3f70: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
3f80: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
3f90: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
3fa0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fc0: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
3fd0: 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
3fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ff0: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
4000: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
4010: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4020: 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
4030: 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
4040: 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68  der failed to ch
4050: 65 63 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20  eck code base " 
4060: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
4070: 20 20 20 20 20 20 20 20 20 22 66 6f 72 20 63 75           "for cu
4080: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
4090: 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22  g assembly: {0}"
40a0: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
40b0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
40c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
40d0: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
40e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
40f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
4100: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
4110: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
4120: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
4130: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
4140: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
4150: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
4160: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
4170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
41a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
41b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
41c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
41d0: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
41e0: 75 72 6e 73 20 74 68 65 20 64 69 72 65 63 74 6f  urns the directo
41f0: 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d  ry for the assem
4200: 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65  bly currently be
4210: 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ing..      /// e
4220: 78 65 63 75 74 65 64 2e 0d 0a 20 20 20 20 20 20  xecuted...      
4230: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4240: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
4250: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
4260: 68 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  he directory for
4270: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75   the assembly cu
4280: 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78  rrently being ex
4290: 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c  ecuted -OR- null
42a0: 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69   if..      /// i
42b0: 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
42c0: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
42d0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
42e0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
42f0: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 41 73  tic string GetAs
4300: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
4310: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
4320: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
4330: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4340: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
4350: 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
4360: 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
4370: 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
4380: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4390: 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  assembly == null
43a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
43b0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
43c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
43d0: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
43e0: 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69  me = null;....#i
43f0: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
4400: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
4410: 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
4420: 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79  blyName assembly
4430: 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e  Name = assembly.
4440: 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20  GetName();....  
4450: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4460: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20  assemblyName == 
4470: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
4480: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4490: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
44a0: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
44b0: 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43  = assemblyName.C
44c0: 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73 65 0d  odeBase;..#else.
44d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
44e0: 66 20 28 21 43 68 65 63 6b 41 73 73 65 6d 62 6c  f (!CheckAssembl
44f0: 79 43 6f 64 65 42 61 73 65 28 61 73 73 65 6d 62  yCodeBase(assemb
4500: 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e 61 6d 65  ly, ref fileName
4510: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
4520: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
4530: 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69   assembly.Locati
4540: 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  on;..#endif.... 
4550: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
4560: 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
4570: 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
4580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4590: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
45a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
45b0: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
45c0: 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72  ry = Path.GetDir
45d0: 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e  ectoryName(fileN
45e0: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
45f0: 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
4600: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
4610: 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20  directory))..   
4620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4630: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
4640: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
4650: 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  urn directory;..
4660: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
4670: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
4680: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
4690: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
46a0: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
46b0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
46c0: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
46d0: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
46e0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
46f0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
4700: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
4710: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
4720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4730: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4740: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
4750: 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
4760: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
4770: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
4780: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
4790: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
47a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
47b0: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
47c0: 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
47d0: 74 6f 20 67 65 74 20 64 69 72 65 63 74 6f 72 79  to get directory
47e0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
47f0: 20 20 20 20 20 20 20 20 20 20 20 20 22 66 6f 72              "for
4800: 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
4810: 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b  ting assembly: {
4820: 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
4830: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
4840: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4850: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
4860: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4880: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
4890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
48a0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
48b0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
48c0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
48d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
48e0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
48f0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4940: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 70        #region Op
4950: 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53 51  tional Native SQ
4960: 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72 65  Lite Library Pre
4970: 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20  -Loading Code.. 
4980: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f       //..      /
4990: 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61 72  / NOTE: If we ar
49a0: 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68  e looking for th
49b0: 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  e standard SQLit
49c0: 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e  e DLL ("sqlite3.
49d0: 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f  dll"),..      //
49e0: 20 20 20 20 20 20 20 74 68 65 20 69 6e 74 65 72         the inter
49f0: 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e  op DLL ("SQLite.
4a00: 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f  Interop.dll"), o
4a10: 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67  r we are running
4a20: 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   on the..      /
4a30: 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d  /       .NET Com
4a40: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20  pact Framework, 
4a50: 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64  we should includ
4a60: 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c  e this code (onl
4a70: 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20 20 20  y if the..      
4a80: 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75 72 65  //       feature
4a90: 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62 65   has actually be
4aa0: 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20 54 68  en enabled).  Th
4ab0: 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 62 65  is code would be
4ac0: 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20   totally..      
4ad0: 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e 64 61  //       redunda
4ae0: 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64 75 6c  nt if this modul
4af0: 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e 64 6c  e has been bundl
4b00: 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69 78 65  ed into the mixe
4b10: 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f  d-mode..      //
4b20: 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e         assembly.
4b30: 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20  ..      //..#if 
4b40: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20  SQLITE_STANDARD 
4b50: 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  || USE_INTEROP_D
4b60: 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43  LL || PLATFORM_C
4b70: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
4b80: 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  ...      //..   
4b90: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79     // NOTE: Only
4ba0: 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65 20   compile in the 
4bb0: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  native library p
4bc0: 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66 20  re-load code if 
4bd0: 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20 20 20  the feature..   
4be0: 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73 20     //       has 
4bf0: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72  been enabled for
4c00: 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20   this build...  
4c10: 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c      //..#if PREL
4c20: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
4c30: 52 59 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  RY..      /// <s
4c40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
4c50: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
4c60: 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  he environment v
4c70: 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69  ariable containi
4c80: 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
4c90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68  ..      /// arch
4ca0: 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
4cb0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e  current process.
4cc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
4cd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
4ce0: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
4cf0: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50 52 4f  donly string PRO
4d00: 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54  CESSOR_ARCHITECT
4d10: 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  URE =..         
4d20: 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48   "PROCESSOR_ARCH
4d30: 49 54 45 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20  ITECTURE";....  
4d40: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
4d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
4d90: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
4da0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
4db0: 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f  is is the P/Invo
4dc0: 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77  ke method that w
4dd0: 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20  raps the native 
4de0: 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72  Win32 LoadLibrar
4df0: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  y..      /// fun
4e00: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
4e10: 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69  MSDN documentati
4e20: 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61  on for full deta
4e30: 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a  ils on what it..
4e40: 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d        /// does..
4e50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
4e60: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
4e70: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69   <param name="fi
4e80: 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  leName">..      
4e90: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
4ea0: 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c  the executable l
4eb0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
4ec0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
4ed0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
4ee0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
4ef0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
4f00: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
4f10: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
4f20: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
4f30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
4f40: 72 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46  rns>..#if !PLATF
4f50: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4f60: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c 6c  WORK..      [Dll
4f70: 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32  Import("kernel32
4f80: 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  ",..#else..     
4f90: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72   [DllImport("cor
4fa0: 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a  edll",..#endif..
4fb0: 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e            Callin
4fc0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
4fd0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
4fe0: 57 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20  Winapi, CharSet 
4ff0: 3d 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d  = CharSet.Auto,.
5000: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
5010: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
5020: 0a 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46  .          BestF
5030: 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73  itMapping = fals
5040: 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70  e, ThrowOnUnmapp
5050: 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c  ableChar = true,
5060: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
5070: 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72      SetLastError
5080: 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20   = true)]..     
5090: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
50a0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f  extern IntPtr Lo
50b0: 61 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67  adLibrary(string
50c0: 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   fileName);.... 
50d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
50e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
5120: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
5130: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
5140: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
5150: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
5160: 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e  This is the P/In
5170: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74  voke method that
5180: 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76   wraps the nativ
5190: 65 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65  e Win32 GetSyste
51a0: 6d 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f  mInfo..      ///
51b0: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
51c0: 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
51d0: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
51e0: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
51f0: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
5200: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
5210: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5220: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5230: 3d 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a  ="systemInfo">..
5240: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79        /// The sy
5250: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
5260: 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65   structure to be
5270: 20 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68   filled in by th
5280: 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  e function...   
5290: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
52a0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
52b0: 74 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c  t("coredll", Cal
52c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
52d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
52e0: 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20  on.Winapi)]..   
52f0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
5300: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65  c extern void Ge
5310: 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20  tSystemInfo(out 
5320: 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74  SYSTEM_INFO syst
5330: 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20  emInfo);....    
5340: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
5390: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
53a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
53b0: 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e   enumeration con
53c0: 74 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62  tains the possib
53d0: 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  le values for th
53e0: 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20  e processor..   
53f0: 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74     /// architect
5400: 75 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65  ure field of the
5410: 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74   system informat
5420: 69 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ion structure...
5430: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5440: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
5450: 61 74 65 20 65 6e 75 6d 20 50 72 6f 63 65 73 73  ate enum Process
5460: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3a  orArchitecture :
5470: 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41   ushort /* COMPA
5480: 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20  T: Win32. */..  
5490: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
54a0: 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20   Intel = 0,..   
54b0: 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c         MIPS = 1,
54c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68  ..          Alph
54d0: 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20  a = 2,..        
54e0: 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a    PowerPC = 3,..
54f0: 20 20 20 20 20 20 20 20 20 20 53 48 78 20 3d 20            SHx = 
5500: 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52  4,..          AR
5510: 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20  M = 5,..        
5520: 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20    IA64 = 6,..   
5530: 20 20 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d         Alpha64 =
5540: 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d   7,..          M
5550: 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20  SIL = 8,..      
5560: 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a      AMD64 = 9,..
5570: 20 20 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f            IA32_o
5580: 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20  n_Win64 = 10,.. 
5590: 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e           Unknown
55a0: 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20   = 0xFFFF..     
55b0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
55c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5600: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
5610: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5620: 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63    /// This struc
5630: 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e  ture contains in
5640: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
5650: 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70  the current comp
5660: 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20  uter. This..    
5670: 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74    /// includes t
5680: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70  he processor typ
5690: 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65  e, page size, me
56a0: 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c 20  mory addresses, 
56b0: 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  etc...      /// 
56c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
56d0: 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
56e0: 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
56f0: 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70  ntial)]..      p
5700: 72 69 76 61 74 65 20 73 74 72 75 63 74 20 53 59  rivate struct SY
5710: 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20  STEM_INFO..     
5720: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75   {..          pu
5730: 62 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72  blic ProcessorAr
5740: 63 68 69 74 65 63 74 75 72 65 20 77 50 72 6f 63  chitecture wProc
5750: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
5760: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  e;..          pu
5770: 62 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65 73  blic ushort wRes
5780: 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53  erved; /* NOT US
5790: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
57a0: 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50   public uint dwP
57b0: 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20  ageSize; /* NOT 
57c0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
57d0: 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
57e0: 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63   lpMinimumApplic
57f0: 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a  ationAddress; /*
5800: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
5810: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
5820: 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41  ntPtr lpMaximumA
5830: 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73  pplicationAddres
5840: 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  s; /* NOT USED *
5850: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
5860: 6c 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76  lic uint dwActiv
5870: 65 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20  eProcessorMask; 
5880: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
5890: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
58a0: 20 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66   uint dwNumberOf
58b0: 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e  Processors; /* N
58c0: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
58d0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e        public uin
58e0: 74 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70  t dwProcessorTyp
58f0: 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  e; /* NOT USED *
5900: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
5910: 6c 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63  lic uint dwAlloc
5920: 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79  ationGranularity
5930: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
5940: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
5950: 69 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65  ic ushort wProce
5960: 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f  ssorLevel; /* NO
5970: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
5980: 20 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f       public usho
5990: 72 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76  rt wProcessorRev
59a0: 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53  ision; /* NOT US
59b0: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a  ED */..      }..
59c0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
59d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
5a20: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
5a30: 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f  te Data..      /
5a40: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5a50: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
5a60: 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e  ve module file n
5a70: 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
5a80: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
5a90: 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  y or null...    
5aa0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5ab0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
5ac0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 5f 53  static string _S
5ad0: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
5ae0: 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c  eFileName = null
5af0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
5b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
5b50: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5b60: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
5b70: 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f  module handle fo
5b80: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
5b90: 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 74  ite library or t
5ba0: 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  he value..      
5bb0: 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e  /// IntPtr.Zero.
5bc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
5bd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
5be0: 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
5bf0: 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  Ptr _SQLiteNativ
5c00: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20  eModuleHandle = 
5c10: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
5c20: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
5c30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
5c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c80: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
5c90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
5ca0: 2f 20 53 65 61 72 63 68 65 73 20 66 6f 72 20 74  / Searches for t
5cb0: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
5cc0: 20 6c 69 62 72 61 72 79 20 69 6e 20 74 68 65 20   library in the 
5cd0: 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
5ce0: 6e 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ning..      /// 
5cf0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
5d00: 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65  rently being exe
5d10: 63 75 74 65 64 20 61 73 20 77 65 6c 6c 20 61 73  cuted as well as
5d20: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
5d30: 6f 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ory..      /// f
5d40: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 61  or the current a
5d50: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
5d60: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
5d70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5d80: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
5d90: 22 62 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e  "baseDirectory">
5da0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e  ..      /// Upon
5db0: 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
5dc0: 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65  arameter will be
5dd0: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66   modified to ref
5de0: 65 72 20 74 6f 20 74 68 65 20 62 61 73 65 0d 0a  er to the base..
5df0: 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74        /// direct
5e00: 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ory containing t
5e10: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
5e20: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
5e30: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
5e40: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
5e50: 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41  name="processorA
5e60: 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20  rchitecture">.. 
5e70: 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
5e80: 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
5e90: 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f  meter will be mo
5ea0: 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72 20  dified to refer 
5eb0: 74 6f 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20  to the name..   
5ec0: 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 69 6d     /// of the im
5ed0: 6d 65 64 69 61 74 65 20 64 69 72 65 63 74 6f 72  mediate director
5ee0: 79 20 28 69 2e 65 2e 20 74 68 65 20 6f 66 66 73  y (i.e. the offs
5ef0: 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65  et from the base
5f00: 20 64 69 72 65 63 74 6f 72 79 29 0d 0a 20 20 20   directory)..   
5f10: 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e     /// containin
5f20: 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  g the native SQL
5f30: 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
5f40: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
5f50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
5f60: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
5f70: 20 4e 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63 65   Non-zero (succe
5f80: 73 73 29 20 69 66 20 74 68 65 20 6e 61 74 69 76  ss) if the nativ
5f90: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
5fa0: 20 77 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65   was found; othe
5fb0: 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f  rwise,..      //
5fc0: 2f 20 7a 65 72 6f 20 28 66 61 69 6c 75 72 65 29  / zero (failure)
5fd0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
5fe0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
5ff0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
6000: 6f 6c 20 53 65 61 72 63 68 46 6f 72 44 69 72 65  ol SearchForDire
6010: 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20  ctory(..        
6020: 20 20 72 65 66 20 73 74 72 69 6e 67 20 62 61 73    ref string bas
6030: 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20  eDirectory,     
6040: 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
6050: 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
6060: 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
6070: 69 74 65 63 74 75 72 65 20 2f 2a 20 6f 75 74 20  itecture /* out 
6080: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
6090: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
60a0: 20 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69      if (GetSetti
60b0: 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
60c0: 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
60d0: 61 64 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72 63  adSQLite_NoSearc
60e0: 68 46 6f 72 44 69 72 65 63 74 6f 72 79 22 2c 20  hForDirectory", 
60f0: 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  null) != null)..
6100: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
6110: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
6120: 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53 41  n false; /* DISA
6130: 42 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  BLED */..       
6140: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
6150: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6160: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
6170: 68 65 20 6c 69 73 74 20 6f 66 20 62 61 73 65 20  he list of base 
6180: 64 69 72 65 63 74 6f 72 69 65 73 20 61 6e 64 20  directories and 
6190: 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f  processor/platfo
61a0: 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  rm..          //
61b0: 20 20 20 20 20 20 20 6e 61 6d 65 73 2e 20 20 54         names.  T
61c0: 68 65 73 65 20 6c 69 73 74 73 20 77 69 6c 6c 20  hese lists will 
61d0: 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  be used to help 
61e0: 6c 6f 63 61 74 65 20 74 68 65 20 6e 61 74 69 76  locate the nativ
61f0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
6200: 20 20 20 20 20 20 53 51 4c 69 74 65 20 63 6f 72        SQLite cor
6210: 65 20 6c 69 62 72 61 72 79 20 28 6f 72 20 69 6e  e library (or in
6220: 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20  terop assembly) 
6230: 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f  to pre-load into
6240: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
6250: 20 20 20 20 20 74 68 69 73 20 70 72 6f 63 65 73       this proces
6260: 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  s...          //
6270: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
6280: 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72 69 65 73  ng[] directories
6290: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   = {..          
62a0: 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c 79 44      GetAssemblyD
62b0: 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66  irectory(),..#if
62c0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
62d0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
62e0: 20 20 20 20 20 20 20 20 20 20 20 41 70 70 44 6f             AppDo
62f0: 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
6300: 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
6310: 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ,..#endif..     
6320: 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20       };....     
6330: 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75       string[] su
6340: 62 44 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b  bDirectories = {
6350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6360: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
6370: 69 74 65 63 74 75 72 65 28 29 2c 20 47 65 74 50  itecture(), GetP
6380: 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c  latformName(null
6390: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d  )..          };.
63a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
63b0: 65 61 63 68 20 28 73 74 72 69 6e 67 20 64 69 72  each (string dir
63c0: 65 63 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74  ectory in direct
63d0: 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20  ories)..        
63e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
63f0: 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79     if (directory
6400: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
6410: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
6420: 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
6430: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
6440: 28 73 74 72 69 6e 67 20 73 75 62 44 69 72 65 63  (string subDirec
6450: 74 6f 72 79 20 69 6e 20 73 75 62 44 69 72 65 63  tory in subDirec
6460: 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20  tories)..       
6470: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6480: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
6490: 73 75 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  subDirectory == 
64a0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
64b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
64c0: 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
64d0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
64e0: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
64f0: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50  xUpDllFileName(P
6500: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20  ath.Combine(..  
6510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6520: 20 20 20 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65      Path.Combine
6530: 28 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44  (directory, subD
6540: 69 72 65 63 74 6f 72 79 29 2c 20 53 51 4c 49 54  irectory), SQLIT
6550: 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20  E_DLL));....    
6560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6580: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
6590: 74 68 65 20 53 51 4c 69 74 65 20 44 4c 4c 20 66  the SQLite DLL f
65a0: 69 6c 65 20 65 78 69 73 74 73 2c 20 72 65 74 75  ile exists, retu
65b0: 72 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20  rn success...   
65c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
65d0: 2f 20 20 20 20 20 20 20 50 72 69 6f 72 20 74 6f  /       Prior to
65e0: 20 72 65 74 75 72 6e 69 6e 67 2c 20 73 65 74 20   returning, set 
65f0: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
6600: 72 79 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  ry and..        
6610: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6620: 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
6630: 68 69 74 65 63 74 75 72 65 20 74 6f 20 72 65 66  hitecture to ref
6640: 6c 65 63 74 20 74 68 65 20 6c 6f 63 61 74 69 6f  lect the locatio
6650: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n..             
6660: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 68       //       wh
6670: 65 72 65 20 69 74 20 77 61 73 20 66 6f 75 6e 64  ere it was found
6680: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6690: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
66a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46             if (F
66b0: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
66c0: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
66d0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
66e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66f0: 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20    baseDirectory 
6700: 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  = directory;..  
6710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6720: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
6730: 68 69 74 65 63 74 75 72 65 20 3d 20 73 75 62 44  hitecture = subD
6740: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
6750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6760: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a   return true; /*
6770: 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20   FOUND */..     
6780: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
6790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
67a0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
67b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
67c0: 20 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46   false; /* NOT F
67d0: 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d  OUND */..      }
67e0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6830: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
6840: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6850: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
6860: 72 65 74 75 72 6e 73 20 74 68 65 20 62 61 73 65  returns the base
6870: 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68   directory of th
6880: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
6890: 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ation..      ///
68a0: 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20   domain...      
68b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
68c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
68d0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
68e0: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
68f0: 79 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  y for the curren
6900: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  t application do
6910: 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  main -OR- null i
6920: 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  f it..      /// 
6930: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
6940: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
6950: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
6960: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
6970: 63 20 73 74 72 69 6e 67 20 47 65 74 42 61 73 65  c string GetBase
6980: 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20  Directory()..   
6990: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
69a0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
69b0: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
69c0: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73  reLoadSQLite_Bas
69d0: 65 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69  eDirectory" envi
69e0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
69f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
6a00: 20 20 20 20 20 69 73 20 73 65 74 2c 20 75 73 65       is set, use
6a10: 20 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72   it verbatim for
6a20: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
6a30: 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ory...          
6a40: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
6a50: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d  ring directory =
6a60: 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
6a70: 28 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f  ("PreLoadSQLite_
6a80: 42 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d  BaseDirectory",.
6a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
6aa0: 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
6ab0: 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79     if (directory
6ac0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
6ad0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
6ae0: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69  directory;....#i
6af0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
6b00: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
6b10: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6b20: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
6b30: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
6b40: 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79  Lite_UseAssembly
6b50: 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72  Directory" envir
6b60: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
6b70: 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
6b80: 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20 61  ble is set (to a
6b90: 6e 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61  nything), then a
6ba0: 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68  ttempt to use th
6bb0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
6bc0: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20        directory 
6bd0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63  containing the c
6be0: 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
6bf0: 6e 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20  ng assembly..   
6c00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6c10: 28 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74  (i.e. System.Dat
6c20: 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61  a.SQLite) intsea
6c30: 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61  d of the applica
6c40: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  tion..          
6c50: 2f 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20  //       domain 
6c60: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d  base directory..
6c70: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
6c80: 20 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74           if (Get
6c90: 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20  SettingValue(.. 
6ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6cb0: 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
6cc0: 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63  UseAssemblyDirec
6cd0: 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20  tory", null) != 
6ce0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
6cf0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6d00: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65    directory = Ge
6d10: 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
6d20: 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ry();....       
6d30: 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63         if (direc
6d40: 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  tory != null).. 
6d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6d60: 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72   return director
6d70: 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  y;..          }.
6d80: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
6d90: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
6da0: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66  TE: Otherwise, f
6db0: 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67  allback on using
6dc0: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
6dd0: 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  ory of the..    
6de0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
6df0: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
6e00: 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
6e10: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6e20: 20 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f      return AppDo
6e30: 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61  main.CurrentDoma
6e40: 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79  in.BaseDirectory
6e50: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
6e60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6e70: 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72    // NOTE: Other
6e80: 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f  wise, fallback o
6e90: 6e 20 75 73 69 6e 67 20 74 68 65 20 64 69 72 65  n using the dire
6ea0: 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
6eb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
6ec0: 20 20 20 20 20 74 68 65 20 63 75 72 72 65 6e 74       the current
6ed0: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
6ee0: 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20  embly...        
6ef0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6f00: 72 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62  return GetAssemb
6f10: 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  lyDirectory();..
6f20: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d  #endif..      }.
6f30: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
6f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
6f90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6fa0: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
6fb0: 20 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e   the dynamic lin
6fc0: 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
6fd0: 61 6d 65 20 72 65 71 75 69 72 65 73 20 61 20 73  ame requires a s
6fe0: 75 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f  uffix..      ///
6ff0: 20 61 6e 64 20 61 64 64 73 20 69 74 20 69 66 20   and adds it if 
7000: 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20  necessary...    
7010: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7020: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
7030: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
7040: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
7050: 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61  he original dyna
7060: 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79  mic link library
7070: 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e   file name to in
7080: 73 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  spect...      //
7090: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
70a0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
70b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  .      /// The d
70c0: 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72  ynamic link libr
70d0: 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70  ary file name, p
70e0: 6f 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64  ossibly modified
70f0: 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a   to include an..
7100: 20 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73        /// extens
7110: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion...      /// 
7120: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
7130: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
7140: 20 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c   string FixUpDll
7150: 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20  FileName(..     
7160: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
7170: 4e 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  Name /* in */.. 
7180: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
7190: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
71a0: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
71b0: 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d  lOrEmpty(fileNam
71c0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
71d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
71e0: 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66  PlatformID platf
71f0: 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d  ormId = Environm
7200: 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c  ent.OSVersion.Pl
7210: 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20  atform;....     
7220: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70 6c           if ((pl
7230: 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74  atformId == Plat
7240: 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53 29 20 7c  formID.Win32S) |
7250: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
7260: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
7270: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
7280: 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d  in32Windows) ||.
7290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
72a0: 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d     (platformId =
72b0: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
72c0: 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20  32NT) ||..      
72d0: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
72e0: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
72f0: 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20  ormID.WinCE)).. 
7300: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7320: 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e    if (!fileName.
7330: 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65  EndsWith(DllFile
7340: 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20  Extension,..    
7350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7360: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
7370: 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
7380: 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20  noreCase))..    
7390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
73a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
73b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
73c0: 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65  leName + DllFile
73d0: 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20  Extension;..    
73e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
73f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
7400: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
7410: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
7420: 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  n fileName;..   
7430: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
7490: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
74a0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
74b0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
74c0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
74d0: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
74e0: 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
74f0: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
7500: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7510: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
7520: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
7530: 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
7540: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
7550: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
7560: 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  s -OR- null if i
7570: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  t..      /// can
7580: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
7590: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
75a0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
75b0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
75c0: 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73  tring GetProcess
75d0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
75e0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
75f0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
7600: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
7610: 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
7620: 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
7630: 74 65 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e  tecture" environ
7640: 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
7650: 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
7660: 65 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74  e is set, use it
7670: 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68   verbatim for th
7680: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
7690: 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  sor..          /
76a0: 2f 20 20 20 20 20 20 20 61 72 63 68 69 74 65 63  /       architec
76b0: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
76c0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
76d0: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
76e0: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
76f0: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
7700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
7710: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
7720: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
7730: 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  re", null);.... 
7740: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
7750: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
7760: 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re != null)..   
7770: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
7780: 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  n processorArchi
7790: 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20  tecture;....    
77a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
77b0: 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
77c0: 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20  ill this always 
77d0: 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20  be reliable?..  
77e0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
77f0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
7800: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
7810: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52  tSettingValue(PR
7820: 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
7830: 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  TURE, null);....
7840: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
7850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7890: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
78a0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
78b0: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
78c0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41  .          // HA
78d0: 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e  CK: Check for an
78e0: 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69   "impossible" si
78f0: 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65  tuation.  If the
7900: 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20   pointer size.. 
7910: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
7920: 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68    is 32-bits, th
7930: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
7940: 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20  itecture cannot 
7950: 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20  be "AMD64"...   
7960: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
7970: 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 77 65  In that case, we
7980: 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74   are almost cert
7990: 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20  ainly hitting a 
79a0: 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  bug in the..    
79b0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
79c0: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
79d0: 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74  and/or Visual St
79e0: 75 64 69 6f 20 74 68 61 74 20 63 61 75 73 65 73  udio that causes
79f0: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
7a00: 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45 53 53  //       PROCESS
7a10: 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20  OR_ARCHITECTURE 
7a20: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
7a30: 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20  able to contain 
7a40: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
7a50: 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61  /       wrong va
7a60: 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63  lue in some circ
7a70: 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61  umstances.  Plea
7a80: 73 65 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b  se refer to tick
7a90: 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  et..          //
7aa0: 20 20 20 20 20 20 20 5b 39 61 63 39 38 36 32 36         [9ac98626
7ab0: 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20  11] for further 
7ac0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20  information...  
7ad0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7ae0: 20 20 20 20 20 20 69 66 20 28 28 49 6e 74 50 74        if ((IntPt
7af0: 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66  r.Size == sizeof
7b00: 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20  (int)) &&..     
7b10: 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e           String.
7b20: 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72  Equals(processor
7b30: 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 22 41  Architecture, "A
7b40: 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20  MD64",..        
7b50: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
7b60: 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
7b70: 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a  alIgnoreCase))..
7b80: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
7b90: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
7ba0: 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
7bb0: 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
7bc0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
7bd0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68       // NOTE: Wh
7be0: 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e  en tracing is en
7bf0: 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20  abled, save the 
7c00: 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63  originally detec
7c10: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
7c20: 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
7c30: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
7c40: 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69  re before changi
7c50: 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  ng it...        
7c60: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7c70: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
7c80: 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63  avedProcessorArc
7c90: 68 69 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63  hitecture = proc
7ca0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
7cb0: 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  e;..#endif....  
7cc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
7cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7ce0: 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74   NOTE: We know t
7cf0: 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79  hat operating sy
7d00: 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72  stems that retur
7d10: 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20  n "AMD64" as..  
7d20: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
7d30: 20 20 20 20 20 74 68 65 20 70 72 6f 63 65 73 73       the process
7d40: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
7d50: 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73  are actually a s
7d60: 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20  uperset of..    
7d70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
7d80: 20 20 20 74 68 65 20 22 78 38 36 22 20 70 72 6f     the "x86" pro
7d90: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
7da0: 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  ure; therefore, 
7db0: 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20  return..        
7dc0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22        //       "
7dd0: 78 38 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f  x86" when the po
7de0: 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20 33 32  inter size is 32
7df0: 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20  -bits...        
7e00: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7e10: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
7e20: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
7e30: 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e  "x86";....#if !N
7e40: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
7e50: 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
7e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7e70: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
7e80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7e90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7eb0: 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74   NOTE: Show that
7ec0: 20 77 65 20 68 69 74 20 61 20 66 61 69 72 6c 79   we hit a fairly
7ed0: 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69   unusual situati
7ee0: 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20  on (i.e...      
7ef0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
7f00: 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22       the "wrong"
7f10: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
7f20: 74 65 63 74 75 72 65 20 77 61 73 20 64 65 74 65  tecture was dete
7f30: 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20  cted)...        
7f40: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
7f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f60: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
7f70: 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
7f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f90: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
7fa0: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
7fb0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
7fc0: 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
7fd0: 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
7fe0: 64 65 72 20 64 65 74 65 63 74 65 64 20 7b 30 7d  der detected {0}
7ff0: 2d 62 69 74 20 70 6f 69 6e 74 65 72 20 22 20 2b  -bit pointer " +
8000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8010: 20 20 20 20 20 20 20 20 22 73 69 7a 65 20 77 69          "size wi
8020: 74 68 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  th processor arc
8030: 68 69 74 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c  hitecture \"{1}\
8040: 22 2c 20 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20  ", using " +..  
8050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8060: 20 20 20 20 22 70 72 6f 63 65 73 73 6f 72 20 61      "processor a
8070: 72 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b 32  rchitecture \"{2
8080: 7d 5c 22 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c  }\" instead...",
8090: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
80a0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53          IntPtr.S
80b0: 69 7a 65 20 2a 20 38 20 2f 2a 20 62 69 74 73 20  ize * 8 /* bits 
80c0: 2a 2f 2c 20 73 61 76 65 64 50 72 6f 63 65 73 73  */, savedProcess
80d0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d  orArchitecture,.
80e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
80f0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
8100: 41 72 63 68 69 74 65 63 74 75 72 65 29 29 3b 20  Architecture)); 
8110: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
8120: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
8130: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
8140: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
8150: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8160: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
8170: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
8180: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
8190: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73           }..#els
81a0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  e..          if 
81b0: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
81c0: 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
81d0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
81e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
81f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8200: 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
8210: 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
8220: 77 6f 72 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f  work, attempt to
8230: 20 75 73 65 20 74 68 65 20 6e 61 74 69 76 65 0d   use the native.
8240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
8250: 2f 20 20 20 20 20 20 20 57 69 6e 33 32 20 41 50  /       Win32 AP
8260: 49 20 66 75 6e 63 74 69 6f 6e 20 28 76 69 61 20  I function (via 
8270: 50 2f 49 6e 76 6f 6b 65 29 20 74 68 61 74 20 63  P/Invoke) that c
8280: 61 6e 20 70 72 6f 76 69 64 65 20 75 73 0d 0a 20  an provide us.. 
8290: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
82a0: 20 20 20 20 20 20 77 69 74 68 20 74 68 65 20 70        with the p
82b0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
82c0: 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
82d0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
82e0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
82f0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
8300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8310: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
8320: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
8330: 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65  he output of the
8340: 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66   GetSystemInfo f
8350: 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d  unction will be.
8360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8370: 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 63     //       plac
8380: 65 64 20 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74  ed here.  Only t
8390: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
83a0: 68 69 74 65 63 74 75 72 65 20 66 69 65 6c 64 0d  hitecture field.
83b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
83c0: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 75     //       is u
83d0: 73 65 64 20 62 79 20 74 68 69 73 20 6d 65 74 68  sed by this meth
83e0: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
83f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
8400: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 59 53               SYS
8410: 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49  TEM_INFO systemI
8420: 6e 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nfo;....        
8430: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
8440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8450: 2f 2f 20 4e 4f 54 45 3a 20 51 75 65 72 79 20 74  // NOTE: Query t
8460: 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d  he system inform
8470: 61 74 69 6f 6e 20 76 69 61 20 50 2f 49 6e 76 6f  ation via P/Invo
8480: 6b 65 2c 20 74 68 75 73 0d 0a 20 20 20 20 20 20  ke, thus..      
8490: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
84a0: 20 20 20 20 20 66 69 6c 6c 69 6e 67 20 74 68 65       filling the
84b0: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
84c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
84d0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
84e0: 20 20 20 20 20 47 65 74 53 79 73 74 65 6d 49 6e       GetSystemIn
84f0: 66 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e 66  fo(out systemInf
8500: 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
8510: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
8520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
8530: 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74  / NOTE: Return t
8540: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
8550: 68 69 74 65 63 74 75 72 65 20 76 61 6c 75 65 20  hitecture value 
8560: 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20  as a string...  
8570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8580: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
8590: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
85a0: 72 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a 20  rchitecture =.. 
85b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85c0: 20 20 20 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e       systemInfo.
85d0: 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  wProcessorArchit
85e0: 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28  ecture.ToString(
85f0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
8600: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
8610: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
8620: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8630: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
8640: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
8650: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
8660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8680: 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61  // NOTE: Upon fa
8690: 69 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61 6e  ilure, return an
86a0: 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20   empty string.  
86b0: 54 68 69 73 20 77 69 6c 6c 20 70 72 65 76 65 6e  This will preven
86c0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
86d0: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 61   //       the ca
86e0: 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f  lling method fro
86f0: 6d 20 63 6f 6e 73 69 64 65 72 69 6e 67 20 74 68  m considering th
8700: 69 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61  is method call a
8710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8720: 2f 2f 20 20 20 20 20 20 20 22 66 61 69 6c 75 72  //       "failur
8730: 65 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e"...           
8740: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
8750: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
8760: 63 68 69 74 65 63 74 75 72 65 20 3d 20 53 74 72  chitecture = Str
8770: 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20  ing.Empty;..    
8780: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
8790: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
87a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
87f0: 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72  return processor
8800: 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20  Architecture;.. 
8810: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
8870: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8880: 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20        /// Given 
8890: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
88a0: 63 68 69 74 65 63 74 75 72 65 2c 20 72 65 74 75  chitecture, retu
88b0: 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  rns the name of 
88c0: 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20  the platform... 
88d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
88e0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
88f0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63  param name="proc
8900: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
8910: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
8920: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
8930: 68 69 74 65 63 74 75 72 65 20 74 6f 20 62 65 20  hitecture to be 
8940: 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61 20  translated to a 
8950: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
8960: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
8970: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
8980: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
8990: 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d 20  // The platform 
89a0: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70 65  name for the spe
89b0: 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72  cified processor
89c0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 2d 4f   architecture -O
89d0: 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f  R- null..      /
89e0: 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  // if it cannot 
89f0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
8a00: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
8a10: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
8a20: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
8a30: 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d  g GetPlatformNam
8a40: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
8a50: 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72  ring processorAr
8a60: 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69 6e  chitecture /* in
8a70: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
8a80: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
8a90: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
8aa0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
8ab0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
8ac0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
8ad0: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47  Architecture = G
8ae0: 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  etProcessorArchi
8af0: 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20  tecture();....  
8b00: 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
8b10: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
8b20: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
8b30: 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20  ecture))..      
8b40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
8b50: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
8b60: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
8b70: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
8b80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8b90: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
8ba0: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
8bb0: 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d  tforms == null).
8bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8bd0: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
8be0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8bf0: 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d   string platform
8c00: 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Name;....       
8c10: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
8c20: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8c30: 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74  Platforms.TryGet
8c40: 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
8c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
8c60: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
8c70: 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72  ure, out platfor
8c80: 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  mName))..       
8c90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8ca0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8cb0: 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b  rn platformName;
8cc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8cd0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
8ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
8cf0: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
8d00: 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f  ////////////////
8d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d50: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
8d60: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8d70: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
8d80: 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
8d90: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
8da0: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65  based on the spe
8db0: 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f  cified..      //
8dc0: 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20  / directory and 
8dd0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
8de0: 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ecture...      /
8df0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8e00: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
8e10: 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74  name="baseDirect
8e20: 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ory">..      ///
8e30: 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74   The base direct
8e40: 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c  ory to use, null
8e50: 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68   for default (th
8e60: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
8e70: 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74   of..      /// t
8e80: 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
8e90: 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20  cation domain). 
8ea0: 20 54 68 69 73 20 64 69 72 65 63 74 6f 72 79 20   This directory 
8eb0: 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74  should contain t
8ec0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  he..      /// pr
8ed0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
8ee0: 74 75 72 65 20 73 70 65 63 69 66 69 63 20 73 75  ture specific su
8ef0: 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a  b-directories...
8f00: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
8f10: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
8f20: 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65  aram name="proce
8f30: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8f40: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
8f50: 65 20 72 65 71 75 65 73 74 65 64 20 70 72 6f 63  e requested proc
8f60: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
8f70: 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66  re, null for def
8f80: 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20  ault (the..     
8f90: 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61   /// processor a
8fa0: 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
8fb0: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
8fc0: 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65  ss).  This calle
8fd0: 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20  r should..      
8fe0: 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79  /// almost alway
8ff0: 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66  s specify null f
9000: 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  or this paramete
9010: 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  r...      /// </
9020: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
9030: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
9040: 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
9050: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
9060: 20 54 68 65 20 63 61 6e 64 69 64 61 74 65 20 6e   The candidate n
9070: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c  ative module fil
9080: 65 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77  e name to load w
9090: 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68 65  ill be stored he
90a0: 72 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  re,..      /// i
90b0: 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
90c0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
90d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
90e0: 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d  am name="nativeM
90f0: 6f 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20  oduleHandle">.. 
9100: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
9110: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
9120: 65 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79  e as returned by
9130: 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69 6c   LoadLibrary wil
9140: 6c 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20 20  l be stored..   
9150: 20 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20     /// here, if 
9160: 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73  necessary.  This
9170: 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 49   value will be I
9180: 6e 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74 68  ntPtr.Zero if th
9190: 65 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20  e call to..     
91a0: 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79   /// LoadLibrary
91b0: 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f   fails...      /
91c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
91d0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
91e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
91f0: 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69  zero if the nati
9200: 76 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f  ve module was lo
9210: 61 64 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c  aded successfull
9220: 79 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20  y; otherwise,.. 
9230: 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a       /// zero...
9240: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
9250: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
9260: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
9270: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c  PreLoadSQLiteDll
9280: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
9290: 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72  ing baseDirector
92a0: 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  y,            /*
92b0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
92c0: 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73    string process
92d0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20  orArchitecture, 
92e0: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
92f0: 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
9300: 67 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69  g nativeModuleFi
9310: 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a  leName, /* out *
9320: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  /..          ref
9330: 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d 6f   IntPtr nativeMo
9340: 64 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a  duleHandle    /*
9350: 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
9360: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
9370: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9380: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
9390: 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  If the specified
93a0: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
93b0: 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65  is null, use the
93c0: 20 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20   default..      
93d0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e      //       (i.
93e0: 65 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75  e. attempt to au
93f0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65  tomatically dete
9400: 63 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20  ct it)...       
9410: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9420: 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f   if (baseDirecto
9430: 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
9440: 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
9450: 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61  irectory = GetBa
9460: 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  seDirectory();..
9470: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
9480: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
9490: 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
94a0: 74 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73  to query the bas
94b0: 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f  e directory, sto
94c0: 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
94d0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
94e0: 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72  if (baseDirector
94f0: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
9500: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9510: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
9520: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9530: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
9540: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
9550: 20 6c 69 62 72 61 72 79 20 65 78 69 73 74 73 20   library exists 
9560: 69 6e 20 74 68 65 20 62 61 73 65 20 64 69 72 65  in the base dire
9570: 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20  ctory..         
9580: 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66   //       itself
9590: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
95a0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
95b0: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
95c0: 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46  Name = FixUpDllF
95d0: 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d  ileName(Path.Com
95e0: 62 69 6e 65 28 62 61 73 65 44 69 72 65 63 74 6f  bine(baseDirecto
95f0: 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry,..           
9600: 20 20 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b     SQLITE_DLL));
9610: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
9620: 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69   (File.Exists(fi
9630: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
9640: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
9650: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
9660: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9670: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
9680: 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63 65   specified proce
9690: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
96a0: 65 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74  e is null, use t
96b0: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
96c0: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 2e 0d         default..
96d0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
96e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
96f0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
9700: 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re == null)..   
9710: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
9720: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
9730: 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41   = GetProcessorA
9740: 72 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a  rchitecture();..
9750: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
9760: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
9770: 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
9780: 74 6f 20 71 75 65 72 79 20 74 68 65 20 70 72 6f  to query the pro
9790: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
97a0: 75 72 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  ure, stop now...
97b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
97c0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
97d0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
97e0: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
97f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9800: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
9810: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9820: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c     // NOTE: Buil
9830: 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20  d the full path 
9840: 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  and file name fo
9850: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
9860: 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ite..          /
9870: 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
9880: 75 73 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73  using the proces
9890: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
98a0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
98b0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
98c0: 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
98d0: 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68  DllFileName(Path
98e0: 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f  .Combine(Path.Co
98f0: 6d 62 69 6e 65 28 62 61 73 65 44 69 72 65 63 74  mbine(baseDirect
9900: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
9910: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
9920: 68 69 74 65 63 74 75 72 65 29 2c 20 53 51 4c 49  hitecture), SQLI
9930: 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20  TE_DLL));....   
9940: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9950: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
9960: 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62   the file name b
9970: 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63  ased on the proc
9980: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
9990: 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20  re name..       
99a0: 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75     // is not fou
99b0: 6e 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68  nd, try using th
99c0: 65 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61  e associated pla
99d0: 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
99e0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
99f0: 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45       if (!File.E
9a00: 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
9a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
9a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
9a30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
9a40: 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  / NOTE: Attempt 
9a50: 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65  to translate the
9a60: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
9a70: 74 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20  tecture to a..  
9a80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
9a90: 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61       platform na
9aa0: 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me...           
9ab0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9ac0: 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74       string plat
9ad0: 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c  formName = GetPl
9ae0: 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65  atformName(proce
9af0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
9b00: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
9b10: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
9b20: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
9b30: 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74  f we failed to t
9b40: 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61  ranslate the pla
9b50: 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70  tform name, stop
9b60: 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
9b70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9b80: 20 20 20 20 20 20 20 69 66 20 28 70 6c 61 74 66         if (platf
9b90: 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  ormName == null)
9ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9bb0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
9bc0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9bd0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9be0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75       // NOTE: Bu
9bf0: 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74  ild the full pat
9c00: 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20  h and file name 
9c10: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
9c20: 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20  QLite..         
9c30: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
9c40: 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20  brary using the 
9c50: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
9c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9c70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9c80: 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
9c90: 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68  DllFileName(Path
9ca0: 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f  .Combine(Path.Co
9cb0: 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20 20 20  mbine(..        
9cc0: 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
9cd0: 72 65 63 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72  rectory, platfor
9ce0: 6d 4e 61 6d 65 29 2c 20 53 51 4c 49 54 45 5f 44  mName), SQLITE_D
9cf0: 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  LL));....       
9d00: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9d10: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
9d20: 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f  : If the file do
9d30: 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b  es not exist, sk
9d40: 69 70 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61  ip trying to loa
9d50: 64 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  d it...         
9d60: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9d70: 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
9d80: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
9d90: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
9da0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
9db0: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
9dc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72  ....          tr
9dd0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
9de0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
9df0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45  _20 && TRACE_PRE
9e00: 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20  LOAD..          
9e10: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
9e20: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9e30: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
9e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e50: 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20    // NOTE: Show 
9e60: 65 78 61 63 74 6c 79 20 77 68 65 72 65 20 77 65  exactly where we
9e70: 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c   are trying to l
9e80: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  oad the native..
9e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ea0: 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74    //       SQLit
9eb0: 65 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d  e library from..
9ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9ed0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9ee0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
9ef0: 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
9f00: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
9f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
9f20: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
9f30: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
9f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f50: 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
9f60: 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 69 73 20  y pre-loader is 
9f70: 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e  trying to load n
9f80: 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20 20  ative " +..     
9f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fa0: 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79   "SQLite library
9fb0: 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69   \"{0}\"...", fi
9fc0: 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72  leName)); /* thr
9fd0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
9fe0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9ff0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
a000: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
a010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a020: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
a030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
a040: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
a050: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a060: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
a070: 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 6c  TE: Attempt to l
a080: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c  oad the native l
a090: 69 62 72 61 72 79 2e 20 20 54 68 69 73 20 77 69  ibrary.  This wi
a0a0: 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20  ll either..     
a0b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
a0c0: 20 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69 64    return a valid
a0d0: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
a0e0: 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e  andle, return In
a0f0: 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20  tPtr.Zero,..    
a100: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
a110: 20 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20 65     or throw an e
a120: 78 63 65 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  xception...     
a130: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a140: 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
a150: 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20  eModuleFileName 
a160: 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  = fileName;..   
a170: 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
a180: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20  eModuleHandle = 
a190: 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65  LoadLibrary(file
a1a0: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
a1b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
a1c0: 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  nativeModuleHand
a1d0: 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
a1e0: 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  o);..          }
a1f0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
a200: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50  CT_20 && TRACE_P
a210: 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20  RELOAD..        
a220: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
a230: 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
a240: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
a250: 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
a260: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  f..          {..
a270: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
a280: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45  _20 && TRACE_PRE
a290: 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20  LOAD..          
a2a0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
a2b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a2c0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
a2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a2e0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 72 73 74    // NOTE: First
a2f0: 2c 20 67 72 61 62 20 74 68 65 20 6c 61 73 74 20  , grab the last 
a300: 57 69 6e 33 32 20 65 72 72 6f 72 20 6e 75 6d 62  Win32 error numb
a310: 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er...           
a320: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
a330: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
a340: 20 6c 61 73 74 45 72 72 6f 72 20 3d 20 4d 61 72   lastError = Mar
a350: 73 68 61 6c 2e 47 65 74 4c 61 73 74 57 69 6e 33  shal.GetLastWin3
a360: 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20 74 68 72  2Error(); /* thr
a370: 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  ow */....       
a380: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
a390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a3a0: 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77   // NOTE: Show w
a3b0: 68 65 72 65 20 77 65 20 66 61 69 6c 65 64 20 74  here we failed t
a3c0: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
a3d0: 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20  e SQLite..      
a3e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
a3f0: 20 20 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f       library fro
a400: 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65  m along with the
a410: 20 57 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64   Win32 error cod
a420: 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20  e and..         
a430: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
a440: 20 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f    exception info
a450: 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  rmation...      
a460: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
a470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a480: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
a490: 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
a4a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a4b0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
a4c0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
a4d0: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
a4e0: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
a4f0: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
a500: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
a510: 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
a520: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a530: 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
a540: 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28  ibrary \"{0}\" (
a550: 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b  getLastError = {
a560: 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20  1}): {2}",..    
a570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a580: 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74    fileName, last
a590: 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74  Error, e)); /* t
a5a0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
a5b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
a5c0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
a5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
a5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a5f0: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
a600: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a610: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
a620: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
a630: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
a640: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
a650: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
a660: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
a670: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a6c0: 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
a6d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
a6e0: 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
a6f0: 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
a700: 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
a710: 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65  work, the native
a720: 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
a730: 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20  y must..    //  
a740: 20 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63       be used bec
a750: 61 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73  ause it provides
a760: 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f   several workaro
a770: 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d  unds to .NET Com
a780: 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20  pact..    //    
a790: 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d     Framework lim
a7a0: 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61  itations importa
a7b0: 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70  nt for proper op
a7c0: 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63  eration of the c
a7d0: 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ore..    //     
a7e0: 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51    System.Data.SQ
a7f0: 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69  Lite functionali
a800: 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61  ty (e.g. being a
a810: 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20  ble to bind..   
a820: 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65   //       parame
a830: 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20  ters and handle 
a840: 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66  column values of
a850: 20 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64   types Int64 and
a860: 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f   Double)...    /
a870: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
a880: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
a890: 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
a8a0: 65 2e 49 6e 74 65 72 6f 70 2e 30 39 33 2e 64 6c  e.Interop.093.dl
a8b0: 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54  l";..#elif SQLIT
a8c0: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
a8d0: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
a8e0: 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74   Otherwise, if t
a8f0: 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
a900: 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e  te library is en
a910: 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a  abled, use it...
a920: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
a930: 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
a940: 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
a950: 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66  sqlite3";..#elif
a960: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
a970: 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ..      //..    
a980: 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
a990: 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76  se, if the nativ
a9a0: 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  e SQLite interop
a9b0: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61   assembly is ena
a9c0: 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20  bled,..    //   
a9d0: 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20      use it...   
a9e0: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
a9f0: 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
aa00: 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c  QLITE_DLL = "SQL
aa10: 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22  ite.Interop.dll"
aa20: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f  ;..#else..    //
aa30: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46  ..    // NOTE: F
aa40: 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74  inally, assume t
aa50: 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f  hat the mixed-mo
aa60: 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62  de assembly is b
aa70: 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20  eing used...    
aa80: 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
aa90: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
aaa0: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74  LITE_DLL = "Syst
aab0: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
aac0: 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ll";..#endif....
aad0: 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74      // This sect
aae0: 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70  ion uses interop
aaf0: 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f   calls that also
ab00: 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67   fetch text leng
ab10: 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63  th to optimize c
ab20: 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20  onversion...    
ab30: 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68  // When using th
ab40: 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20  e standard dll, 
ab50: 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74  we can replace t
ab60: 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20  hese calls with 
ab70: 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61  normal sqlite ca
ab80: 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20  lls and..    // 
ab90: 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63  do unoptimized c
aba0: 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65  onversions inste
abb0: 61 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20  ad afterwards.. 
abc0: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
abd0: 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e  op added textlen
abe0: 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  gth calls....#if
abf0: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
ac00: 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
ac10: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ac20: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ac30: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
ac40: 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  Ptr sqlite3_bind
ac50: 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f  _parameter_name_
ac60: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
ac70: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
ac80: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
ac90: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
aca0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
acb0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
acc0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
acd0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
ace0: 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74  atabase_name_int
acf0: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
ad00: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
ad10: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
ad20: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ad30: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
ad40: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ad50: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
ad60: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
ad70: 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  base_name16_inte
ad80: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
ad90: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
ada0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
adb0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
adc0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
add0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ade0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
adf0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
ae00: 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ype_interop(IntP
ae10: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
ae20: 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
ae30: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
ae40: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ae50: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ae60: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
ae70: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
ae80: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e  mn_decltype16_in
ae90: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
aea0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
aeb0: 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
aec0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
aed0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
aee0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
aef0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
af00: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
af10: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
af20: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
af30: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
af40: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
af50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
af60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
af70: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
af80: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
af90: 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28  _name16_interop(
afa0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
afb0: 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
afc0: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
afd0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
afe0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
aff0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
b000: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
b010: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
b020: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
b030: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
b040: 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
b050: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
b060: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
b070: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b080: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b090: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
b0a0: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f  n_origin_name16_
b0b0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
b0c0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
b0d0: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
b0e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b0f0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
b100: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b110: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
b120: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
b130: 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  able_name_intero
b140: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
b150: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
b160: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
b170: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b180: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
b190: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
b1a0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
b1b0: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
b1c0: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
b1d0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
b1e0: 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
b1f0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
b200: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b210: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
b220: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
b230: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
b240: 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f  lumn_text_intero
b250: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
b260: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
b270: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
b280: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b290: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
b2a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
b2b0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
b2c0: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f  3_column_text16_
b2d0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
b2e0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
b2f0: 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
b300: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b310: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
b320: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b330: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
b340: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69  sqlite3_errmsg_i
b350: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
b360: 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
b370: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
b380: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
b390: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b3a0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
b3b0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
b3c0: 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72  e3_prepare_inter
b3d0: 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  op(IntPtr db, In
b3e0: 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
b3f0: 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
b400: 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
b410: 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65  tr ptrRemain, re
b420: 66 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d  f int nRemain);.
b430: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
b440: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
b450: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b460: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
b470: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
b480: 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
b490: 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70  metadata_interop
b4a0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
b4b0: 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b  [] dbName, byte[
b4c0: 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b  ] tblName, byte[
b4d0: 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49  ] colName, ref I
b4e0: 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70  ntPtr ptrDataTyp
b4f0: 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
b500: 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e  rCollSeq, ref in
b510: 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69  t notNull, ref i
b520: 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72  nt primaryKey, r
b530: 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20  ef int autoInc, 
b540: 72 65 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72  ref int dtLen, r
b550: 65 66 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a  ef int csLen);..
b560: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b570: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
b580: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b590: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
b5a0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
b5b0: 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ext_interop(IntP
b5c0: 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65  tr p, ref int le
b5d0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
b5e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b5f0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
b600: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
b610: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
b620: 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  lue_text16_inter
b630: 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
b640: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
b650: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b660: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
b670: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b680: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
b690: 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e  3_malloc_size_in
b6a0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b  terop(IntPtr p);
b6b0: 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
b6c0: 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  LOG..    [DllImp
b6d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
b6e0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
b6f0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
b700: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
b710: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f  ite3_config_log_
b720: 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64  interop();..#end
b730: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  if..#endif..// !
b740: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
b750: 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
b760: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  n....    // Thes
b770: 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20  e functions add 
b780: 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f  existing functio
b790: 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66  nality on top of
b7a0: 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75   SQLite and requ
b7b0: 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66  ire a little eff
b7c0: 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67  ort to..    // g
b7d0: 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20  et working when 
b7e0: 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61  using the standa
b7f0: 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  rd SQLite librar
b800: 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  y...    #region 
b810: 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75  interop added fu
b820: 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23  nctionality....#
b830: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
b840: 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ARD....    [DllI
b850: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b860: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
b870: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
b880: 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69  ntPtr interop_li
b890: 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20  bversion();.... 
b8a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b8b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
b8c0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b8d0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
b8e0: 74 65 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29  terop_sourceid()
b8f0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
b900: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
b910: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
b920: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
b930: 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65   interop_compile
b940: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50  option_used(IntP
b950: 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d  tr zOptName);...
b960: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b970: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
b980: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b990: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
b9a0: 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f  interop_compileo
b9b0: 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29  ption_get(int N)
b9c0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
b9d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
b9e0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
b9f0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
ba00: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
ba10: 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  ite3_close_inter
ba20: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
ba30: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ba40: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
ba50: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ba60: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
ba70: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
ba80: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
ba90: 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  n_interop(IntPtr
baa0: 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
bab0: 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20  ame, int nArgs, 
bac0: 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
bad0: 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
bae0: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
baf0: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73  QLiteCallback fs
bb00: 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c  tep, SQLiteFinal
bb10: 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c  Callback ffinal,
bb20: 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71   int needCollSeq
bb30: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
bb40: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
bb50: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
bb60: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
bb70: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
bb80: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69  lite3_finalize_i
bb90: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
bba0: 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  mt);....    [Dll
bbb0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
bbc0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
bbd0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
bbe0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
bbf0: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
bc00: 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e  inish_interop(In
bc10: 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
bc20: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
bc30: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
bc40: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
bc50: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
bc60: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
bc70: 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79  _open_interop(by
bc80: 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d  te[] utf8Filenam
bc90: 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  e, SQLiteOpenFla
bca0: 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 72 65  gsEnum flags, re
bcb0: 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
bcc0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
bcd0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
bce0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
bcf0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
bd00: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
bd10: 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28  _open16_interop(
bd20: 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
bd30: 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
bd40: 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
bd50: 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  ref IntPtr db);.
bd60: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
bd70: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
bd80: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
bd90: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
bda0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
bdb0: 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70  e3_reset_interop
bdc0: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
bdd0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bde0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
bdf0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
be00: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
be10: 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e  lite3_changes_in
be20: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
be30: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ;..#endif..// !S
be40: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
be50: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
be60: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73  ....    // The s
be70: 74 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c  tandard api call
be80: 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20   equivalents of 
be90: 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f  the above intero
bea0: 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65  p calls..    #re
beb0: 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65  gion standard ve
bec0: 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f  rsions of intero
bed0: 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23  p functions....#
bee0: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
bef0: 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  RD....#if !PLATF
bf00: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
bf10: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
bf20: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
bf30: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bf40: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
bf50: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
bf60: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
bf70: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
bf80: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
bf90: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
bfa0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
bfb0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
bfc0: 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b  lose(IntPtr db);
bfd0: 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50  ....#if !INTEROP
bfe0: 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23  _LEGACY_CLOSE..#
bff0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
c000: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
c010: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c020: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
c030: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
c040: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
c050: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
c060: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c070: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
c080: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
c090: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
c0a0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
c0b0: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
c0c0: 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20  (IntPtr db); /* 
c0d0: 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64  3.7.14+ */..#end
c0e0: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
c0f0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
c100: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
c110: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
c120: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c130: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
c140: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
c150: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
c160: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c170: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
c180: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
c190: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
c1a0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
c1b0: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49  reate_function(I
c1c0: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
c1d0: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
c1e0: 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
c1f0: 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
c200: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
c210: 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
c220: 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
c230: 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
c240: 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  inal);....#if !P
c250: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c260: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c270: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c280: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c290: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c2a0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c2b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c2c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c2d0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c2e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c2f0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
c300: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
c310: 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50  e3_finalize(IntP
c320: 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
c330: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
c340: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
c350: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c360: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
c370: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
c380: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
c390: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
c3a0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c3b0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
c3c0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
c3d0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
c3e0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
c3f0: 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
c400: 69 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ish(IntPtr backu
c410: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
c420: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c430: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c440: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c450: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c460: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c470: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c480: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c490: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c4a0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c4b0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c4c0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
c4d0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
c4e0: 72 65 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d  reset(IntPtr stm
c4f0: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
c500: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c510: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c520: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c530: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c540: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c550: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c560: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c570: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c580: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c590: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c5a0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
c5b0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
c5c0: 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74  meter_name(IntPt
c5d0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
c5e0: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
c5f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c600: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c610: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c620: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c630: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c640: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c650: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c660: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c670: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c680: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c690: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
c6a0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
c6b0: 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50  tabase_name(IntP
c6c0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
c6d0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
c6e0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c6f0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
c700: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c710: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
c720: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
c730: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
c740: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
c750: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c760: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
c770: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c780: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
c790: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
c7a0: 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49  atabase_name16(I
c7b0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
c7c0: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
c7d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
c7e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
c7f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c800: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
c810: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
c820: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
c830: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
c840: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c850: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
c860: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
c870: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
c880: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
c890: 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74  n_decltype(IntPt
c8a0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
c8b0: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
c8c0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c8d0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c8e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c8f0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c900: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c910: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c920: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c930: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c940: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c950: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c960: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
c970: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
c980: 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72 20  cltype16(IntPtr 
c990: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
c9a0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
c9b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
c9c0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
c9d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c9e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c9f0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
ca00: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ca10: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
ca20: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ca30: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
ca40: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ca50: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
ca60: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
ca70: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
ca80: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
ca90: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
caa0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
cab0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
cac0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
cad0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
cae0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
caf0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
cb00: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
cb10: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
cb20: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
cb30: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
cb40: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
cb50: 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  umn_name16(IntPt
cb60: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
cb70: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
cb80: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
cb90: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
cba0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
cbb0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
cbc0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
cbd0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
cbe0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
cbf0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cc00: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
cc10: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
cc20: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
cc30: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
cc40: 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  igin_name(IntPtr
cc50: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
cc60: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
cc70: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
cc80: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
cc90: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
cca0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ccb0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
ccc0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ccd0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
cce0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ccf0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
cd00: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
cd10: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
cd20: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
cd30: 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  gin_name16(IntPt
cd40: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
cd50: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
cd60: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
cd70: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
cd80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
cd90: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
cda0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
cdb0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
cdc0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
cdd0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cde0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
cdf0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
ce00: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
ce10: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
ce20: 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ble_name(IntPtr 
ce30: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
ce40: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
ce50: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ce60: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ce70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
ce80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ce90: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cea0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ceb0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cec0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ced0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cee0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cef0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
cf00: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
cf10: 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  e_name16(IntPtr 
cf20: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
cf30: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
cf40: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
cf50: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
cf60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cf70: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cf80: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cf90: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
cfa0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cfb0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
cfc0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cfd0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cfe0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
cff0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
d000: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
d010: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
d020: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
d030: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
d040: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d050: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
d060: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
d070: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
d080: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
d090: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d0a0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
d0b0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
d0c0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
d0d0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
d0e0: 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74  umn_text16(IntPt
d0f0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
d100: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
d110: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
d120: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
d130: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d140: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
d150: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
d160: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
d170: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
d180: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d190: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
d1a0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d1b0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
d1c0: 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e  qlite3_errmsg(In
d1d0: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
d1e0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
d1f0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
d200: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d210: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
d220: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
d230: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
d240: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
d250: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d260: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
d270: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
d280: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
d290: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
d2a0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e  lite3_prepare(In
d2b0: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
d2c0: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
d2d0: 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
d2e0: 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
d2f0: 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66  rRemain);....#if
d300: 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d   USE_PREPARE_V2.
d310: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
d320: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d330: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d340: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
d350: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
d360: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d370: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
d380: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d390: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
d3a0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
d3b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d3c0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
d3d0: 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
d3e0: 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20  e_v2(IntPtr db, 
d3f0: 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
d400: 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74   nBytes, ref Int
d410: 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e  Ptr stmt, ref In
d420: 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
d430: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
d440: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
d450: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
d460: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d470: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
d480: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
d490: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
d4a0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
d4b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d4c0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
d4d0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d4e0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
d4f0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
d500: 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d  ite3_table_colum
d510: 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74  n_metadata(IntPt
d520: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
d530: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
d540: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
d550: 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
d560: 70 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66  ptrDataType, ref
d570: 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53   IntPtr ptrCollS
d580: 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e  eq, ref int notN
d590: 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69  ull, ref int pri
d5a0: 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74  maryKey, ref int
d5b0: 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69   autoInc);....#i
d5c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
d5d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d5e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d5f0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
d600: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
d610: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
d620: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
d630: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d640: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
d650: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
d660: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
d670: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
d680: 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20  lue_text(IntPtr 
d690: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
d6a0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
d6b0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
d6c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d6d0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
d6e0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
d6f0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
d700: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
d710: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d720: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
d730: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d740: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
d750: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
d760: 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t16(IntPtr p);..
d770: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
d780: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
d790: 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
d7a0: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
d7b0: 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
d7c0: 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
d7d0: 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
d7e0: 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
d7f0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20  method...    // 
d800: 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20  All of them are 
d810: 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20  "nice to haves" 
d820: 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72  and not necessar
d830: 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76  ily "need to hav
d840: 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  es"...    #regio
d850: 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  n no equivalent 
d860: 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d  standard method.
d870: 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
d880: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
d890: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d8a0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
d8b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d8c0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
d8d0: 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65  3_context_collse
d8e0: 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  q_interop(IntPtr
d8f0: 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e   context, ref in
d900: 74 20 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20  t type, ref int 
d910: 65 6e 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  enc, ref int len
d920: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
d930: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
d940: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
d950: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
d960: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
d970: 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e  t_collcompare_in
d980: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
d990: 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c  text, byte[] p1,
d9a0: 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65   int p1len, byte
d9b0: 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e  [] p2, int p2len
d9c0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
d9d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
d9e0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
d9f0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
da00: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
da10: 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77  lite3_cursor_row
da20: 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
da30: 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73  r stmt, int curs
da40: 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  or, ref long row
da50: 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  id);....    [Dll
da60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
da70: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
da80: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
da90: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
daa0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
dab0: 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f  lumn_info_intero
dac0: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
dad0: 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74  e[] catalog, byt
dae0: 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62  e[] IndexName, b
daf0: 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65  yte[] ColumnName
db00: 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72  , ref int sortOr
db10: 64 65 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45  der, ref int onE
db20: 72 72 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72  rror, ref IntPtr
db30: 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20   Collation, ref 
db40: 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d  int colllen);...
db50: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
db60: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
db70: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
db80: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
db90: 6c 69 74 65 33 5f 72 65 73 65 74 61 6c 6c 5f 69  lite3_resetall_i
dba0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
dbb0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
dbc0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
dbd0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
dbe0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
dbf0: 74 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f  t sqlite3_table_
dc00: 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49  cursor_interop(I
dc10: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
dc20: 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f  db, int tableRoo
dc30: 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69  tPage);....#endi
dc40: 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54  f..// !SQLITE_ST
dc50: 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65  ANDARD....    #e
dc60: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
dc70: 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49 20  // Standard API 
dc80: 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72  calls global acr
dc90: 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54  oss versions.  T
dca0: 68 65 72 65 20 61 72 65 20 61 20 66 65 77 20 69  here are a few i
dcb0: 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65  nstances of inte
dcc0: 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f  rop calls..    /
dcd0: 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e 20 68  / scattered in h
dce0: 65 72 65 2c 20 62 75 74 20 74 68 65 79 20 61 72  ere, but they ar
dcf0: 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68  e only active wh
dd00: 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  en PLATFORM_COMP
dd10: 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20  ACTFRAMEWORK is 
dd20: 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23  declared...    #
dd30: 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20  region standard 
dd40: 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73  sqlite api calls
dd50: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
dd60: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
dd70: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
dd80: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
dd90: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
dda0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
ddb0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
ddc0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
ddd0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
dde0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
ddf0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
de00: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
de10: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29  te3_libversion()
de20: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
de30: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
de40: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
de50: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
de60: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
de70: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
de80: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
de90: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
dea0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
deb0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
dec0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ded0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
dee0: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d  3_libversion_num
def0: 62 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ber();....#if !P
df00: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
df10: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
df20: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
df30: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
df40: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
df50: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
df60: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
df70: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
df80: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
df90: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
dfa0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
dfb0: 72 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65  r sqlite3_source
dfc0: 69 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  id();....#if !PL
dfd0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
dfe0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
dff0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e000: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
e010: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
e020: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
e030: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
e040: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e050: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
e060: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e070: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
e080: 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
e090: 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20  ion_used(IntPtr 
e0a0: 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  zOptName);....#i
e0b0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
e0c0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e0d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e0e0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
e0f0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
e100: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
e110: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
e120: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e130: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
e140: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
e150: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
e160: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
e170: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28  mpileoption_get(
e180: 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21  int N);....#if !
e190: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e1a0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
e1b0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e1c0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
e1d0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
e1e0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
e1f0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
e200: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e210: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
e220: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e230: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
e240: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
e250: 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f  te3_enable_load_
e260: 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20  extension(..    
e270: 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69      IntPtr db, i
e280: 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23  nt enable);....#
e290: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
e2a0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e2b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e2c0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
e2d0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
e2e0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
e2f0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
e300: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e310: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
e320: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
e330: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
e340: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
e350: 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74  sqlite3_load_ext
e360: 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ension(..       
e370: 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65   IntPtr db, byte
e380: 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74  [] fileName, byt
e390: 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65  e[] procName, re
e3a0: 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29  f IntPtr pError)
e3b0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
e3c0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
e3d0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
e3e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
e3f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e400: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
e410: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
e420: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
e430: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
e440: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
e450: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e460: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
e470: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76  rCode sqlite3_ov
e480: 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28  erload_function(
e490: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
e4a0: 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  r zName, int nAr
e4b0: 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44  gs);....#if WIND
e4c0: 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  OWS..#if !PLATFO
e4d0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
e4e0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
e4f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
e500: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e510: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
e520: 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
e530: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
e540: 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
e550: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e560: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
e570: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
e580: 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
e590: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
e5a0: 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
e5b0: 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72  e3_win32_set_dir
e5c0: 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63  ectory" SQLite c
e5d0: 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  ore library func
e5e0: 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20  tion is..    // 
e5f0: 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f        only suppo
e600: 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e  rted on Windows.
e610: 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
e620: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e630: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
e640: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e  Code sqlite3_win
e650: 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79  32_set_directory
e660: 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69  (uint type, stri
e670: 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  ng value);....#i
e680: 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45  f !DEBUG // NOTE
e690: 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e  : Should be "WIN
e6a0: 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45  32HEAP && !MEMDE
e6b0: 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46  BUG"..#if !PLATF
e6c0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e6d0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
e6e0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
e6f0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e700: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
e710: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
e720: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
e730: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e740: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
e750: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
e760: 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
e770: 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20  n32_reset_heap" 
e780: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
e790: 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d  ary function is.
e7a0: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
e7b0: 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ly supported on 
e7c0: 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65  Windows when the
e7d0: 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c   Win32 native al
e7e0: 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20  locator is in.. 
e7f0: 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20     //       use 
e800: 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74  (i.e. by default
e810: 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62  , in "Release" b
e820: 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
e830: 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20  Data.SQLite..   
e840: 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e   //       only).
e850: 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e    By default, in
e860: 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20   "Debug" builds 
e870: 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  of System.Data.S
e880: 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20  QLite, the..    
e890: 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55  //       MEMDEBU
e8a0: 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75  G allocator is u
e8b0: 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  sed...    //..  
e8c0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e8d0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
e8e0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
e8f0: 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61  _win32_reset_hea
e900: 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  p();....#if !PLA
e910: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e920: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e930: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e940: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e950: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e960: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e970: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e980: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e990: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e9a0: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
e9b0: 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
e9c0: 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
e9d0: 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20  ap" SQLite core 
e9e0: 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e  library function
e9f0: 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   is..    //     
ea00: 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64    only supported
ea10: 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e   on Windows when
ea20: 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
ea30: 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69  e allocator is i
ea40: 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  n..    //       
ea50: 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66  use (i.e. by def
ea60: 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73  ault, in "Releas
ea70: 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73  e" builds of Sys
ea80: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d  tem.Data.SQLite.
ea90: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
eaa0: 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74  ly).  By default
eab0: 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69  , in "Debug" bui
eac0: 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61  lds of System.Da
ead0: 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a  ta.SQLite, the..
eae0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d      //       MEM
eaf0: 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20  DEBUG allocator 
eb00: 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  is used...    //
eb10: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
eb20: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
eb30: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
eb40: 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61  ite3_win32_compa
eb50: 63 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74  ct_heap(ref uint
eb60: 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64   largest);..#end
eb70: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  if..#endif....#i
eb80: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
eb90: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
eba0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ebb0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
ebc0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
ebd0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
ebe0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
ebf0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ec00: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
ec10: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
ec20: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
ec30: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61  ntPtr sqlite3_ma
ec40: 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  lloc(int n);....
ec50: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ec60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ec70: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ec80: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
ec90: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
eca0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ecb0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
ecc0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ecd0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
ece0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ecf0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ed00: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
ed10: 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20 70  realloc(IntPtr p
ed20: 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66  , int n);....#if
ed30: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
ed40: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
ed50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ed60: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
ed70: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
ed80: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
ed90: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
eda0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
edb0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
edc0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
edd0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
ede0: 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  id sqlite3_free(
edf0: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
ee00: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
ee10: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
ee20: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ee30: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
ee40: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
ee50: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
ee60: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
ee70: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ee80: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
ee90: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
eea0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
eeb0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
eec0: 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62  qlite3_open_v2(b
eed0: 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
eee0: 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  me, ref IntPtr d
eef0: 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  b, SQLiteOpenFla
ef00: 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 49 6e  gsEnum flags, In
ef10: 74 50 74 72 20 76 66 73 29 3b 0d 0a 0d 0a 23 69  tPtr vfs);....#i
ef20: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
ef30: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
ef40: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ef50: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
ef60: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
ef70: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
ef80: 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
ef90: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
efa0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
efb0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
efc0: 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
efd0: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
efe0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
eff0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f000: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
f010: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65  Code sqlite3_ope
f020: 6e 31 36 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  n16(string fileN
f030: 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
f040: 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
f050: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f060: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
f070: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f080: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
f090: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
f0a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f0b0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
f0c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f0d0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
f0e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f0f0: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
f100: 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
f110: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
f120: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f130: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f140: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f150: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
f160: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
f170: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
f180: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
f190: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f1a0: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
f1b0: 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
f1c0: 69 64 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  id(IntPtr db);..
f1d0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
f1e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f1f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
f200: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f210: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
f220: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
f230: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
f240: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
f250: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f260: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
f270: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
f280: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
f290: 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49  qlite3_changes(I
f2a0: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
f2b0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
f2c0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
f2d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f2e0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
f2f0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
f300: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
f310: 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
f320: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
f330: 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
f340: 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a  memory_used();..
f350: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
f360: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f370: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
f380: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f390: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
f3a0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
f3b0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
f3c0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
f3d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
f3e0: 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ong sqlite3_memo
f3f0: 72 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74  ry_highwater(int
f400: 20 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65   resetFlag);..#e
f410: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
f420: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f430: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
f440: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f450: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
f460: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
f470: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f480: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
f490: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f4a0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
f4b0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f4c0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
f4d0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
f4e0: 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a  _shutdown();....
f4f0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
f500: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
f510: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f520: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
f530: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
f540: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f550: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
f560: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f570: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
f580: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
f590: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f5a0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
f5b0: 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69   sqlite3_busy_ti
f5c0: 6d 65 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c  meout(IntPtr db,
f5d0: 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66   int ms);....#if
f5e0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f5f0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f600: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f610: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
f620: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
f630: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
f640: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
f650: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f660: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
f670: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
f680: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
f690: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
f6a0: 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28  lite3_bind_blob(
f6b0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
f6c0: 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76   index, Byte[] v
f6d0: 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c  alue, int nSize,
f6e0: 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65   IntPtr nTransie
f6f0: 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  nt);....#if !PLA
f700: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f710: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
f720: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f730: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
f740: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
f750: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f760: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f770: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
f780: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
f790: 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
f7a0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
f7b0: 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20  t index, double 
f7c0: 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
f7d0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f7e0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f7f0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f800: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f810: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f820: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f830: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
f840: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
f850: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f860: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
f870: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f880: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
f890: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
f8a0: 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  _int(IntPtr stmt
f8b0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74  , int index, int
f8c0: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
f8d0: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
f8e0: 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73   This really jus
f8f0: 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33  t calls "sqlite3
f900: 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65  _bind_int"; howe
f910: 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d  ver, it has the.
f920: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f  .    //       co
f930: 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61  rrect type signa
f940: 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69  ture for an unsi
f950: 67 6e 65 64 20 28 33 32 2d 62 69 74 29 20 69 6e  gned (32-bit) in
f960: 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
f970: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
f980: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
f990: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f9a0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
f9b0: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
f9c0: 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c  _bind_int", Call
f9d0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
f9e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f9f0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
fa00: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
fa10: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
fa20: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
fa30: 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a  e3_bind_int")]..
fa40: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
fa50: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
fa60: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
fa70: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
fa80: 75 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  uint(IntPtr stmt
fa90: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e  , int index, uin
faa0: 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  t value);....#if
fab0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
fac0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
fad0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
fae0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
faf0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
fb00: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
fb10: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
fb20: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
fb30: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
fb40: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
fb50: 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
fb60: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e  , int index, lon
fb70: 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
fb80: 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  f....    //..   
fb90: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72   // NOTE: This r
fba0: 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73  eally just calls
fbb0: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
fbc0: 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20  nt64"; however, 
fbd0: 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20  it has the..    
fbe0: 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74  //       correct
fbf0: 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20   type signature 
fc00: 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20  for an unsigned 
fc10: 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e  long (64-bit) in
fc20: 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
fc30: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
fc40: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
fc50: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
fc60: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
fc70: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
fc80: 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61  _bind_int64", Ca
fc90: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
fca0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
fcb0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
fcc0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
fcd0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
fce0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
fcf0: 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50  bind_uint64(IntP
fd00: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
fd10: 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29  ex, ulong value)
fd20: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
fd30: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
fd40: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
fd50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
fd60: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
fd70: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
fd80: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
fd90: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
fda0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
fdb0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
fdc0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
fdd0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
fde0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
fdf0: 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28  lite3_bind_null(
fe00: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
fe10: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
fe20: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
fe30: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
fe40: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
fe50: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
fe60: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
fe70: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
fe80: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
fe90: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
fea0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
feb0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
fec0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
fed0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
fee0: 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 49  ite3_bind_text(I
fef0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
ff00: 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76 61  index, byte[] va
ff10: 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49  lue, int nlen, I
ff20: 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
ff30: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
ff40: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
ff50: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
ff60: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
ff70: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ff80: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
ff90: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ffa0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
ffb0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ffc0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
ffd0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
ffe0: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
fff0: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
10000 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73  r_count(IntPtr s
10010 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
10020 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10030 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10040 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10050 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10060 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10070 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10080 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10090 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
100a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
100b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
100c0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
100d0 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
100e0 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50 74  eter_index(IntPt
100f0 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73  r stmt, byte[] s
10100 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  trName);....#if 
10110 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10120 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10130 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10140 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
10150 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
10160 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10170 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
10180 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10190 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
101a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
101b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
101c0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
101d0 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d  count(IntPtr stm
101e0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
101f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10200 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10210 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10220 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10230 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10240 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10250 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10260 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10270 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10280 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10290 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
102a0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
102b0 73 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74  step(IntPtr stmt
102c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
102d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
102e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
102f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10300 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10310 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10320 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10330 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10340 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c  tic extern doubl
10350 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
10360 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73  _double(IntPtr s
10370 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
10380 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
10390 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
103a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
103b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
103c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
103d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
103e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
103f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
10400 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10410 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
10420 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10430 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
10440 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
10450 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
10460 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
10470 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10480 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10490 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
104a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
104b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
104c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
104d0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
104e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
104f0 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
10500 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49  3_column_int64(I
10510 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
10520 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d  index);..#endif.
10530 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10540 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10550 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10560 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10570 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10580 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10590 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
105a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
105b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
105c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
105d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
105e0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
105f0 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49  e3_column_blob(I
10600 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
10610 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
10620 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10630 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10640 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10650 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
10660 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
10670 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
10680 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
10690 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
106a0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
106b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
106c0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
106d0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
106e0 79 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74  ytes(IntPtr stmt
106f0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
10700 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10710 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10720 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10730 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10740 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10750 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10760 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10770 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10780 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10790 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
107a0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
107b0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
107c0 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74  lumn_bytes16(Int
107d0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
107e0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
107f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10800 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10810 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10820 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10830 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10840 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10850 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10860 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10870 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10880 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10890 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
108a0 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63  finity sqlite3_c
108b0 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74  olumn_type(IntPt
108c0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
108d0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
108e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
108f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10900 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10910 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10920 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10930 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10940 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10950 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10960 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10970 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10980 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
10990 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
109a0 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e  create_collation
109b0 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
109c0 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  [] strName, int 
109d0 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76  nType, IntPtr pv
109e0 55 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c  User, SQLiteColl
109f0 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a  ation func);....
10a00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10a10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10a20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10a30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
10a40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
10a50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10a60 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
10a70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10a80 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
10a90 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
10aa0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
10ab0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67   int sqlite3_agg
10ac0 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74  regate_count(Int
10ad0 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
10ae0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10af0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10b00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10b10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10b20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10b30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10b40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10b50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10b60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10b70 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10b80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10b90 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
10ba0 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50  _value_blob(IntP
10bb0 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
10bc0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10bd0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10be0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10bf0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10c00 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10c10 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10c20 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10c30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10c40 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10c50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10c60 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
10c70 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
10c80 65 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  es(IntPtr p);...
10c90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10ca0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10cb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10cc0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10cd0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10ce0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10cf0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10d00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10d10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10d20 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10d30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10d40 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
10d50 6c 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50  lue_bytes16(IntP
10d60 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
10d70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10d80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10d90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10da0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10db0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10dc0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10dd0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
10de0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64   static extern d
10df0 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61  ouble sqlite3_va
10e00 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  lue_double(IntPt
10e10 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  r p);..#endif...
10e20 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10e30 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10e40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10e50 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10e60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10e70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10e80 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10e90 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10ea0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10eb0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10ec0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10ed0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
10ee0 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70  lue_int(IntPtr p
10ef0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10f00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10f10 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10f20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10f30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10f40 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10f50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10f60 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10f70 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
10f80 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
10f90 74 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t64(IntPtr p);..
10fa0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
10fb0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
10fc0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
10fd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10fe0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10ff0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
11000 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
11010 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
11020 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11030 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
11040 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11050 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41  tic extern TypeA
11060 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f  ffinity sqlite3_
11070 76 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74  value_type(IntPt
11080 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
11090 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
110a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
110b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
110c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
110d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
110e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
110f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11100 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11110 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
11120 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11130 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
11140 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c  qlite3_result_bl
11150 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ob(IntPtr contex
11160 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  t, byte[] value,
11170 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50   int nSize, IntP
11180 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
11190 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
111a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
111b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
111c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
111d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
111e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
111f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
11200 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11210 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
11220 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
11230 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  le(IntPtr contex
11240 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  t, double value)
11250 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
11260 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11270 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
11280 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11290 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
112a0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
112b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
112c0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
112d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
112e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
112f0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11300 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
11310 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
11320 74 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63  t_error(IntPtr c
11330 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73  ontext, byte[] s
11340 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29  trErr, int nLen)
11350 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11360 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11370 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11380 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11390 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
113a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
113b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
113c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
113d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
113e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
113f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11400 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
11410 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
11420 63 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  code(IntPtr cont
11430 65 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72  ext, SQLiteError
11440 43 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  Code value);....
11450 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11460 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11470 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11480 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11490 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
114a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
114b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
114c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
114d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
114e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
114f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11500 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
11510 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69  sult_error_toobi
11520 67 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  g(IntPtr context
11530 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11540 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11550 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11560 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11570 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11580 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11590 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
115a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
115b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
115c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
115d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
115e0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
115f0 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
11600 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f  _nomem(IntPtr co
11610 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
11620 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
11630 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11640 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11650 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11660 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11670 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11680 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11690 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
116a0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
116b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
116c0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
116d0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
116e0 76 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e  value(IntPtr con
116f0 74 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c  text, IntPtr val
11700 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
11710 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11720 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11730 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11740 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11750 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11760 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11770 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11780 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11790 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
117a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
117b0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
117c0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72  lite3_result_zer
117d0 6f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e  oblob(IntPtr con
117e0 74 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  text, int nLen);
117f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11800 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11810 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11820 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
11830 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11840 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
11850 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11860 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11870 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11880 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11890 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
118a0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
118b0 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74  3_result_int(Int
118c0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
118d0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
118e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
118f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11900 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11910 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11920 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11930 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11940 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
11950 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11960 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
11970 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74  sult_int64(IntPt
11980 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20  r context, long 
11990 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
119a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
119b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
119c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
119d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
119e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
119f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11a00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11a10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
11a20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11a30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11a40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11a50 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
11a60 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74  _result_null(Int
11a70 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
11a80 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11a90 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11aa0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11ab0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11ac0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11ad0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11ae0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
11af0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11b00 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
11b10 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
11b20 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
11b30 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
11b40 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74  esult_text(IntPt
11b50 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
11b60 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65  ] value, int nLe
11b70 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
11b80 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
11b90 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
11ba0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
11bb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11bc0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
11bd0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
11be0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
11bf0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
11c00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11c10 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
11c20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11c30 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
11c40 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67  r sqlite3_aggreg
11c50 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50  ate_context(IntP
11c60 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
11c70 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20  nBytes);....#if 
11c80 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11c90 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11ca0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11cb0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11cc0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11cd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11ce0 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
11cf0 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
11d00 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11d10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11d20 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
11d30 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
11d40 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
11d50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11d60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
11d70 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
11d80 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74  text16(IntPtr st
11d90 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73  mt, int index, s
11da0 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74  tring value, int
11db0 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nlen, IntPtr pv
11dc0 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
11dd0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11de0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11df0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11e00 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11e10 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11e20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11e30 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
11e40 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
11e50 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11e60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11e70 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
11e80 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
11e90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11ea0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11eb0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
11ec0 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36  3_result_error16
11ed0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
11ee0 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
11ef0 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
11f00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11f10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11f20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11f30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11f40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11f50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11f60 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
11f70 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
11f80 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
11f90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11fa0 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
11fb0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
11fc0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11fd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11fe0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
11ff0 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36  e3_result_text16
12000 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
12010 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
12020 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
12030 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
12040 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f  ..#if INTEROP_CO
12050 44 45 43 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  DEC..#if !PLATFO
12060 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12070 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12080 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12090 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
120a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
120b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
120c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
120d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
120e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
120f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12100 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
12110 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b 65  rCode sqlite3_ke
12120 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
12130 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
12140 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  len);....#if !PL
12150 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12160 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12170 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12180 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12190 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
121a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
121b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
121c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
121d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
121e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
121f0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
12200 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
12210 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64  3_rekey(IntPtr d
12220 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
12230 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e  nt keylen);..#en
12240 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
12250 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12260 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12270 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12280 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12290 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
122a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
122b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
122c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
122d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
122e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
122f0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
12300 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f  qlite3_set_autho
12310 72 69 7a 65 72 28 49 6e 74 50 74 72 20 64 62 2c  rizer(IntPtr db,
12320 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
12330 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  rCallback func, 
12340 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
12350 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
12360 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12370 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
12380 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
12390 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
123a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
123b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
123c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
123d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
123e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
123f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12400 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
12410 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49  e3_update_hook(I
12420 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
12430 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 66  UpdateCallback f
12440 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
12450 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
12460 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12470 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12480 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12490 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
124a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
124b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
124c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
124d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
124e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
124f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12500 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
12510 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68  sqlite3_commit_h
12520 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
12530 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62  QLiteCommitCallb
12540 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
12550 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
12560 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12570 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12580 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12590 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
125a0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
125b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
125c0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
125d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
125e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
125f0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12600 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
12610 74 50 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61  tPtr sqlite3_tra
12620 63 65 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ce(IntPtr db, SQ
12630 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63  LiteTraceCallbac
12640 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
12650 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f  vUser);....    /
12660 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f  / Since sqlite3_
12670 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73 20 61  config() takes a
12680 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65   variable argume
12690 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65  nt list, we have
126a0 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63   to overload dec
126b0 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f  larations..    /
126c0 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62  / for all possib
126d0 6c 65 20 63 61 6c 6c 73 20 74 68 61 74 20 77 65  le calls that we
126e0 20 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a 23   want to use...#
126f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12700 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12710 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12720 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
12730 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
12740 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
12750 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
12760 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12770 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12780 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12790 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
127a0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
127b0 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
127c0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
127d0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
127e0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
127f0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e  lite3_config_non
12800 65 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70  e(SQLiteConfigOp
12810 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69  sEnum op);....#i
12820 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12830 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12840 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12850 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
12860 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63  int = "sqlite3_c
12870 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43  onfig", CallingC
12880 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12890 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
128a0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
128b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
128c0 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
128d0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63  int = "sqlite3_c
128e0 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66  onfig")]..#endif
128f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12900 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
12910 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
12920 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74 28  ite3_config_int(
12930 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45  SQLiteConfigOpsE
12940 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75  num op, int valu
12950 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
12960 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12970 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12980 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12990 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
129a0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c  sqlite3_config",
129b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
129c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
129d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
129e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
129f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12a00 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
12a10 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29  sqlite3_config")
12a20 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12a30 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12a40 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
12a50 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f  rCode sqlite3_co
12a60 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43  nfig_log(SQLiteC
12a70 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c  onfigOpsEnum op,
12a80 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61   SQLiteLogCallba
12a90 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
12aa0 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
12ab0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12ac0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12ad0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12ae0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12af0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12b00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12b10 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12b20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12b30 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12b40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12b50 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
12b60 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c  Ptr sqlite3_roll
12b70 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  back_hook(IntPtr
12b80 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62   db, SQLiteRollb
12b90 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ackCallback func
12ba0 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
12bb0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
12bc0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12bd0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12be0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12bf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12c00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12c10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12c20 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12c30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12c40 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12c50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12c60 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
12c70 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49  ite3_db_handle(I
12c80 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
12c90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12ca0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12cb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12cc0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12cd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12ce0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12cf0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12d00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12d10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12d20 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12d30 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12d40 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
12d50 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65   sqlite3_db_rele
12d60 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74  ase_memory(IntPt
12d70 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
12d80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12d90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12da0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12db0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12dc0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12dd0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12de0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12df0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12e00 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12e10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12e20 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
12e30 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  r sqlite3_db_fil
12e40 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c  ename(IntPtr db,
12e50 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
12e60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12e70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12e80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
12e90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
12ea0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12eb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
12ec0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12ed0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12ee0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12ef0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12f00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12f10 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
12f20 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e  te3_next_stmt(In
12f30 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
12f40 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
12f50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12f60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12f70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12f80 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12f90 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12fa0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12fb0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12fc0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12fd0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
12fe0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12ff0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
13000 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
13010 65 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64  e3_exec(IntPtr d
13020 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c  b, byte[] strSql
13030 2c 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62  , IntPtr pvCallb
13040 61 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61  ack, IntPtr pvPa
13050 72 61 6d 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ram, ref IntPtr 
13060 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20  errMsg);....#if 
13070 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13080 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13090 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
130a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
130b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
130c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
130d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
130e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
130f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
13100 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13110 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
13120 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65   sqlite3_release
13130 5f 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74  _memory(int nByt
13140 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  es);....#if !PLA
13150 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13160 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13170 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13180 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13190 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
131a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
131b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
131c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
131d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
131e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
131f0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
13200 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d  ite3_get_autocom
13210 6d 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  mit(IntPtr db);.
13220 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13230 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
13240 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
13250 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
13260 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
13270 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
13280 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
13290 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
132a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
132b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
132c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
132d0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
132e0 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65  ode sqlite3_exte
132f0 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65  nded_result_code
13300 73 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74  s(IntPtr db, int
13310 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20   onoff);....#if 
13320 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13330 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13340 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13350 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13360 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13370 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13380 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
13390 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
133a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
133b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
133c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
133d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
133e0 69 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74  ite3_errcode(Int
133f0 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
13400 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13410 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13420 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13430 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13440 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13450 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13460 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
13470 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13480 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
13490 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
134a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
134b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
134c0 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72  ite3_extended_er
134d0 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29  rcode(IntPtr db)
134e0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
134f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
13500 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
13510 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13520 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13530 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13540 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13550 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13560 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13570 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13580 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13590 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
135a0 69 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69  ite3_errstr(SQLi
135b0 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b  teErrorCode rc);
135c0 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a   /* 3.7.15+ */..
135d0 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73  ..    // Since s
135e0 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b  qlite3_log() tak
135f0 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72  es a variable ar
13600 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20  gument list, we 
13610 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64  have to overload
13620 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20   declarations.. 
13630 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f     // for all po
13640 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46  ssible calls.  F
13650 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f  or now, we are o
13660 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73  nly exposing a s
13670 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e  ingle string, an
13680 64 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64  d..    // depend
13690 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74   on the caller t
136a0 6f 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72  o format the str
136b0 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46  ing...#if !PLATF
136c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
136d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
136e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
136f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13700 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13710 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13720 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13730 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13740 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13750 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13760 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
13770 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72  te3_log(SQLiteEr
13780 72 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65  rorCode iErrCode
13790 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74  , byte[] zFormat
137a0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
137b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
137c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
137d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
137e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
137f0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13800 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13810 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13820 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13830 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13840 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13850 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
13860 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66  orCode sqlite3_f
13870 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50  ile_control(IntP
13880 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44  tr db, byte[] zD
13890 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49  bName, int op, I
138a0 6e 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a  ntPtr pArg);....
138b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
138c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
138d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
138e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
138f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13900 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13910 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13920 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13930 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13940 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13950 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13960 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
13970 62 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50  backup_init(IntP
13980 74 72 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b  tr destDb, byte[
13990 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74  ] zDestName, Int
139a0 50 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79  Ptr sourceDb, by
139b0 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65  te[] zSourceName
139c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
139d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
139e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
139f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13a00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13a10 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13a20 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13a30 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13a40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13a50 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13a60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13a70 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
13a80 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
13a90 61 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74  ackup_step(IntPt
13aa0 72 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50  r backup, int nP
13ab0 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  age);....#if !PL
13ac0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13ad0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
13ae0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13af0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
13b00 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
13b10 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13b20 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13b30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13b40 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13b50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13b60 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
13b70 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d  lite3_backup_rem
13b80 61 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61  aining(IntPtr ba
13b90 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
13ba0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13bb0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
13bc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13bd0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
13be0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
13bf0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
13c00 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
13c10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13c20 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
13c30 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
13c40 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
13c50 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61  qlite3_backup_pa
13c60 67 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62  gecount(IntPtr b
13c70 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  ackup);....#if !
13c80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13c90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13ca0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13cb0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13cc0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13cd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13ce0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13cf0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13d00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13d10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13d20 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
13d30 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
13d40 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
13d50 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
13d60 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66  tr zSQL);....#if
13d70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
13d80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13d90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13da0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13db0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13dc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
13dd0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
13de0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13df0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
13e00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13e10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
13e20 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72  tPtr sqlite3_mpr
13e30 69 6e 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d  intf(IntPtr form
13e40 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d  at, __arglist);.
13e50 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
13e60 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65  ...    // SQLite
13e70 20 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20   API calls that 
13e80 61 72 65 20 70 72 6f 76 69 64 65 64 20 62 79 20  are provided by 
13e90 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74  "well-known" ext
13ea0 65 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79  ensions that may
13eb0 20 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a   be statically..
13ec0 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69      // linked wi
13ed0 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  th the SQLite co
13ee0 72 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  re native librar
13ef0 79 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75  y currently in u
13f00 73 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  se...    #region
13f10 20 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74   extension sqlit
13f20 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 23 69 66  e api calls..#if
13f30 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
13f40 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41  _TABLE..#if !PLA
13f50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13f60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
13f70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13f80 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13f90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13fa0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13fb0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13fc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13fd0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13fe0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13ff0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
14000 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
14010 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
14020 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
14030 74 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c  tr name, ref sql
14040 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75  ite3_module modu
14050 6c 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65  le, IntPtr pClie
14060 6e 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f 79  ntData, xDestroy
14070 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79 29  Module xDestroy)
14080 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
14090 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
140a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
140b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
140c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
140d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
140e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
140f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14100 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14110 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14120 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14130 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
14140 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c  e3_dispose_modul
14150 65 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65  e(IntPtr pModule
14160 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
14170 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
14180 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
141d0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 71 6c  .    #region sql
141e0 69 74 65 20 69 6e 74 65 72 6f 70 20 61 70 69 20  ite interop api 
141f0 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70  calls (.NET Comp
14200 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e  act Framework on
14210 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  ly)..#if PLATFOR
14220 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14230 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54  RK && !SQLITE_ST
14240 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c  ANDARD..    [Dll
14250 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14260 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
14270 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
14280 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61 73  void sqlite3_las
14290 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69  t_insert_rowid_i
142a0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
142b0 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64  , ref long rowId
142c0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
142d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
142e0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
142f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
14300 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  id sqlite3_memor
14310 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72  y_used_interop(r
14320 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d  ef long bytes);.
14330 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
14340 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
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 76 6f 69 64 20  tic extern void 
14370 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68  sqlite3_memory_h
14380 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f 70  ighwater_interop
14390 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c 20  (int resetFlag, 
143a0 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b  ref long bytes);
143b0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
143c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
143d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
143e0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
143f0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
14400 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f  te3_bind_double_
14410 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
14420 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
14430 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
14440 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
14450 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14460 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14470 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
14480 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
14490 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
144a0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
144b0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
144c0 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29   ref long value)
144d0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
144e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
144f0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
14500 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
14510 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20  _interop")]..   
14520 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
14530 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
14540 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
14550 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65  bind_uint64_inte
14560 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
14570 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
14580 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d  ulong value);...
14590 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
145a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
145b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
145c0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
145d0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75  lite3_column_dou
145e0 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
145f0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
14600 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76  ex, ref double v
14610 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
14620 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14630 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
14640 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14650 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63  n void sqlite3_c
14660 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65  olumn_int64_inte
14670 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
14680 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
14690 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  long value);....
146a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
146b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
146c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
146d0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
146e0 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c  ite3_value_doubl
146f0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
14700 20 70 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76   p, ref double v
14710 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
14720 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
14730 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
14740 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
14750 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76  n void sqlite3_v
14760 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72  alue_int64_inter
14770 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66  op(IntPtr p, ref
14780 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a   Int64 value);..
14790 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
147a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
147b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
147c0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
147d0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f  qlite3_result_do
147e0 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
147f0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66  Ptr context, ref
14800 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
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 72 65 73 75 6c 74 5f 69  sqlite3_result_i
14860 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
14870 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66  Ptr context, ref
14880 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a   Int64 value);..
14890 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
148a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
148b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
148c0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
148d0 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
148e0 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
148f0 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20  e_interop(..    
14900 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 49      IntPtr db, I
14910 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50  ntPtr name, IntP
14920 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20  tr pModule, int 
14930 69 56 65 72 73 69 6f 6e 2c 20 78 43 72 65 61 74  iVersion, xCreat
14940 65 20 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20  e xCreate,..    
14950 20 20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f      xConnect xCo
14960 6e 6e 65 63 74 2c 20 78 42 65 73 74 49 6e 64 65  nnect, xBestInde
14970 78 20 78 42 65 73 74 49 6e 64 65 78 2c 20 78 44  x xBestIndex, xD
14980 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f  isconnect xDisco
14990 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 20  nnect,..        
149a0 78 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f  xDestroy xDestro
149b0 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20  y, xOpen xOpen, 
149c0 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78  xClose xClose, x
149d0 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 0d  Filter xFilter,.
149e0 0a 20 20 20 20 20 20 20 20 78 4e 65 78 74 20 78  .        xNext x
149f0 4e 65 78 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c  Next, xEof xEof,
14a00 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e   xColumn xColumn
14a10 2c 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 2c  , xRowId xRowId,
14a20 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65   xUpdate xUpdate
14a30 2c 0d 0a 20 20 20 20 20 20 20 20 78 42 65 67 69  ,..        xBegi
14a40 6e 20 78 42 65 67 69 6e 2c 20 78 53 79 6e 63 20  n xBegin, xSync 
14a50 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78  xSync, xCommit x
14a60 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63  Commit, xRollbac
14a70 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20  k xRollback,..  
14a80 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74        xFindFunct
14a90 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  ion xFindFunctio
14aa0 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61  n, xRename xRena
14ab0 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e 74 20 78  me, xSavepoint x
14ac0 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20  Savepoint,..    
14ad0 20 20 20 20 78 52 65 6c 65 61 73 65 20 78 52 65      xRelease xRe
14ae0 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b  lease, xRollback
14af0 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20  To xRollbackTo, 
14b00 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
14b10 74 61 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65  ta,..        xDe
14b20 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73  stroyModule xDes
14b30 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65  troyModule);..#e
14b40 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41  ndif..    // PLA
14b50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14b60 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54  MEWORK && !SQLIT
14b70 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
14b80 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
14b90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
14be0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74  .    #region Nat
14bf0 69 76 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 23  ive Delegates..#
14c00 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55  if INTEROP_VIRTU
14c10 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50  AL_TABLE..#if !P
14c20 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14c30 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
14c40 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
14c50 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
14c60 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14c70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
14c80 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
14c90 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
14ca0 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Create(..       
14cb0 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20   IntPtr pDb,..  
14cc0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75        IntPtr pAu
14cd0 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  x,..        int 
14ce0 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49  argc,..        I
14cf0 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
14d00 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
14d10 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
14d20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
14d30 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
14d40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
14d90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
14da0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
14db0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
14dc0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
14dd0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
14de0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
14df0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
14e00 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
14e10 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a  Code xConnect(..
14e20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
14e30 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  Db,..        Int
14e40 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
14e50 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
14e60 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
14e70 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
14e80 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
14e90 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
14ea0 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b  r pError..    );
14eb0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
14ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f00 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
14f10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14f20 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
14f30 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
14f40 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
14f50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14f60 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
14f70 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
14f80 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73  teErrorCode xBes
14f90 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
14fa0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
14fb0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
14fc0 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d  Index..    );...
14fd0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
14fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15020 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15030 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15040 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
15050 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
15060 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
15070 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
15080 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
15090 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
150a0 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e  rrorCode xDiscon
150b0 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49  nect(..        I
150c0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
150d0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
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 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
15130 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15140 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
15150 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
15160 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
15170 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15180 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
15190 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
151a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
151b0 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20  Destroy(..      
151c0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
151d0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
151e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15220 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
15230 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15240 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15250 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
15260 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
15270 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15280 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
15290 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
152a0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
152b0 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20  e xOpen(..      
152c0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
152d0 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
152e0 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
152f0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
15300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15340 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
15350 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15360 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
15370 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
15380 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
15390 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
153a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
153b0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
153c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
153d0 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Close(..        
153e0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
153f0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
15400 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66  /////////....#if
15450 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15460 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15470 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
15480 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
15490 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
154a0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
154b0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
154c0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
154d0 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20  e xFilter(..    
154e0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
154f0 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  or,..        int
15500 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20   idxNum,..      
15510 20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c    IntPtr idxStr,
15520 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
15530 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
15540 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 29 3b  Ptr argv..    );
15550 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
15560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
155a0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
155b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
155c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
155d0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
155e0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
155f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
15600 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
15610 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
15620 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78  teErrorCode xNex
15630 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  t(..        IntP
15640 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
15650 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
156b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
156c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
156d0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
156e0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
156f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15700 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
15710 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e  blic delegate in
15720 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20  t xEof(..       
15730 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
15740 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
157a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
157b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
157c0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
157d0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
157e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
157f0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
15800 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
15810 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
15820 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20  de xColumn(..   
15830 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
15840 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  sor,..        In
15850 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a  tPtr pContext,..
15860 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
15870 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  x..    );....   
15880 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
158d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
158e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
158f0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
15900 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
15910 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15920 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
15930 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
15940 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
15950 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20  Code xRowId(..  
15960 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
15970 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72  rsor,..        r
15980 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
15990 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
159a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
159f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15a00 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
15a10 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
15a20 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
15a30 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
15a40 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
15a50 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
15a60 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15a70 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20   xUpdate(..     
15a80 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
15a90 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
15aa0 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
15ab0 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
15ac0 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
15ad0 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  d..    );....   
15ae0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
15b30 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15b40 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15b50 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
15b60 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
15b70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15b80 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
15b90 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
15ba0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
15bb0 43 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20  Code xBegin(..  
15bc0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
15bd0 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
15be0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15c30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15c40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15c50 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
15c60 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
15c70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15c80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
15c90 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
15ca0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
15cb0 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20  rCode xSync(..  
15cc0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
15cd0 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
15ce0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15d30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15d40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15d50 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
15d60 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
15d70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
15d80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
15d90 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
15da0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
15db0 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a  rCode xCommit(..
15dc0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
15dd0 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
15de0 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15e30 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15e40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15e50 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
15e60 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
15e70 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
15e80 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
15e90 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
15ea0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
15eb0 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
15ec0 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  k(..        IntP
15ed0 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
15ee0 0d 0a 0d 0a 20 20 20 20 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
15f40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15f50 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
15f60 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
15f70 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
15f80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
15f90 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
15fa0 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20  ic delegate int 
15fb0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a  xFindFunction(..
15fc0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
15fd0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69  Vtab,..        i
15fe0 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20  nt nArg,..      
15ff0 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d    IntPtr zName,.
16000 0a 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c  .        ref SQL
16010 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c  iteCallback call
16020 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72  back,..        r
16030 65 66 20 49 6e 74 50 74 72 20 70 55 73 65 72 44  ef IntPtr pUserD
16040 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  ata..    );.... 
16050 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
16080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
160a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
160b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
160c0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
160d0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
160e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
160f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
16100 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
16110 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
16120 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d  orCode xRename(.
16130 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
16140 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
16150 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20  IntPtr zNew..   
16160 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
16170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
161c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
161d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
161e0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
161f0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
16200 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
16210 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
16220 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
16230 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
16240 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20  Savepoint(..    
16250 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
16260 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
16270 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29  Savepoint..    )
16280 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
16290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162d0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
162e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
162f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
16300 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
16310 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
16320 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
16330 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
16340 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
16350 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65  iteErrorCode xRe
16360 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20  lease(..        
16370 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
16380 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
16390 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d  point..    );...
163a0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
163b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
16400 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16410 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
16420 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
16430 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
16440 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
16450 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
16460 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
16470 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
16480 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 49  ckTo(..        I
16490 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
164a0 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
164b0 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  oint..    );....
164c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
164d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16510 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16520 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16530 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
16540 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
16550 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
16560 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
16570 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
16580 65 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44 65  elegate void xDe
16590 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50  stroyModule(IntP
165a0 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b  tr pClientData);
165b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65  ..#endif..    #e
165c0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
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 2f 2f 2f 2f 2f  ////////////////
165f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16620 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
16630 65 20 53 74 72 75 63 74 75 72 65 73 0d 0a 23 69  e Structures..#i
16640 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
16650 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74  L_TABLE..    [St
16660 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
16670 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
16680 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
16690 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
166a0 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20  module..    {.. 
166b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
166c0 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20  t iVersion;..   
166d0 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 72 65       public xCre
166e0 61 74 65 20 78 43 72 65 61 74 65 3b 0d 0a 20 20  ate xCreate;..  
166f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f        public xCo
16700 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d  nnect xConnect;.
16710 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16720 78 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74  xBestIndex xBest
16730 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20  Index;..        
16740 70 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65  public xDisconne
16750 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d  ct xDisconnect;.
16760 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16770 78 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f  xDestroy xDestro
16780 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y;..        publ
16790 69 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d  ic xOpen xOpen;.
167a0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
167b0 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a  xClose xClose;..
167c0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
167d0 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b 0d  Filter xFilter;.
167e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
167f0 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20  xNext xNext;..  
16800 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 45 6f        public xEo
16810 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20  f xEof;..       
16820 20 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20   public xColumn 
16830 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20  xColumn;..      
16840 20 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64 20    public xRowId 
16850 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20 20  xRowId;..       
16860 20 70 75 62 6c 69 63 20 78 55 70 64 61 74 65 20   public xUpdate 
16870 78 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20 20  xUpdate;..      
16880 20 20 70 75 62 6c 69 63 20 78 42 65 67 69 6e 20    public xBegin 
16890 78 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20  xBegin;..       
168a0 20 70 75 62 6c 69 63 20 78 53 79 6e 63 20 78 53   public xSync xS
168b0 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ync;..        pu
168c0 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f  blic xCommit xCo
168d0 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 70  mmit;..        p
168e0 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20  ublic xRollback 
168f0 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20  xRollback;..    
16900 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6e 64      public xFind
16910 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75  Function xFindFu
16920 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  nction;..       
16930 20 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20   public xRename 
16940 78 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  xRename;..      
16950 20 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73    /* The methods
16960 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65   above are in ve
16970 72 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73  rsion 1 of the s
16980 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20  qlite3_module.. 
16990 20 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74          * object
169a0 2e 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61  .  Those below a
169b0 72 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32  re for version 2
169c0 20 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f   and greater. */
169d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
169e0 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76   xSavepoint xSav
169f0 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20  epoint;..       
16a00 20 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73 65   public xRelease
16a10 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20   xRelease;..    
16a20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c      public xRoll
16a30 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b  backTo xRollback
16a40 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  To;..    }....  
16a50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16aa0 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
16ab0 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
16ac0 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
16ad0 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
16ae0 73 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a 20 20  sqlite3_vtab..  
16af0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
16b00 6c 69 63 20 49 6e 74 50 74 72 20 70 4d 6f 64 75  lic IntPtr pModu
16b10 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  le;..        pub
16b20 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a  lic int nRef; /*
16b30 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20   NO LONGER USED 
16b40 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
16b50 69 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d 73  ic IntPtr zErrMs
16b60 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  g;..    }....   
16b70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16bc0 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
16bd0 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
16be0 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
16bf0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
16c00 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
16c10 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  or..    {..     
16c20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
16c30 20 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a   pVTab;..    }..
16c40 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c90 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
16ca0 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
16cb0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
16cc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
16cd0 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
16ce0 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20  x_constraint..  
16cf0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
16d00 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  lic sqlite3_inde
16d10 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20  x_constraint(.. 
16d20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
16d30 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
16d40 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20   constraint..   
16d50 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
16d60 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
16d70 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
16d80 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
16d90 73 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29  straint != null)
16da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
16db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16dc0 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74   iColumn = const
16dd0 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a  raint.iColumn;..
16de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16df0 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  op = constraint.
16e00 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  op;..           
16e10 20 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f       usable = co
16e20 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b  nstraint.usable;
16e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16e40 20 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20    iTermOffset = 
16e50 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d  constraint.iTerm
16e60 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20  Offset;..       
16e70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
16e80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
16e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ed0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
16ee0 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75  public int iColu
16ef0 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  mn;..        pub
16f00 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43  lic SQLiteIndexC
16f10 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d  onstraintOp op;.
16f20 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16f30 62 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20  byte usable;..  
16f40 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
16f50 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20   iTermOffset;.. 
16f60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
16f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
16fc0 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
16fd0 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
16fe0 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
16ff0 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
17000 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d  3_index_orderby.
17010 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
17020 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69  public sqlite3_i
17030 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20  ndex_orderby(.. 
17040 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
17050 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72  eIndexOrderBy or
17060 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20  derBy..         
17070 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
17080 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
17090 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
170a0 20 20 20 69 66 20 28 6f 72 64 65 72 42 79 20 21     if (orderBy !
170b0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
170c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
170d0 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20          iColumn 
170e0 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d  = orderBy.iColum
170f0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
17100 20 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72      desc = order
17110 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20  By.desc;..      
17120 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
17130 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
17140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17180 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
17190 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c   public int iCol
171a0 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e  umn; /* Column n
171b0 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20  umber */..      
171c0 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65    public byte de
171d0 73 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f  sc;   /* True fo
171e0 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66  r DESC.  False f
171f0 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20  or ASC. */..    
17200 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17250 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
17260 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
17270 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
17280 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
17290 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
172a0 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
172b0 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  usage..    {..  
172c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c        public sql
172d0 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
172e0 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20  raint_usage(..  
172f0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
17300 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
17310 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55  sage constraintU
17320 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20  sage..          
17330 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
17340 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
17350 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
17360 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74    if (constraint
17370 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  Usage != null)..
17380 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
17390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
173a0 72 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74  rgvIndex = const
173b0 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49  raintUsage.argvI
173c0 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndex;..         
173d0 20 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f         omit = co
173e0 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d  nstraintUsage.om
173f0 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it;..           
17400 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
17410 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
17420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17460 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
17470 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78  ic int argvIndex
17480 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73  ; /* if >0, cons
17490 74 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f  traint is part o
174a0 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65  f argv to xFilte
174b0 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  r */..        pu
174c0 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20  blic byte omit; 
174d0 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f      /* Do not co
174e0 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68  de a test for th
174f0 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f  is constraint */
17500 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
17510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17560 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
17570 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
17580 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
17590 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
175a0 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d  ite3_index_info.
175b0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
175c0 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20  /* Inputs */..  
175d0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
175e0 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a   nConstraint; /*
175f0 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69   Number of entri
17600 65 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e  es in aConstrain
17610 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  t */..        pu
17620 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e  blic IntPtr aCon
17630 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20  straint;..      
17640 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72    public int nOr
17650 64 65 72 42 79 3b 0d 0a 20 20 20 20 20 20 20 20  derBy;..        
17660 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 4f  public IntPtr aO
17670 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20 20 20  rderBy;..       
17680 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a   /* Outputs */..
17690 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
176a0 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e  ntPtr aConstrain
176b0 74 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20  tUsage;..       
176c0 20 70 75 62 6c 69 63 20 69 6e 74 20 69 64 78 4e   public int idxN
176d0 75 6d 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a  um;           /*
176e0 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20   Number used to 
176f0 69 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e 64  identify the ind
17700 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ex */..        p
17710 75 62 6c 69 63 20 73 74 72 69 6e 67 20 69 64 78  ublic string idx
17720 53 74 72 3b 20 20 20 20 20 20 20 20 2f 2a 20 53  Str;        /* S
17730 74 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20  tring, possibly 
17740 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71  obtained from sq
17750 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d  lite3_malloc */.
17760 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17770 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64  int needToFreeId
17780 78 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64  xStr; /* Free id
17790 78 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74  xStr using sqlit
177a0 65 33 5f 66 72 65 65 28 29 20 69 66 20 74 72 75  e3_free() if tru
177b0 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  e */..        pu
177c0 62 6c 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79  blic int orderBy
177d0 43 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72  Consumed;  /* Tr
177e0 75 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20  ue if output is 
177f0 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 20  already ordered 
17800 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
17810 69 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61  ic double estima
17820 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69  tedCost; /* Esti
17830 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73  mated cost of us
17840 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a  ing this index *
17850 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  /..    }..#endif
17860 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
17870 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  ..  }....  /////
17880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
178d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
178e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74  FRAMEWORK..  int
178f0 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 63  ernal abstract c
17900 6c 61 73 73 20 43 72 69 74 69 63 61 6c 48 61 6e  lass CriticalHan
17910 64 6c 65 20 3a 20 49 44 69 73 70 6f 73 61 62 6c  dle : IDisposabl
17920 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69 76  e..  {..    priv
17930 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73  ate bool _isClos
17940 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  ed;..    protect
17950 65 64 20 49 6e 74 50 74 72 20 68 61 6e 64 6c 65  ed IntPtr handle
17960 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  ;....    protect
17970 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  ed CriticalHandl
17980 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64  e(IntPtr invalid
17990 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20  HandleValue)..  
179a0 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c    {..      handl
179b0 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c  e = invalidHandl
179c0 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f  eValue;..      _
179d0 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65  isClosed = false
179e0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
179f0 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28  ~CriticalHandle(
17a00 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
17a10 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d  Dispose(false);.
17a20 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
17a30 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e  ivate void Clean
17a40 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  up()..    {..   
17a50 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73 65 64     if (!IsClosed
17a60 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
17a70 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73      this._isClos
17a80 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
17a90 20 20 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c      if (!IsInval
17aa0 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  id)..        {..
17ab0 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 61 73            Releas
17ac0 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20  eHandle();..    
17ad0 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
17ae0 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
17af0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
17b00 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
17b10 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43     public void C
17b20 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  lose()..    {.. 
17b30 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
17b40 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  e);..    }....  
17b50 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
17b60 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  spose()..    {..
17b70 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
17b80 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ue);..    }.... 
17b90 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
17ba0 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73  tual void Dispos
17bb0 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67  e(bool disposing
17bc0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
17bd0 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20  Cleanup();..    
17be0 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  }....    protect
17bf0 65 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c  ed abstract bool
17c00 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
17c10 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  ;....    protect
17c20 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c  ed void SetHandl
17c30 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0d  e(IntPtr value).
17c40 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
17c50 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20  ndle = value;.. 
17c60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
17c70 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c  ic void SetHandl
17c80 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20  eAsInvalid()..  
17c90 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c    {..      _isCl
17ca0 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
17cb0 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
17cc0 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
17cd0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
17ce0 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65  lic bool IsClose
17cf0 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  d..    {..      
17d00 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73  get { return _is
17d10 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d  Closed; }..    }
17d20 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61  ....    public a
17d30 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49  bstract bool IsI
17d40 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20  nvalid..    {.. 
17d50 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d       get;..    }
17d60 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69  ....  }....#endi
17d70 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  f....    ///////
17d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dc0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
17dd0 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ion SQLiteConnec
17de0 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73  tionHandle Class
17df0 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73  ..    // Handles
17e00 20 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20 64   the unmanaged d
17e10 61 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72 2c  atabase pointer,
17e20 20 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66 69   and provides fi
17e30 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20  nalization..    
17e40 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69  // support for i
17e50 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  t...    internal
17e60 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
17e70 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
17e80 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
17e90 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
17ea0 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
17eb0 44 20 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43  D && !PLATFORM_C
17ec0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
17ed0 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
17ee0 6c 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20  l delegate void 
17ef0 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43  CloseConnectionC
17f00 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  allback(..      
17f10 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
17f20 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c  ectionHandle hdl
17f30 2c 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  , IntPtr db);...
17f40 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
17f50 6c 20 73 74 61 74 69 63 20 43 6c 6f 73 65 43 6f  l static CloseCo
17f60 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b  nnectionCallback
17f70 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   closeConnection
17f80 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
17f90 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65  SQLiteBase.Close
17fa0 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e  Connection;..#en
17fb0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
17fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18000 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c  //////....#if PL
18010 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
18020 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
18030 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
18040 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
18050 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
18060 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
18070 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
180c0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
180d0 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b   bool ownHandle;
180e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
180f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18130 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
18140 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
18150 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49  licit operator I
18160 6e 74 50 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e  ntPtr(SQLiteConn
18170 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29  ectionHandle db)
18180 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
18190 20 20 20 20 20 20 20 20 20 69 66 20 28 64 62 20           if (db 
181a0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
181b0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
181c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
181d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
181e0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 64 62          lock (db
181f0 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  .syncRoot)..#end
18200 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
18210 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18220 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
18230 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20  n db.handle;..  
18240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
18250 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
18260 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
18270 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
18280 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
18290 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
182a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
182e0 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
182f0 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  l SQLiteConnecti
18300 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20  onHandle(IntPtr 
18310 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64  db, bool ownHand
18320 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le)..           
18330 20 3a 20 74 68 69 73 28 6f 77 6e 48 61 6e 64 6c   : this(ownHandl
18340 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  e)..        {..#
18350 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
18360 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
18370 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
18380 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
18390 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
183a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
183b0 20 20 74 68 69 73 2e 6f 77 6e 48 61 6e 64 6c 65    this.ownHandle
183c0 20 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20   = ownHandle;.. 
183d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
183e0 65 74 48 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20  etHandle(db);.. 
183f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
18400 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
18410 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
18420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18460 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
18470 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
18480 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e  ndle(bool ownHan
18490 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  dle)..          
184a0 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e    : base(IntPtr.
184b0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b  Zero)..        {
184c0 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
184d0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
184e0 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  if (ownHandle)..
184f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18500 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72  Interlocked.Incr
18510 65 6d 65 6e 74 28 72 65 66 20 55 6e 73 61 66 65  ement(ref Unsafe
18520 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f  NativeMethods.co
18530 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
18540 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
18550 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
18560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
185b0 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
185c0 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
185d0 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
185e0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
185f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18600 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
18610 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
18620 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
18630 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18640 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 77 6e          if (!own
18650 48 61 6e 64 6c 65 29 20 72 65 74 75 72 6e 20 74  Handle) return t
18660 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
18670 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
18680 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
18690 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
186a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
186b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
186c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
186d0 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
186e0 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
186f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
18700 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
18710 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
18720 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  ....#if SQLITE_S
18730 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20  TANDARD..       
18740 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
18750 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
18760 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
18770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c                cl
18780 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
18790 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  is, localHandle)
187a0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
187b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
187c0 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
187d0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
187e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
187f0 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43  QLiteBase.CloseC
18800 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
18810 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
18820 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45  endif....#if !NE
18830 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
18840 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
18850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
18860 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
18870 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18880 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
18890 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
188a0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
188b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
188c0 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69    "CloseConnecti
188d0 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48  on: {0}", localH
188e0 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f  andle)); /* thro
188f0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
18900 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18910 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
18920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18930 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18940 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
18950 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
18960 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
18970 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
18980 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18990 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
189a0 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  (handle != IntPt
189b0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
189c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
189d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
189e0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
189f0 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  se.CloseConnecti
18a00 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29  on(this, handle)
18a10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
18a20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
18a30 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
18a40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
18a50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
18a60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
18a70 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
18a80 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
18a90 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
18aa0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a  ked.Decrement(..
18ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18ac0 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
18ad0 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e  tiveMethods.conn
18ae0 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23  ectionCount);..#
18af0 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
18b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18b10 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
18b20 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
18b30 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
18b40 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
18b50 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
18b60 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
18b70 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
18b80 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
18b90 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
18ba0 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
18bb0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
18bc0 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
18bd0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
18be0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
18bf0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
18c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18c20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
18c30 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
18c40 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
18c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
18c60 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a  CloseConnection:
18c70 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
18c80 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
18c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18ca0 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
18cb0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
18cc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
18cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
18ce0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
18cf0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18d00 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
18d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
18d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
18d30 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
18d40 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
18d50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18d60 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
18d70 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
18d80 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
18d90 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
18da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18db0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
18dc0 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
18dd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
18de0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
18df0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
18e00 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
18e10 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
18e20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
18e30 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
18e40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
18e50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
18ea0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
18eb0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
18ec0 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
18ed0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
18ee0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
18ef0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
18f00 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
18f10 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61          ref Unsa
18f20 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
18f30 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29  connectionCount)
18f40 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
18f50 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
18f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fa0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18fb0 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4f     public bool O
18fc0 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20  wnHandle..      
18fd0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
18fe0 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
18ff0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
19000 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19010 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
19020 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
19030 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
19040 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
19050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19060 20 20 20 20 72 65 74 75 72 6e 20 6f 77 6e 48 61      return ownHa
19070 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
19080 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19090 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
190a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
190b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19100 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
19110 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
19120 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
19130 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
19140 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
19150 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19160 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
19170 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
19180 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
19190 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
191a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
191b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
191c0 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  n (handle == Int
191d0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
191e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
191f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
19200 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
19210 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
19260 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
19270 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
19280 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
19290 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
192a0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
192b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
192c0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
192d0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
192e0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
192f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19300 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e    return handle.
19310 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
19320 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
19330 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
19340 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
19350 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
19360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
193b0 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 61  region SQLiteSta
193c0 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c 61  tementHandle Cla
193d0 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69  ss..    // Provi
193e0 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
193f0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d   support for unm
19400 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73 74  anaged SQLite st
19410 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20 69  atements...    i
19420 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
19430 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61 74 65  lass SQLiteState
19440 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72 69  mentHandle : Cri
19450 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
19460 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
19470 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
19480 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
19490 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
194a0 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
194b0 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
194c0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19510 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19520 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
19530 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
19540 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  e cnn;....      
19550 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19590 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
195a0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
195b0 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
195c0 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
195d0 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
195e0 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20  e stmt)..       
195f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19600 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c 6c  if (stmt != null
19610 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
19620 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
19630 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19650 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e 63   lock (stmt.sync
19660 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
19670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
19680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19690 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 6d        return stm
196a0 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  t.handle;..     
196b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
196c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
196d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
196e0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
196f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
19700 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19750 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
19760 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
19770 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65  ndle(SQLiteConne
19780 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c  ctionHandle cnn,
19790 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a 20   IntPtr stmt).. 
197a0 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
197b0 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
197c0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
197d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
197e0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
197f0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
19800 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
19810 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
19820 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e     this.cnn = cn
19830 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
19840 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73 74      SetHandle(st
19850 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mt);..          
19860 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
19870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
19880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
198d0 76 61 74 65 20 53 51 4c 69 74 65 53 74 61 74 65  vate SQLiteState
198e0 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20 20  mentHandle()..  
198f0 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
19900 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
19910 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
19920 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
19930 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
19940 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a  ked.Increment(..
19950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19960 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
19970 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e  Methods.statemen
19980 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  tCount);..#endif
19990 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
199a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
199b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
199f0 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
19a00 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
19a10 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
19a20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
19a30 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
19a40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
19a50 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
19a60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
19a80 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
19a90 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
19aa0 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
19ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
19ac0 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
19ad0 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
19ae0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
19af0 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
19b00 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
19b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19b20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c  SQLiteBase.Final
19b30 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e  izeStatement(cnn
19b40 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
19b50 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
19b60 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
19b70 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
19b80 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
19b90 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
19ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19bb0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
19bc0 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(String.Forma
19bd0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
19be0 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
19bf0 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20  alizeStatement: 
19c00 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
19c10 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
19c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19c30 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
19c40 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
19c50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
19c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
19c70 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
19c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19c90 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
19ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19cb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19cc0 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
19cd0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
19ce0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
19cf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
19d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d10 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
19d20 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
19d30 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  (cnn, handle);..
19d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d50 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
19d60 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
19d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19d80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
19d90 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
19da0 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
19db0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
19dc0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
19dd0 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
19de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19df0 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
19e00 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65  eMethods.stateme
19e10 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  ntCount);..#endi
19e20 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
19e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
19e40 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
19e50 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
19e60 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
19e70 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
19e80 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
19e90 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
19ea0 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
19eb0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
19ec0 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
19ed0 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
19ee0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
19ef0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
19f00 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
19f10 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
19f20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
19f30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
19f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f50 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
19f60 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
19f70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
19f80 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61             "Fina
19f90 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b  lizeStatement: {
19fa0 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
19fb0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
19fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
19fd0 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
19fe0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
19ff0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a000 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1a010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a020 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a030 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1a040 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1a050 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
1a060 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
1a070 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1a080 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a0a0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1a0b0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
1a0c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1a0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a0e0 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
1a0f0 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
1a100 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1a110 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
1a120 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
1a130 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
1a140 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1a150 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
1a160 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1a170 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
1a1d0 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
1a1e0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
1a1f0 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
1a200 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1a210 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
1a220 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
1a230 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
1a240 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
1a250 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74  NativeMethods.st
1a260 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
1a270 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1a280 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
1a290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2d0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1a2e0 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
1a2f0 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
1a300 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1a310 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
1a320 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1a330 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a340 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1a350 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1a360 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
1a370 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1a380 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1a390 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1a3a0 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
1a3b0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
1a3c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1a3d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a3e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1a3f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1a440 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
1a450 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
1a460 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
1a470 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
1a480 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1a490 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1a4a0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1a4b0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1a4c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1a4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a4e0 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
1a4f0 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
1a500 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a510 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
1a520 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
1a530 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
1a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a580 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
1a590 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b  egion SQLiteBack
1a5a0 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  upHandle Class..
1a5b0 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
1a5c0 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
1a5d0 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
1a5e0 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70  ed SQLite backup
1a5f0 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69   objects...    i
1a600 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
1a610 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75  lass SQLiteBacku
1a620 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  pHandle : Critic
1a630 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
1a640 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1a650 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a660 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
1a670 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
1a680 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
1a690 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
1a6a0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
1a6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1a700 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
1a710 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
1a720 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
1a730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a770 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1a780 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1a790 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
1a7a0 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42  r IntPtr(SQLiteB
1a7b0 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b  ackupHandle back
1a7c0 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  up)..        {..
1a7d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1a7e0 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d  backup != null).
1a7f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1a800 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
1a810 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1a830 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63  ock (backup.sync
1a840 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
1a850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1a860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a870 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 61 63        return bac
1a880 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  kup.handle;..   
1a890 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a8a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1a8b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1a8c0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
1a8d0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1a8e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1a930 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
1a940 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
1a950 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
1a960 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
1a970 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a  IntPtr backup)..
1a980 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
1a990 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
1a9a0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1a9b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a9c0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1a9d0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1a9e0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1a9f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1aa00 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
1aa10 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
1aa20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62       SetHandle(b
1aa30 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20  ackup);..       
1aa40 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1aa50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1aa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa80 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1aab0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 61  private SQLiteBa
1aac0 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20  ckupHandle()..  
1aad0 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
1aae0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
1aaf0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
1ab00 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
1ab10 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
1ab20 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a  ked.Increment(..
1ab30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ab40 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
1ab50 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f  Methods.backupCo
1ab60 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  unt);..#endif.. 
1ab70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1ab80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1abd0 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
1abe0 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52   override bool R
1abf0 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a  eleaseHandle()..
1ac00 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ac10 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
1ac20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1ac30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ac40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1ac50 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1ac60 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20  r localHandle = 
1ac70 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68  Interlocked.Exch
1ac80 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ange(..         
1ac90 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68             ref h
1aca0 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65  andle, IntPtr.Ze
1acb0 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ro);....        
1acc0 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
1acd0 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
1ace0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1acf0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
1ad00 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61  iteBase.FinishBa
1ad10 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48  ckup(cnn, localH
1ad20 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  andle);....#if !
1ad30 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1ad40 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
1ad50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ad60 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1ad70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1ad80 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1ad90 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
1ada0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
1adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1adc0 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75      "FinishBacku
1add0 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61  p: {0}", localHa
1ade0 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ndle)); /* throw
1adf0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1ae00 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ae10 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
1ae20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1ae30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ae40 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c    }..#endif..#el
1ae50 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1ae60 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
1ae70 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
1ae80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1ae90 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1aea0 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  handle != IntPtr
1aeb0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1aec0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1aed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aee0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
1aef0 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63  e.FinishBackup(c
1af00 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
1af10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
1af30 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
1af40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1af60 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1af70 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
1af80 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1af90 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
1afa0 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
1afb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1afc0 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
1afd0 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75  ethods.backupCou
1afe0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
1aff0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1b000 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1b010 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
1b020 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1b030 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1b040 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1b050 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
1b060 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
1b070 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
1b080 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1b090 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1b0a0 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
1b0b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1b0c0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1b0d0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1b0e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b0f0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1b100 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1b120 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
1b130 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
1b140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b150 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63        "FinishBac
1b160 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74  kup: {0}, except
1b170 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  ion: {1}",..    
1b180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b190 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b      handle, e));
1b1a0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
1b1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1b1c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b1d0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
1b1e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1b1f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1b200 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1b210 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1b220 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
1b230 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1b240 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b250 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1b260 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1b270 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1b280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b290 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b2a0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
1b2b0 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20  eAsInvalid();.. 
1b2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1b2d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1b2e0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
1b2f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1b300 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alse;..#else..  
1b310 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1b320 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
1b330 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1b340 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1b390 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
1b3a0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1b3b0 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64   int WasReleased
1b3c0 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Ok()..        {.
1b3d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1b3e0 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
1b3f0 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Decrement(..    
1b400 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1b410 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1b420 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ods.backupCount)
1b430 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
1b440 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1b450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b490 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b4a0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1b4b0 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
1b4c0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
1b4d0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
1b4e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1b4f0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1b500 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b510 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1b520 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1b530 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1b540 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b550 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1b560 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
1b570 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
1b580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1b590 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1b5a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1b5b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1b600 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1b610 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1b620 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
1b630 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
1b640 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1b650 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b660 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1b670 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1b680 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1b690 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b6a0 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
1b6b0 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
1b6c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1b6d0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1b6e0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
1b6f0 72 65 67 69 6f 6e 0d 0a 7d 0d 0a                 region..}..