System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 5961a94fbd0fb5bec338882253243666dab299f1:


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 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
0c70: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
0cc0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0cd0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
0ce0: 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f  s dictionary sto
0cf0: 72 65 73 20 74 68 65 20 72 65 61 64 20 63 6f 75  res the read cou
0d00: 6e 74 73 20 66 6f 72 20 74 68 65 20 72 75 6e 74  nts for the runt
0d10: 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ime configuratio
0d20: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74  n..      /// set
0d30: 74 69 6e 67 73 2e 20 20 54 68 69 73 20 69 6e 66  tings.  This inf
0d40: 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79  ormation is only
0d50: 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e 20 63   recorded when c
0d60: 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a  ompiled in the..
0d70: 20 20 20 20 20 20 2f 2f 2f 20 22 44 65 62 75 67        /// "Debug
0d80: 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67 75 72  " build configur
0d90: 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ation...      //
0da0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0db0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0dc0: 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ic Dictionary<st
0dd0: 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65 74 74 69  ring, int> setti
0de0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 3b 0d 0a 23  ngReadCounts;..#
0df0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
0e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e40: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
0e50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0e60: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69       /// This di
0e70: 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20  ctionary stores 
0e80: 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65 74  the mappings bet
0e90: 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20 61  ween processor a
0ea0: 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20  rchitecture..   
0eb0: 20 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61 6e 64     /// names and
0ec0: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 2e   platform names.
0ed0: 20 20 54 68 65 73 65 20 6d 61 70 70 69 6e 67 73    These mappings
0ee0: 20 61 72 65 20 6e 6f 77 20 75 73 65 64 20 66 6f   are now used fo
0ef0: 72 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f  r two..      ///
0f00: 20 70 75 72 70 6f 73 65 73 2e 20 20 46 69 72 73   purposes.  Firs
0f10: 74 2c 20 74 68 65 79 20 61 72 65 20 75 73 65 64  t, they are used
0f20: 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66   to determine if
0f30: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f   the assembly co
0f40: 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61  de..      /// ba
0f50: 73 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  se should be use
0f60: 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65  d instead of the
0f70: 20 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73 65 64   location, based
0f80: 20 75 70 6f 6e 20 77 68 65 74 68 65 72 20 6f 6e   upon whether on
0f90: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  e..      /// or 
0fa0: 6d 6f 72 65 20 6f 66 20 74 68 65 20 6e 61 6d 65  more of the name
0fb0: 64 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65  d sub-directorie
0fc0: 73 20 65 78 69 73 74 20 77 69 74 68 69 6e 20 74  s exist within t
0fd0: 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65  he assembly code
0fe0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65  ..      /// base
0ff0: 2e 20 20 53 65 63 6f 6e 64 2c 20 74 68 65 79 20  .  Second, they 
1000: 61 72 65 20 75 73 65 64 20 74 6f 20 61 73 73 69  are used to assi
1010: 73 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20 74 68  st in loading th
1020: 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20  e appropriate.. 
1030: 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20       /// SQLite 
1040: 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
1050: 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e   into the curren
1060: 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20  t process...    
1070: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1080: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1090: 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72  static Dictionar
10a0: 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  y<string, string
10b0: 3e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  > processorArchi
10c0: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
10d0: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
10e0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
10f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1130: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
1140: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1150: 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20     /// For now, 
1160: 74 68 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70  this method simp
1170: 6c 79 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69  ly calls the Ini
1180: 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d  tialize method..
1190: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
11a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61  mary>..      sta
11b0: 74 69 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65  tic UnsafeNative
11c0: 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20  Methods()..     
11d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
11e0: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20  itialize();..   
11f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
1200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1240: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
1250: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1260: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
1270: 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74   to initialize t
1280: 68 69 73 20 63 6c 61 73 73 20 62 79 20 70 72 65  his class by pre
1290: 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74  -loading the nat
12a0: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
12b0: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f    /// library fo
12c0: 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  r the processor 
12d0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
12e0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
12f0: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
1300: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1310: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1320: 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a  c void Initializ
1330: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69  e()..      {..#i
1340: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
1350: 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
1360: 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
1370: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1380: 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e  K..#if PRELOAD_N
1390: 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20  ATIVE_LIBRARY.. 
13a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
13b0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
13c0: 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f  If the "No_PreLo
13d0: 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f  adSQLite" enviro
13e0: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69  nment variable i
13f0: 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20  s set (to..     
1400: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e       //       an
1410: 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c  ything), skip al
1420: 6c 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f  l our special co
1430: 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65  de and simply re
1440: 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  turn...         
1450: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
1460: 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
1470: 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51  ue("No_PreLoadSQ
1480: 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d 20  Lite", null) != 
1490: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
14a0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65       return;..#e
14b0: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ndif..#endif....
14c0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
14d0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
14e0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
14f0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1500: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1510: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1520: 3a 20 43 72 65 61 74 65 20 74 68 65 20 6c 69 73  : Create the lis
1530: 74 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20  t of statistics 
1540: 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69  that will contai
1550: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  n the..         
1560: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 75       //       nu
1570: 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65 61  mber of times ea
1580: 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65  ch setting value
1590: 20 68 61 73 20 62 65 65 6e 20 72 65 61 64 2e 0d   has been read..
15a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
15b0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
15c0: 20 69 66 20 28 73 65 74 74 69 6e 67 52 65 61 64   if (settingRead
15d0: 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  Counts == null).
15e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15f0: 20 20 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f     settingReadCo
1600: 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63 74 69  unts = new Dicti
1610: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
1620: 74 3e 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  t>();..#endif...
1630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1640: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1650: 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73   // TODO: Make s
1660: 75 72 65 20 74 68 69 73 20 6c 69 73 74 20 69 73  ure this list is
1670: 20 75 70 64 61 74 65 64 20 69 66 20 74 68 65 20   updated if the 
1680: 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20  supported..     
1690: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
16a0: 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68    processor arch
16b0: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61  itecture names a
16c0: 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20 6e  nd/or platform n
16d0: 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ames..          
16e0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61      //       cha
16f0: 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  nges...         
1700: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1710: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
1720: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1730: 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c  Platforms == nul
1740: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1750: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1760: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1770: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1780: 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68 65  NOTE: Create the
1790: 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73 6f   map of processo
17a0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e  r architecture n
17b0: 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ames..          
17c0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
17d0: 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d   to platform nam
17e0: 65 73 20 75 73 69 6e 67 20 61 20 63 61 73 65 2d  es using a case-
17f0: 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72 69  insensitive stri
1800: 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
1810: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
1820: 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20 20  omparer...      
1830: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1850: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
1860: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
1870: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
1880: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 44 69            new Di
1890: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
18a0: 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20 20   string>(..     
18b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c0: 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61       StringCompa
18d0: 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  rer.OrdinalIgnor
18e0: 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eCase);....     
18f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1900: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1910: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 75     // NOTE: Setu
1920: 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70 6c  p the list of pl
1930: 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73 73  atform names ass
1940: 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20  ociated with..  
1950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1960: 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73 75 70  //       the sup
1970: 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f 72  ported processor
1980: 20 61 72 63 68 69 74 65 63 74 75 72 65 73 2e 0d   architectures..
1990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19a0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
19b0: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
19c0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
19d0: 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38 36  atforms.Add("x86
19e0: 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20 20  ", "Win32");..  
19f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a00: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1a10: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41  cturePlatforms.A
1a20: 64 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36 34  dd("AMD64", "x64
1a30: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
1a40: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
1a50: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
1a60: 66 6f 72 6d 73 2e 41 64 64 28 22 49 41 36 34 22  forms.Add("IA64"
1a70: 2c 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a 20  , "Itanium");.. 
1a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a90: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
1aa0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
1ab0: 41 64 64 28 22 41 52 4d 22 2c 20 22 57 69 6e 43  Add("ARM", "WinC
1ac0: 45 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  E");..          
1ad0: 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 53 51 4c      }....#if SQL
1ae0: 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
1af0: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
1b00: 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
1b10: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69  ACTFRAMEWORK..#i
1b20: 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45  f PRELOAD_NATIVE
1b30: 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20  _LIBRARY..      
1b40: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47            // BUG
1b60: 42 55 47 3a 20 57 68 61 74 20 61 62 6f 75 74 20  BUG: What about 
1b70: 6f 74 68 65 72 20 61 70 70 6c 69 63 61 74 69 6f  other applicatio
1b80: 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20 20  n domains?..    
1b90: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1ba0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1bb0: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
1bc0: 75 6c 65 48 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  uleHandle == Int
1bd0: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1be0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
1c00: 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
1c10: 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ry = null;..    
1c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
1c30: 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72  ring processorAr
1c40: 63 68 69 74 65 63 74 75 72 65 20 3d 20 6e 75 6c  chitecture = nul
1c50: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
1c60: 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52          /* IGNOR
1c70: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
1c80: 20 20 20 20 20 20 20 20 20 53 65 61 72 63 68 46           SearchF
1c90: 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20  orDirectory(..  
1ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb0: 20 20 20 20 72 65 66 20 62 61 73 65 44 69 72 65      ref baseDire
1cc0: 63 74 6f 72 79 2c 20 72 65 66 20 70 72 6f 63 65  ctory, ref proce
1cd0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1ce0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1cf0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1d10: 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
1d20: 6f 20 70 72 65 2d 6c 6f 61 64 20 74 68 65 20 53  o pre-load the S
1d30: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1d40: 72 79 20 28 6f 72 0d 0a 20 20 20 20 20 20 20 20  ry (or..        
1d50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1d60: 20 20 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d     interop assem
1d70: 62 6c 79 29 20 61 6e 64 20 73 74 6f 72 65 20 62  bly) and store b
1d80: 6f 74 68 20 74 68 65 20 66 69 6c 65 20 6e 61 6d  oth the file nam
1d90: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1da0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e       //       an
1db0: 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  d native module 
1dc0: 68 61 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65 72  handle for later
1dd0: 20 75 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20   usage...       
1de0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e00: 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a   /* IGNORED */..
1e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e20: 20 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44    PreLoadSQLiteD
1e30: 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll(..           
1e40: 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
1e50: 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73  irectory, proces
1e60: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
1e70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e80: 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c          ref _SQL
1e90: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
1ea0: 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
1eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec0: 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  ref _SQLiteNativ
1ed0: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 29 3b 0d  eModuleHandle);.
1ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1ef0: 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
1f00: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
1f10: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
1f70: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1f80: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
1f90: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
1fa0: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
1fb0: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ion file name fo
1fc0: 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 0d 0a  r the assembly..
1fd0: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69        /// contai
1fe0: 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67 65 64  ning the managed
1ff0: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
2000: 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0d  ite components..
2010: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
2020: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2030: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2040: 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f    /// The XML co
2050: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
2060: 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20   name -OR- null 
2070: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
2080: 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20  determined..    
2090: 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f    /// or does no
20a0: 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20  t exist...      
20b0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
20c0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
20d0: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 58  atic string GetX
20e0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
20f0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
2100: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
2110: 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
2120: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
2130: 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ame;....#if !PLA
2140: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2150: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2160: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 41 70    directory = Ap
2170: 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44  pDomain.CurrentD
2180: 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74  omain.BaseDirect
2190: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
21a0: 66 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  fileName = Path.
21b0: 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72  Combine(director
21c0: 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  y, XmlConfigFile
21d0: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
21e0: 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
21f0: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
2200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2210: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  turn fileName;..
2220: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
2230: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
2240: 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
2250: 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20  tory();..       
2260: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 50 61     fileName = Pa
2270: 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63  th.Combine(direc
2280: 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
2290: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
22a0: 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
22b0: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
22c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22d0: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
22e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ;....          r
22f0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
2300: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
2310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2350: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
2360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2370: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
2380: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
2390: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65  value of the spe
23a0: 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20  cified setting, 
23b0: 75 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20  using the XML.. 
23c0: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75       /// configu
23d0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f  ration file and/
23e0: 6f 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65  or the environme
23f0: 6e 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72  nt variables for
2400: 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
2410: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20      /// process 
2420: 61 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65  and/or the curre
2430: 6e 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20  nt system, when 
2440: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
2450: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2460: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
2470: 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
2480: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
2490: 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69  ame of the setti
24a0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
24b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
24c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
24d0: 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20  default">..     
24e0: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74   /// The value t
24f0: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66  o be returned if
2500: 20 74 68 65 20 73 65 74 74 69 6e 67 20 68 61 73   the setting has
2510: 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78   not been set ex
2520: 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20  plicitly..      
2530: 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65  /// or cannot be
2540: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
2550: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2560: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
2570: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
2580: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
2590: 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74  e setting -OR- t
25a0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
25b0: 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20   specified by.. 
25c0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72       /// <paramr
25d0: 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  ef name="default
25e0: 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e  " /> if it has n
25f0: 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
2600: 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20  icitly or..     
2610: 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64   /// cannot be d
2620: 65 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64  etermined.  By d
2630: 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65  efault, all refe
2640: 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69  rences to existi
2650: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e  ng..      /// en
2660: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
2670: 6c 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61  les will be expa
2680: 6e 64 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f  nded to their co
2690: 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75  rresponding valu
26a0: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  es..      /// wi
26b0: 74 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74  thin the value t
26c0: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e  o be returned un
26d0: 6c 65 73 73 20 65 69 74 68 65 72 20 74 68 65 20  less either the 
26e0: 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a  "No_Expand" or..
26f0: 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78        /// "No_Ex
2700: 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e  pand_<paramref n
2710: 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65  ame="name" />" e
2720: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
2730: 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a  ble is set [to..
2740: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69        /// anythi
2750: 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ng]...      /// 
2760: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2770: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
2780: 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74  c string GetSett
2790: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
27a0: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
27b0: 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ,    /* in */.. 
27c0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
27d0: 40 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a  @default /* in *
27e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
27f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2800: 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e     if (name == n
2810: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2820: 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
2830: 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ult;....        
2840: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2890: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62       #region Deb
28a0: 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23  ug Build Only..#
28b0: 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
28c0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
28d0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 64 61 74    // NOTE: Updat
28e0: 65 20 73 74 61 74 69 73 74 69 63 73 20 66 6f 72  e statistics for
28f0: 20 74 68 69 73 20 73 65 74 74 69 6e 67 20 76 61   this setting va
2900: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  lue...          
2910: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
2920: 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75   (settingReadCou
2930: 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nts != null)..  
2940: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2950: 20 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f 75           int cou
2960: 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  nt;....         
2970: 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67       if (setting
2980: 52 65 61 64 43 6f 75 6e 74 73 2e 54 72 79 47 65  ReadCounts.TryGe
2990: 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74  tValue(name, out
29a0: 20 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20 20   count))..      
29b0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74              sett
29c0: 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61  ingReadCounts[na
29d0: 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b  me] = count + 1;
29e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29f0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2a00: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52          settingR
2a10: 65 61 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61  eadCounts.Add(na
2a20: 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20  me, 1);..       
2a30: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
2a40: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2a50: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2ab0: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20     string value 
2ac0: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 21  = null;....#if !
2ad0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2ae0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2af0: 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64       bool expand
2b00: 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20   = true;....    
2b10: 20 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f        if (Enviro
2b20: 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
2b30: 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 22 4e 6f  mentVariable("No
2b40: 5f 45 78 70 61 6e 64 22 29 20 21 3d 20 6e 75 6c  _Expand") != nul
2b50: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
2b60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65  .              e
2b70: 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a  xpand = false;..
2b80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2b90: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
2ba0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
2bb0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
2bc0: 6c 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  le(String.Format
2bd0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2be0: 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e 64 5f       "No_Expand_
2bf0: 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21 3d 20  {0}", name)) != 
2c00: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2c10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c20: 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65    expand = false
2c30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
2c40: 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75  ..          valu
2c50: 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
2c60: 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
2c70: 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a 0d  riable(name);...
2c80: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65  .          if (e
2c90: 78 70 61 6e 64 20 26 26 20 21 53 74 72 69 6e 67  xpand && !String
2ca0: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76  .IsNullOrEmpty(v
2cb0: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
2cc0: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e        value = En
2cd0: 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64  vironment.Expand
2ce0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
2cf0: 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a  bles(value);....
2d00: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
2d10: 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue != null)..  
2d20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2d30: 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6e 64 69  rn value;..#endi
2d40: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74  f....          t
2d50: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
2d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
2d70: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d  tring fileName =
2d80: 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c   GetXmlConfigFil
2d90: 65 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  eName();....    
2da0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69            if (fi
2db0: 6c 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  leName == null).
2dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dd0: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
2de0: 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  lt;....         
2df0: 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65 6e 74       XmlDocument
2e00: 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65 77 20   document = new 
2e10: 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b 0d 0a  XmlDocument();..
2e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e30: 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28 66 69  document.Load(fi
2e40: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
2e50: 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65            XmlEle
2e60: 6d 65 6e 74 20 65 6c 65 6d 65 6e 74 20 3d 20 64  ment element = d
2e70: 6f 63 75 6d 65 6e 74 2e 53 65 6c 65 63 74 53 69  ocument.SelectSi
2e80: 6e 67 6c 65 4e 6f 64 65 28 53 74 72 69 6e 67 2e  ngleNode(String.
2e90: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
2ea0: 20 20 20 20 20 20 20 20 20 20 20 22 2f 63 6f 6e             "/con
2eb0: 66 69 67 75 72 61 74 69 6f 6e 2f 61 70 70 53 65  figuration/appSe
2ec0: 74 74 69 6e 67 73 2f 61 64 64 5b 40 6b 65 79 3d  ttings/add[@key=
2ed0: 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65 29 29 20  '{0}']", name)) 
2ee0: 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  as..            
2ef0: 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74        XmlElement
2f00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f10: 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21     if (element !
2f20: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2f30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f40: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2f50: 65 6c 65 6d 65 6e 74 2e 48 61 73 41 74 74 72 69  element.HasAttri
2f60: 62 75 74 65 28 22 76 61 6c 75 65 22 29 29 0d 0a  bute("value"))..
2f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f80: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 65 6c        value = el
2f90: 65 6d 65 6e 74 2e 47 65 74 41 74 74 72 69 62 75  ement.GetAttribu
2fa0: 74 65 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a  te("value");....
2fb0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2fc0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe0: 20 20 69 66 20 28 65 78 70 61 6e 64 20 26 26 20    if (expand && 
2ff0: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
3000: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
3010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3020: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76       value = Env
3030: 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45  ironment.ExpandE
3040: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
3050: 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  les(value);..#en
3060: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
3070: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
3080: 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue != null)..   
3090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a0: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
30b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
30d0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
30e0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
30f0: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63  RED..          c
3100: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
3110: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
3120: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
3130: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
3140: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
3150: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
3160: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
3170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3180: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
3190: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31a0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
31b0: 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
31c0: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
31d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
31e0: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
31f0: 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
3200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3210: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
3220: 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c   pre-loader fail
3230: 65 64 20 74 6f 20 67 65 74 20 73 65 74 74 69 6e  ed to get settin
3240: 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  g " +..         
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 22               "\"
3260: 7b 30 7d 5c 22 20 76 61 6c 75 65 3a 20 7b 31 7d  {0}\" value: {1}
3270: 22 2c 20 6e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a  ", name, e)); /*
3280: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
3290: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
32a0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
32b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
32c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32d0: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
32e0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
32f0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
3300: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
3310: 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65        return @de
3320: 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d  fault;..      }.
3330: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
3340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3380: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
3390: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
33a0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72 69 76  WORK..      priv
33b0: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
33c0: 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 49  g ListToString(I
33d0: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73  List<string> lis
33e0: 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  t)..      {..   
33f0: 20 20 20 20 20 20 20 69 66 20 28 6c 69 73 74 20         if (list 
3400: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
3410: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
3420: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
3430: 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20    StringBuilder 
3440: 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72  result = new Str
3450: 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d  ingBuilder();...
3460: 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
3470: 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65 6d 65  ch (string eleme
3480: 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20  nt in list)..   
3490: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34a0: 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
34b0: 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ent == null)..  
34c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d0: 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
34e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
34f0: 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30  esult.Length > 0
3500: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3510: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
3520: 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20  nd(' ');....    
3530: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
3540: 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29  .Append(element)
3550: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
3560: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
3570: 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69  rn result.ToStri
3580: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ng();..      }..
3590: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61  /....      priva
35f0: 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 43 68  te static int Ch
3600: 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75  eckForArchitectu
3610: 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28  resAndPlatforms(
3620: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
3630: 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  ng directory,.. 
3640: 20 20 20 20 20 20 20 20 20 72 65 66 20 4c 69 73           ref Lis
3650: 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65  t<string> matche
3660: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
3670: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3680: 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20     int result = 
3690: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
36a0: 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e  if (matches == n
36b0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
36c0: 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20 6e 65      matches = ne
36d0: 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29  w List<string>()
36e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  ;....          l
36f0: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
3700: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
3710: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3720: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
3730: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
3740: 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20 20 20  tory) &&..      
3750: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f              (pro
3760: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
3770: 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e  rePlatforms != n
3780: 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ull))..         
3790: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37a0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
37b0: 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c  h (KeyValuePair<
37c0: 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20  string, string> 
37d0: 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20  pair..          
37e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37f0: 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72 41 72    in processorAr
3800: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
3810: 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rms)..          
3820: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3840: 20 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45   if (Directory.E
3850: 78 69 73 74 73 28 50 61 74 68 2e 43 6f 6d 62 69  xists(Path.Combi
3860: 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 20 70 61  ne(directory, pa
3870: 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20 20 20  ir.Key)))..     
3880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3890: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61                ma
38b0: 74 63 68 65 73 2e 41 64 64 28 70 61 69 72 2e 4b  tches.Add(pair.K
38c0: 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ey);..          
38d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38e0: 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20  result++;..     
38f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3900: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
3910: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
3920: 6e 67 20 76 61 6c 75 65 20 3d 20 70 61 69 72 2e  ng value = pair.
3930: 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  Value;....      
3940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3950: 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
3960: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
3970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
3980: 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  ntinue;....     
3990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39a0: 20 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45   if (Directory.E
39b0: 78 69 73 74 73 28 50 61 74 68 2e 43 6f 6d 62 69  xists(Path.Combi
39c0: 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 20 76 61  ne(directory, va
39d0: 6c 75 65 29 29 29 0d 0a 20 20 20 20 20 20 20 20  lue)))..        
39e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
39f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3a00: 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68             match
3a10: 65 73 2e 41 64 64 28 76 61 6c 75 65 29 3b 0d 0a  es.Add(value);..
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 20 20 20 72 65 73 75 6c 74            result
3a40: 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
3a50: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
3a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a70: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
3a80: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
3a90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
3aa0: 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
3ab0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b00: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
3b10: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
3b20: 62 6f 6f 6c 20 43 68 65 63 6b 41 73 73 65 6d 62  bool CheckAssemb
3b30: 6c 79 43 6f 64 65 42 61 73 65 28 0d 0a 20 20 20  lyCodeBase(..   
3b40: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20         Assembly 
3b50: 61 73 73 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20  assembly,..     
3b60: 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
3b70: 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  fileName..      
3b80: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
3b90: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
3ba0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3bb0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
3bc0: 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d  sembly == null).
3bd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3be0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
3bf0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3c00: 20 20 73 74 72 69 6e 67 20 63 6f 64 65 42 61 73    string codeBas
3c10: 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 43 6f 64  e = assembly.Cod
3c20: 65 42 61 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  eBase;....      
3c30: 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
3c40: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
3c50: 28 63 6f 64 65 42 61 73 65 29 29 0d 0a 20 20 20  (codeBase))..   
3c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3c70: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
3c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 72                Ur
3c90: 69 20 75 72 69 20 3d 20 6e 65 77 20 55 72 69 28  i uri = new Uri(
3ca0: 63 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20  codeBase);..    
3cb0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
3cc0: 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 20 3d   localFileName =
3cd0: 20 75 72 69 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d   uri.LocalPath;.
3ce0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
3cf0: 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74   if (!File.Exist
3d00: 73 28 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29  s(localFileName)
3d10: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3d20: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
3d30: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
3d40: 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
3d50: 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44  tory = Path.GetD
3d60: 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 0d 0a 20  irectoryName(.. 
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d80: 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 3b   localFileName);
3d90: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a   /* throw */....
3da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
3db0: 72 69 6e 67 20 78 6d 6c 43 6f 6e 66 69 67 46 69  ring xmlConfigFi
3dc0: 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f  leName = Path.Co
3dd0: 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20 20 20  mbine(..        
3de0: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
3df0: 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69  ory, XmlConfigFi
3e00: 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
3e10: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
3e20: 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43 6f 6e  le.Exists(xmlCon
3e30: 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  figFileName)).. 
3e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
3e50: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
3e60: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
3e70: 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
3e80: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
3e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ea0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3eb0: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
3ec0: 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
3ed0: 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
3ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ef0: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
3f00: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
3f10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3f20: 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
3f30: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
3f40: 6f 61 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20  oader found XML 
3f50: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
3f60: 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  le " +..        
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f80: 20 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65    "via code base
3f90: 20 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65   for currently e
3fa0: 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
3fb0: 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20  y: \"{0}\"",..  
3fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fd0: 20 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69          xmlConfi
3fe0: 67 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20  gFileName)); /* 
3ff0: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
4000: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4020: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
4030: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4050: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
4060: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4070: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
4080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4090: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c      fileName = l
40a0: 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20  ocalFileName;.. 
40b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40c0: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
40d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
40e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
40f0: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74  List<string> mat
4100: 63 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ches = null;....
4110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
4120: 20 28 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74   (CheckForArchit
4130: 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f  ecturesAndPlatfo
4140: 72 6d 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72  rms(directory, r
4150: 65 66 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29  ef matches) > 0)
4160: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4170: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
4180: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
4190: 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
41b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
41c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
41d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
41e0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
41f0: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
4200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4210: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
4220: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
4230: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
4240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
4250: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
4260: 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64 20 6e  e-loader found n
4270: 61 74 69 76 65 20 73 75 62 2d 64 69 72 65 63 74  ative sub-direct
4280: 6f 72 69 65 73 20 22 20 2b 0d 0a 20 20 20 20 20  ories " +..     
4290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42a0: 20 20 20 20 20 22 76 69 61 20 63 6f 64 65 20 62       "via code b
42b0: 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e 74 6c  ase for currentl
42c0: 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
42d0: 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d  mbly: \"{0}\"",.
42e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
42f0: 20 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 54             ListT
4300: 6f 53 74 72 69 6e 67 28 6d 61 74 63 68 65 73 29  oString(matches)
4310: 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
4320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4330: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
4340: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
4350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4360: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
4370: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
4380: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
4390: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
43a0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
43b0: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
43c0: 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e  ame = localFileN
43d0: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
43e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
43f0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
4400: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4410: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
4420: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
4430: 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
4440: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
4450: 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
4460: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
4470: 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
4480: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
4490: 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
44a0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  f..          {..
44b0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
44c0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
44d0: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
44e0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
44f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4500: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
4510: 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
4520: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
4530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4540: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
4550: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
4560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4570: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
4580: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
4590: 61 69 6c 65 64 20 74 6f 20 63 68 65 63 6b 20 63  ailed to check c
45a0: 6f 64 65 20 62 61 73 65 20 22 20 2b 0d 0a 20 20  ode base " +..  
45b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45c0: 20 20 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74      "for current
45d0: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
45e0: 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29  embly: {0}", e))
45f0: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
4600: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
4610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
4620: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
4630: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4640: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
4650: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
4660: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
4670: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
4680: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4690: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d   false;..      }
46a0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
46b0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
46c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
4700: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4710: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
4720: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
4730: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f  the directory fo
4740: 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63  r the assembly c
4750: 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 0d 0a  urrently being..
4760: 20 20 20 20 20 20 2f 2f 2f 20 65 78 65 63 75 74        /// execut
4770: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
4780: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
4790: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
47a0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69        /// The di
47b0: 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
47c0: 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
47d0: 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65  ly being execute
47e0: 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a  d -OR- null if..
47f0: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e        /// it can
4800: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
4810: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
4820: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4830: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
4840: 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d 62 6c  tring GetAssembl
4850: 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  yDirectory()..  
4860: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4870: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
4880: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4890: 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
48a0: 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65  ly = Assembly.Ge
48b0: 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62  tExecutingAssemb
48c0: 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly();....       
48d0: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
48e0: 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  bly == null)..  
48f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4900: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
4910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
4920: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20  ring fileName = 
4930: 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41  null;....#if PLA
4940: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
4950: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
4960: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61        AssemblyNa
4970: 6d 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20  me assemblyName 
4980: 3d 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61  = assembly.GetNa
4990: 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  me();....       
49a0: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
49b0: 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  blyName == null)
49c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
49d0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
49e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
49f0: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73    fileName = ass
4a00: 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61  emblyName.CodeBa
4a10: 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  se;..#else..    
4a20: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 43            if (!C
4a30: 68 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65  heckAssemblyCode
4a40: 42 61 73 65 28 61 73 73 65 6d 62 6c 79 2c 20 72  Base(assembly, r
4a50: 65 66 20 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ef fileName)).. 
4a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a70: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65   fileName = asse
4a80: 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a  mbly.Location;..
4a90: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
4aa0: 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
4ab0: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
4ac0: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
4ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4ae0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
4af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
4b00: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
4b10: 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
4b20: 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b  yName(fileName);
4b30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4b40: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
4b50: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
4b60: 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
4b70: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4b80: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
4b90: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
4ba0: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
4bb0: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
4bc0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
4bd0: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
4be0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
4bf0: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
4c00: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
4c10: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
4c20: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
4c30: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
4c40: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
4c50: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
4c60: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
4c70: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c90: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
4ca0: 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
4cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4cc0: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
4cd0: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
4ce0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4cf0: 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
4d00: 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
4d10: 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 67 65  der failed to ge
4d20: 74 20 64 69 72 65 63 74 6f 72 79 20 22 20 2b 0d  t directory " +.
4d30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4d40: 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72         "for curr
4d50: 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
4d60: 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20  assembly: {0}", 
4d70: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
4d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4d90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
4da0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
4db0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4dc0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
4dd0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
4de0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
4df0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
4e00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
4e10: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
4e20: 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
4e30: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
4e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e80: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
4e90: 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f 6e 61   #region Optiona
4ea0: 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74 65 20  l Native SQLite 
4eb0: 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f 61 64  Library Pre-Load
4ec0: 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20 20 20  ing Code..      
4ed0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54  //..      // NOT
4ee0: 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c 6f 6f  E: If we are loo
4ef0: 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73 74 61  king for the sta
4f00: 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44 4c 4c  ndard SQLite DLL
4f10: 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c 22 29   ("sqlite3.dll")
4f20: 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  ,..      //     
4f30: 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20 44 4c    the interop DL
4f40: 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74 65 72  L ("SQLite.Inter
4f50: 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77 65 20  op.dll"), or we 
4f60: 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74  are running on t
4f70: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  he..      //    
4f80: 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20     .NET Compact 
4f90: 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20 73 68  Framework, we sh
4fa0: 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74 68 69  ould include thi
4fb0: 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69 66 20  s code (only if 
4fc0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
4fd0: 20 20 20 20 66 65 61 74 75 72 65 20 68 61 73 20      feature has 
4fe0: 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20 65 6e  actually been en
4ff0: 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20 63 6f  abled).  This co
5000: 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f 74 61  de would be tota
5010: 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  lly..      //   
5020: 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20 69 66      redundant if
5030: 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68 61 73   this module has
5040: 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20 69 6e   been bundled in
5050: 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64  to the mixed-mod
5060: 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  e..      //     
5070: 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20    assembly...   
5080: 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c 49 54     //..#if SQLIT
5090: 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53  E_STANDARD || US
50a0: 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c  E_INTEROP_DLL ||
50b0: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
50c0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a 20 20  TFRAMEWORK....  
50d0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f      //..      //
50e0: 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f 6d 70   NOTE: Only comp
50f0: 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74 69 76  ile in the nativ
5100: 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
5110: 61 64 20 63 6f 64 65 20 69 66 20 74 68 65 20 66  ad code if the f
5120: 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f  eature..      //
5130: 20 20 20 20 20 20 20 68 61 73 20 62 65 65 6e 20         has been 
5140: 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68 69 73  enabled for this
5150: 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20 20 2f   build...      /
5160: 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e  /..#if PRELOAD_N
5170: 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20  ATIVE_LIBRARY.. 
5180: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5190: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
51a0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e  e name of the en
51b0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
51c0: 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  le containing th
51d0: 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20  e processor..   
51e0: 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74     /// architect
51f0: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
5200: 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
5210: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5220: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
5230: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
5240: 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53 53 4f   string PROCESSO
5250: 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20 3d  R_ARCHITECTURE =
5260: 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50 52 4f  ..          "PRO
5270: 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54  CESSOR_ARCHITECT
5280: 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  URE";....      /
5290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
52e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
52f0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
5300: 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65   the P/Invoke me
5310: 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73 20  thod that wraps 
5320: 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33 32  the native Win32
5330: 20 4c 6f 61 64 4c 69 62 72 61 72 79 0d 0a 20 20   LoadLibrary..  
5340: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
5350: 2e 20 20 53 65 65 20 74 68 65 20 4d 53 44 4e 20  .  See the MSDN 
5360: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
5370: 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f  r full details o
5380: 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20  n what it..     
5390: 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20   /// does...    
53a0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
53b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
53c0: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
53d0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
53e0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  he name of the e
53f0: 78 65 63 75 74 61 62 6c 65 20 6c 69 62 72 61 72  xecutable librar
5400: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
5410: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
5420: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
5430: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
5440: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
5450: 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52  upon success -OR
5460: 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e  - IntPtr.Zero on
5470: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
5480: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
5490: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
54a0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
54b0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
54c0: 74 28 22 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23  t("kernel32",..#
54d0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c  else..      [Dll
54e0: 49 6d 70 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22  Import("coredll"
54f0: 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ,..#endif..     
5500: 20 20 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76       CallingConv
5510: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
5520: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70  Convention.Winap
5530: 69 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  i, CharSet = Cha
5540: 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20  rSet.Auto,..#if 
5550: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
5560: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
5570: 20 20 20 20 20 20 42 65 73 74 46 69 74 4d 61 70        BestFitMap
5580: 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68  ping = false, Th
5590: 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43  rowOnUnmappableC
55a0: 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e  har = true,..#en
55b0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 53  dif..          S
55c0: 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72  etLastError = tr
55d0: 75 65 29 5d 0d 0a 20 20 20 20 20 20 70 72 69 76  ue)]..      priv
55e0: 61 74 65 20 73 74 61 74 69 63 20 65 78 74 65 72  ate static exter
55f0: 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  n IntPtr LoadLib
5600: 72 61 72 79 28 73 74 72 69 6e 67 20 66 69 6c 65  rary(string file
5610: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
5620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
5670: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
5680: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
5690: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
56a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
56b0: 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20  is the P/Invoke 
56c0: 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70  method that wrap
56d0: 73 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e  s the native Win
56e0: 33 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f  32 GetSystemInfo
56f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63  ..      /// func
5700: 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d  tion.  See the M
5710: 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
5720: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
5730: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
5740: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
5750: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5760: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
5770: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79 73  <param name="sys
5780: 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20 20  temInfo">..     
5790: 20 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d 20   /// The system 
57a0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75  information stru
57b0: 63 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c 6c  cture to be fill
57c0: 65 64 20 69 6e 20 62 79 20 74 68 65 20 66 75 6e  ed in by the fun
57d0: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ction...      //
57e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
57f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f    [DllImport("co
5800: 72 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67 43  redll", CallingC
5810: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
5820: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69  ingConvention.Wi
5830: 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 70 72  napi)]..      pr
5840: 69 76 61 74 65 20 73 74 61 74 69 63 20 65 78 74  ivate static ext
5850: 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79 73 74  ern void GetSyst
5860: 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53 54 45  emInfo(out SYSTE
5870: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
5880: 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  o);....      ///
5890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58d0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
58e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
58f0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d     /// This enum
5900: 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73  eration contains
5910: 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76 61   the possible va
5920: 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70 72 6f  lues for the pro
5930: 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  cessor..      //
5940: 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20 66  / architecture f
5950: 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79 73 74  ield of the syst
5960: 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73  em information s
5970: 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
5980: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5990: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 65  .      private e
59a0: 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72 41 72 63  num ProcessorArc
59b0: 68 69 74 65 63 74 75 72 65 20 3a 20 75 73 68 6f  hitecture : usho
59c0: 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a 20 57 69  rt /* COMPAT: Wi
59d0: 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 7b  n32. */..      {
59e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 74 65  ..          Inte
59f0: 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20 20 20  l = 0,..        
5a00: 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a 20 20 20    MIPS = 1,..   
5a10: 20 20 20 20 20 20 20 41 6c 70 68 61 20 3d 20 32         Alpha = 2
5a20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6f 77  ,..          Pow
5a30: 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20 20 20 20  erPC = 3,..     
5a40: 20 20 20 20 20 53 48 78 20 3d 20 34 2c 0d 0a 20       SHx = 4,.. 
5a50: 20 20 20 20 20 20 20 20 20 41 52 4d 20 3d 20 35           ARM = 5
5a60: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41 36  ,..          IA6
5a70: 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20 20 20 20  4 = 6,..        
5a80: 20 20 41 6c 70 68 61 36 34 20 3d 20 37 2c 0d 0a    Alpha64 = 7,..
5a90: 20 20 20 20 20 20 20 20 20 20 4d 53 49 4c 20 3d            MSIL =
5aa0: 20 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41   8,..          A
5ab0: 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20 20 20 20  MD64 = 9,..     
5ac0: 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f 57 69 6e       IA32_on_Win
5ad0: 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20 20 20 20  64 = 10,..      
5ae0: 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30 78      Unknown = 0x
5af0: 46 46 46 46 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  FFFF..      }...
5b00: 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
5b60: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5b70: 20 54 68 69 73 20 73 74 72 75 63 74 75 72 65 20   This structure 
5b80: 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72 6d 61  contains informa
5b90: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 63  tion about the c
5ba0: 75 72 72 65 6e 74 20 63 6f 6d 70 75 74 65 72 2e  urrent computer.
5bb0: 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f   This..      ///
5bc0: 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 70 72   includes the pr
5bd0: 6f 63 65 73 73 6f 72 20 74 79 70 65 2c 20 70 61  ocessor type, pa
5be0: 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f 72 79 20  ge size, memory 
5bf0: 61 64 64 72 65 73 73 65 73 2c 20 65 74 63 2e 0d  addresses, etc..
5c00: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
5c10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b 53 74  mary>..      [St
5c20: 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
5c30: 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
5c40: 29 5d 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  )]..      privat
5c50: 65 20 73 74 72 75 63 74 20 53 59 53 54 45 4d 5f  e struct SYSTEM_
5c60: 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  INFO..      {.. 
5c70: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
5c80: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
5c90: 63 74 75 72 65 20 77 50 72 6f 63 65 73 73 6f 72  cture wProcessor
5ca0: 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20  Architecture;.. 
5cb0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
5cc0: 75 73 68 6f 72 74 20 77 52 65 73 65 72 76 65 64  ushort wReserved
5cd0: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
5ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
5cf0: 69 63 20 75 69 6e 74 20 64 77 50 61 67 65 53 69  ic uint dwPageSi
5d00: 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ze; /* NOT USED 
5d10: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
5d20: 62 6c 69 63 20 49 6e 74 50 74 72 20 6c 70 4d 69  blic IntPtr lpMi
5d30: 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e  nimumApplication
5d40: 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20  Address; /* NOT 
5d50: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
5d60: 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
5d70: 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70 6c 69 63   lpMaximumApplic
5d80: 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a  ationAddress; /*
5d90: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
5da0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
5db0: 69 6e 74 20 64 77 41 63 74 69 76 65 50 72 6f 63  int dwActiveProc
5dc0: 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20 4e 4f  essorMask; /* NO
5dd0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
5de0: 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74       public uint
5df0: 20 64 77 4e 75 6d 62 65 72 4f 66 50 72 6f 63 65   dwNumberOfProce
5e00: 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20 55 53  ssors; /* NOT US
5e10: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
5e20: 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50   public uint dwP
5e30: 72 6f 63 65 73 73 6f 72 54 79 70 65 3b 20 2f 2a  rocessorType; /*
5e40: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
5e50: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
5e60: 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74 69 6f 6e  int dwAllocation
5e70: 47 72 61 6e 75 6c 61 72 69 74 79 3b 20 2f 2a 20  Granularity; /* 
5e80: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
5e90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73         public us
5ea0: 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72 4c  hort wProcessorL
5eb0: 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  evel; /* NOT USE
5ec0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
5ed0: 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50  public ushort wP
5ee0: 72 6f 63 65 73 73 6f 72 52 65 76 69 73 69 6f 6e  rocessorRevision
5ef0: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
5f00: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
5f10: 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  f....      /////
5f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f60: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
5f70: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
5f80: 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ta..      /// <s
5f90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5fa0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
5fb0: 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 66  dule file name f
5fc0: 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
5fd0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20  Lite library or 
5fe0: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  null...      ///
5ff0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6000: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
6010: 63 20 73 74 72 69 6e 67 20 5f 53 51 4c 69 74 65  c string _SQLite
6020: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  NativeModuleFile
6030: 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
6040: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6090: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
60a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
60b0: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
60c0: 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 74 68 65  e handle for the
60d0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
60e0: 69 62 72 61 72 79 20 6f 72 20 74 68 65 20 76 61  ibrary or the va
60f0: 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49  lue..      /// I
6100: 6e 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20  ntPtr.Zero...   
6110: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6120: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
6130: 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 5f   static IntPtr _
6140: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
6150: 6c 65 48 61 6e 64 6c 65 20 3d 20 49 6e 74 50 74  leHandle = IntPt
6160: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 23  r.Zero;..      #
6170: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6180: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
61d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
61e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 65 61  >..      /// Sea
61f0: 72 63 68 65 73 20 66 6f 72 20 74 68 65 20 6e 61  rches for the na
6200: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
6210: 61 72 79 20 69 6e 20 74 68 65 20 64 69 72 65 63  ary in the direc
6220: 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  tory containing.
6230: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 61  .      /// the a
6240: 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c  ssembly currentl
6250: 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64  y being executed
6260: 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65 20   as well as the 
6270: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a  base directory..
6280: 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68        /// for th
6290: 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
62a0: 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20  ation domain... 
62b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
62c0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
62d0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65  param name="base
62e0: 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20  Directory">..   
62f0: 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
6300: 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
6310: 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69  ter will be modi
6320: 66 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f  fied to refer to
6330: 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
6340: 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 63   /// directory c
6350: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
6360: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
6370: 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
6380: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
6390: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
63a0: 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  "processorArchit
63b0: 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20  ecture">..      
63c0: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
63d0: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
63e0: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
63f0: 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
6400: 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f  e name..      //
6410: 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65 64 69 61  / of the immedia
6420: 74 65 20 64 69 72 65 63 74 6f 72 79 20 28 69 2e  te directory (i.
6430: 65 2e 20 74 68 65 20 6f 66 66 73 65 74 20 66 72  e. the offset fr
6440: 6f 6d 20 74 68 65 20 62 61 73 65 20 64 69 72 65  om the base dire
6450: 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f  ctory)..      //
6460: 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  / containing the
6470: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
6480: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
6490: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
64a0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
64b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
64c0: 7a 65 72 6f 20 28 73 75 63 63 65 73 73 29 20 69  zero (success) i
64d0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
64e0: 69 74 65 20 6c 69 62 72 61 72 79 20 77 61 73 20  ite library was 
64f0: 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69 73 65  found; otherwise
6500: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72  ,..      /// zer
6510: 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20  o (failure)...  
6520: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
6530: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
6540: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65  e static bool Se
6550: 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79  archForDirectory
6560: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  (..          ref
6570: 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65   string baseDire
6580: 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 2f 2a  ctory,        /*
6590: 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
65a0: 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 70 72     ref string pr
65b0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
65c0: 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20  ure /* out */.. 
65d0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
65e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
65f0: 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
6600: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
6610: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
6620: 69 74 65 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44  ite_NoSearchForD
6630: 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29  irectory", null)
6640: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
6650: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6660: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
6670: 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c 45 44 20  se; /* DISABLED 
6680: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  */..          }.
6690: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
66a0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
66b0: 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20 6c 69  TE: Build the li
66c0: 73 74 20 6f 66 20 62 61 73 65 20 64 69 72 65 63  st of base direc
66d0: 74 6f 72 69 65 73 20 61 6e 64 20 70 72 6f 63 65  tories and proce
66e0: 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20  ssor/platform.. 
66f0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6700: 20 20 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20    names.  These 
6710: 6c 69 73 74 73 20 77 69 6c 6c 20 62 65 20 75 73  lists will be us
6720: 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f 63 61 74  ed to help locat
6730: 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  e the native..  
6740: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
6750: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
6760: 72 61 72 79 20 28 6f 72 20 69 6e 74 65 72 6f 70  rary (or interop
6770: 20 61 73 73 65 6d 62 6c 79 29 20 74 6f 20 70 72   assembly) to pr
6780: 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20 20 20  e-load into..   
6790: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
67a0: 74 68 69 73 20 70 72 6f 63 65 73 73 2e 0d 0a 20  this process... 
67b0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
67c0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20         string[] 
67d0: 64 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d  directories = {.
67e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47  .              G
67f0: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
6800: 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21 50 4c 41  ory(),..#if !PLA
6810: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6820: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
6830: 20 20 20 20 20 20 41 70 70 44 6f 6d 61 69 6e 2e        AppDomain.
6840: 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61  CurrentDomain.Ba
6850: 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 23 65  seDirectory,..#e
6860: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
6870: 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  };....          
6880: 73 74 72 69 6e 67 5b 5d 20 73 75 62 44 69 72 65  string[] subDire
6890: 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
68a0: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 50 72             GetPr
68b0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
68c0: 75 72 65 28 29 2c 20 47 65 74 50 6c 61 74 66 6f  ure(), GetPlatfo
68d0: 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20  rmName(null)..  
68e0: 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20          };....  
68f0: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
6900: 28 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72  (string director
6910: 79 20 69 6e 20 64 69 72 65 63 74 6f 72 69 65 73  y in directories
6920: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
6930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
6940: 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e   (directory == n
6950: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
6960: 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
6970: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
6980: 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72 69     foreach (stri
6990: 6e 67 20 73 75 62 44 69 72 65 63 74 6f 72 79 20  ng subDirectory 
69a0: 69 6e 20 73 75 62 44 69 72 65 63 74 6f 72 69 65  in subDirectorie
69b0: 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
69c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
69d0: 20 20 20 20 20 20 20 69 66 20 28 73 75 62 44 69         if (subDi
69e0: 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
69f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6a00: 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
6a10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
6a20: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
6a30: 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c  leName = FixUpDl
6a40: 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43  lFileName(Path.C
6a50: 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20 20  ombine(..       
6a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
6a70: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65  ath.Combine(dire
6a80: 63 74 6f 72 79 2c 20 73 75 62 44 69 72 65 63 74  ctory, subDirect
6a90: 6f 72 79 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c  ory), SQLITE_DLL
6aa0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
6ab0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
6ad0: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 53  / NOTE: If the S
6ae0: 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c 65 20 65  QLite DLL file e
6af0: 78 69 73 74 73 2c 20 72 65 74 75 72 6e 20 73 75  xists, return su
6b00: 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
6b10: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6b20: 20 20 20 50 72 69 6f 72 20 74 6f 20 72 65 74 75     Prior to retu
6b30: 72 6e 69 6e 67 2c 20 73 65 74 20 74 68 65 20 62  rning, set the b
6b40: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 61 6e  ase directory an
6b50: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
6b60: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72       //       pr
6b70: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
6b80: 74 75 72 65 20 74 6f 20 72 65 66 6c 65 63 74 20  ture to reflect 
6b90: 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20  the location..  
6ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bb0: 2f 2f 20 20 20 20 20 20 20 77 68 65 72 65 20 69  //       where i
6bc0: 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20  t was found...  
6bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6be0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
6bf0: 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45        if (File.E
6c00: 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29  xists(fileName))
6c10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6c20: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
6c40: 65 44 69 72 65 63 74 6f 72 79 20 3d 20 64 69 72  eDirectory = dir
6c50: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
6c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
6c70: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
6c80: 74 75 72 65 20 3d 20 73 75 62 44 69 72 65 63 74  ture = subDirect
6c90: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
6ca0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6cb0: 72 6e 20 74 72 75 65 3b 20 2f 2a 20 46 4f 55 4e  rn true; /* FOUN
6cc0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
6cd0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
6ce0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
6cf0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
6d00: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
6d10: 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f 55 4e 44 20  e; /* NOT FOUND 
6d20: 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  */..      }.... 
6d30: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
6d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6d80: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6d90: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
6da0: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
6db0: 6e 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65  ns the base dire
6dc0: 63 74 6f 72 79 20 6f 66 20 74 68 65 20 63 75 72  ctory of the cur
6dd0: 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
6de0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61  ..      /// doma
6df0: 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  in...      /// <
6e00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
6e10: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
6e20: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61        /// The ba
6e30: 73 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  se directory for
6e40: 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
6e50: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20  lication domain 
6e60: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d  -OR- null if it.
6e70: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f  .      /// canno
6e80: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
6e90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
6ea0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
6eb0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
6ec0: 69 6e 67 20 47 65 74 42 61 73 65 44 69 72 65 63  ing GetBaseDirec
6ed0: 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
6ee0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
6ef0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
6f00: 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61  : If the "PreLoa
6f10: 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65  dSQLite_BaseDire
6f20: 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65  ctory" environme
6f30: 6e 74 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20  nt variable..   
6f40: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6f50: 69 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76  is set, use it v
6f60: 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20  erbatim for the 
6f70: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d  base directory..
6f80: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
6f90: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
6fa0: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 53  directory = GetS
6fb0: 65 74 74 69 6e 67 56 61 6c 75 65 28 22 50 72 65  ettingValue("Pre
6fc0: 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44  LoadSQLite_BaseD
6fd0: 69 72 65 63 74 6f 72 79 22 2c 0d 0a 20 20 20 20  irectory",..    
6fe0: 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c 29 3b            null);
6ff0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
7000: 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e   (directory != n
7010: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
7020: 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63      return direc
7030: 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tory;....#if !PL
7040: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7050: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
7060: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
7070: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
7080: 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
7090: 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63  UseAssemblyDirec
70a0: 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  tory" environmen
70b0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
70c0: 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 69        variable i
70d0: 73 20 73 65 74 20 28 74 6f 20 61 6e 79 74 68 69  s set (to anythi
70e0: 6e 67 29 2c 20 74 68 65 6e 20 61 74 74 65 6d 70  ng), then attemp
70f0: 74 20 74 6f 20 75 73 65 20 74 68 65 0d 0a 20 20  t to use the..  
7100: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
7110: 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
7120: 69 6e 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e  ining the curren
7130: 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
7140: 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20  sembly..        
7150: 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65 2e    //       (i.e.
7160: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
7170: 69 74 65 29 20 69 6e 74 73 65 61 64 20 6f 66 20  ite) intsead of 
7180: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d  the application.
7190: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
71a0: 20 20 20 20 64 6f 6d 61 69 6e 20 62 61 73 65 20      domain base 
71b0: 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20  directory...    
71c0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
71d0: 20 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69      if (GetSetti
71e0: 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
71f0: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
7200: 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
7210: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
7220: 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29  , null) != null)
7230: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
7240: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72               dir
7250: 65 63 74 6f 72 79 20 3d 20 47 65 74 41 73 73 65  ectory = GetAsse
7260: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b  mblyDirectory();
7270: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
7280: 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
7290: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
72a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
72b0: 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20  rn directory;.. 
72c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
72d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
72e0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f        // NOTE: O
72f0: 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61  therwise, fallba
7300: 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  ck on using the 
7310: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f  base directory o
7320: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  f the..         
7330: 20 2f 2f 20 20 20 20 20 20 20 63 75 72 72 65 6e   //       curren
7340: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  t application do
7350: 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  main...         
7360: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   //..          r
7370: 65 74 75 72 6e 20 41 70 70 44 6f 6d 61 69 6e 2e  eturn AppDomain.
7380: 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61  CurrentDomain.Ba
7390: 73 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 23 65  seDirectory;..#e
73a0: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lse..          /
73b0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
73c0: 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
73d0: 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69   fallback on usi
73e0: 6e 67 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  ng the directory
73f0: 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
7400: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
7410: 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78  the currently ex
7420: 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
7430: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
7440: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
7450: 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  n GetAssemblyDir
7460: 65 63 74 6f 72 79 28 29 3b 0d 0a 23 65 6e 64 69  ectory();..#endi
7470: 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  f..      }....  
7480: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
74d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
74e0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
74f0: 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
7500: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
7510: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72  rary file name r
7520: 65 71 75 69 72 65 73 20 61 20 73 75 66 66 69 78  equires a suffix
7530: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20  ..      /// and 
7540: 61 64 64 73 20 69 74 20 69 66 20 6e 65 63 65 73  adds it if neces
7550: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  sary...      ///
7560: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7570: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7580: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
7590: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72        /// The or
75a0: 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c  iginal dynamic l
75b0: 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ink library file
75c0: 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74   name to inspect
75d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
75e0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
75f0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
7600: 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69    /// The dynami
7610: 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
7620: 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62  ile name, possib
7630: 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69  ly modified to i
7640: 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20  nclude an..     
7650: 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d   /// extension..
7660: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
7670: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
7680: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
7690: 6e 67 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e  ng FixUpDllFileN
76a0: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
76b0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20  string fileName 
76c0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
76d0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
76e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
76f0: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
7700: 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  pty(fileName))..
7710: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7720: 20 20 20 20 20 20 20 20 20 20 20 50 6c 61 74 66             Platf
7730: 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49 64  ormID platformId
7740: 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f   = Environment.O
7750: 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72  SVersion.Platfor
7760: 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  m;....          
7770: 20 20 20 20 69 66 20 28 28 70 6c 61 74 66 6f 72      if ((platfor
7780: 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49  mId == PlatformI
7790: 44 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20  D.Win32S) ||..  
77a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77b0: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
77c0: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 57  latformID.Win32W
77d0: 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a 20 20 20 20  indows) ||..    
77e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
77f0: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
7800: 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 4e 54 29  tformID.Win32NT)
7810: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
7820: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
7830: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
7840: 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20 20 20 20  .WinCE))..      
7850: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7860: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7870: 28 21 66 69 6c 65 4e 61 6d 65 2e 45 6e 64 73 57  (!fileName.EndsW
7880: 69 74 68 28 44 6c 6c 46 69 6c 65 45 78 74 65 6e  ith(DllFileExten
7890: 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  sion,..         
78a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78b0: 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
78c0: 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
78d0: 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
78e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
78f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7900: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
7910: 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e  e + DllFileExten
7920: 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  sion;..         
7930: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
7940: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
7950: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7960: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c        return fil
7970: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  eName;..      }.
7980: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
7990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79d0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
79e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
79f0: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
7a00: 65 74 75 72 6e 73 20 74 68 65 20 70 72 6f 63 65  eturns the proce
7a10: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
7a20: 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
7a30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63  ..      /// proc
7a40: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
7a50: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
7a60: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
7a70: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
7a80: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
7a90: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
7aa0: 72 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52  rent process -OR
7ab0: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
7ac0: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
7ad0: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
7ae0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
7af0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
7b00: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
7b10: 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
7b20: 68 69 74 65 63 74 75 72 65 28 29 0d 0a 20 20 20  hitecture()..   
7b30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7b40: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
7b50: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
7b60: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
7b70: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
7b80: 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  re" environment.
7b90: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
7ba0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20      variable is 
7bb0: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
7bc0: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 63 75 72  atim for the cur
7bd0: 72 65 6e 74 20 70 72 6f 63 65 73 73 6f 72 0d 0a  rent processor..
7be0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
7bf0: 20 20 20 61 72 63 68 69 74 65 63 74 75 72 65 2e     architecture.
7c00: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
7c10: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
7c20: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
7c30: 65 63 74 75 72 65 20 3d 20 47 65 74 53 65 74 74  ecture = GetSett
7c40: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
7c50: 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
7c60: 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f  dSQLite_Processo
7c70: 72 41 72 63 68 69 74 65 63 74 75 72 65 22 2c 20  rArchitecture", 
7c80: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
7c90: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
7ca0: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 21 3d  rArchitecture !=
7cb0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
7cc0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f        return pro
7cd0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
7ce0: 72 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  re;....         
7cf0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
7d00: 2f 20 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74  / BUGBUG: Will t
7d10: 68 69 73 20 61 6c 77 61 79 73 20 62 65 20 72 65  his always be re
7d20: 6c 69 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20  liable?..       
7d30: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
7d40: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
7d50: 65 63 74 75 72 65 20 3d 20 47 65 74 53 65 74 74  ecture = GetSett
7d60: 69 6e 67 56 61 6c 75 65 28 50 52 4f 43 45 53 53  ingValue(PROCESS
7d70: 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 2c  OR_ARCHITECTURE,
7d80: 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20   null);....     
7d90: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
7de0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7df0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7e00: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7e10: 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 43        // HACK: C
7e20: 68 65 63 6b 20 66 6f 72 20 61 6e 20 22 69 6d 70  heck for an "imp
7e30: 6f 73 73 69 62 6c 65 22 20 73 69 74 75 61 74 69  ossible" situati
7e40: 6f 6e 2e 20 20 49 66 20 74 68 65 20 70 6f 69 6e  on.  If the poin
7e50: 74 65 72 20 73 69 7a 65 0d 0a 20 20 20 20 20 20  ter size..      
7e60: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
7e70: 33 32 2d 62 69 74 73 2c 20 74 68 65 20 70 72 6f  32-bits, the pro
7e80: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
7e90: 75 72 65 20 63 61 6e 6e 6f 74 20 62 65 20 22 41  ure cannot be "A
7ea0: 4d 44 36 34 22 2e 0d 0a 20 20 20 20 20 20 20 20  MD64"...        
7eb0: 20 20 2f 2f 20 20 20 20 20 20 20 49 6e 20 74 68    //       In th
7ec0: 61 74 20 63 61 73 65 2c 20 77 65 20 61 72 65 20  at case, we are 
7ed0: 61 6c 6d 6f 73 74 20 63 65 72 74 61 69 6e 6c 79  almost certainly
7ee0: 20 68 69 74 74 69 6e 67 20 61 20 62 75 67 20 69   hitting a bug i
7ef0: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  n the..         
7f00: 20 2f 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74   //       operat
7f10: 69 6e 67 20 73 79 73 74 65 6d 20 61 6e 64 2f 6f  ing system and/o
7f20: 72 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20  r Visual Studio 
7f30: 74 68 61 74 20 63 61 75 73 65 73 20 74 68 65 0d  that causes the.
7f40: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
7f50: 20 20 20 20 50 52 4f 43 45 53 53 4f 52 5f 41 52      PROCESSOR_AR
7f60: 43 48 49 54 45 43 54 55 52 45 20 65 6e 76 69 72  CHITECTURE envir
7f70: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
7f80: 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  to contain the..
7f90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
7fa0: 20 20 20 77 72 6f 6e 67 20 76 61 6c 75 65 20 69     wrong value i
7fb0: 6e 20 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61  n some circumsta
7fc0: 6e 63 65 73 2e 20 20 50 6c 65 61 73 65 20 72 65  nces.  Please re
7fd0: 66 65 72 20 74 6f 20 74 69 63 6b 65 74 0d 0a 20  fer to ticket.. 
7fe0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
7ff0: 20 20 5b 39 61 63 39 38 36 32 36 31 31 5d 20 66    [9ac9862611] f
8000: 6f 72 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72  or further infor
8010: 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  mation...       
8020: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
8030: 20 69 66 20 28 28 49 6e 74 50 74 72 2e 53 69 7a   if ((IntPtr.Siz
8040: 65 20 3d 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29  e == sizeof(int)
8050: 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
8060: 20 20 20 20 53 74 72 69 6e 67 2e 45 71 75 61 6c      String.Equal
8070: 73 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  s(processorArchi
8080: 74 65 63 74 75 72 65 2c 20 22 41 4d 44 36 34 22  tecture, "AMD64"
8090: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
80a0: 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61       StringCompa
80b0: 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e  rison.OrdinalIgn
80c0: 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20  oreCase))..     
80d0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
80e0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
80f0: 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a  RACE_DETECTION..
8100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8120: 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e 20 74 72  // NOTE: When tr
8130: 61 63 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64  acing is enabled
8140: 2c 20 73 61 76 65 20 74 68 65 20 6f 72 69 67 69  , save the origi
8150: 6e 61 6c 6c 79 20 64 65 74 65 63 74 65 64 0d 0a  nally detected..
8160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8170: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
8180: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 62 65   architecture be
8190: 66 6f 72 65 20 63 68 61 6e 67 69 6e 67 20 69 74  fore changing it
81a0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
81b0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
81c0: 20 20 20 73 74 72 69 6e 67 20 73 61 76 65 64 50     string savedP
81d0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
81e0: 74 75 72 65 20 3d 20 70 72 6f 63 65 73 73 6f 72  ture = processor
81f0: 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 23  Architecture;..#
8200: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
8210: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
8220: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
8230: 3a 20 57 65 20 6b 6e 6f 77 20 74 68 61 74 20 6f  : We know that o
8240: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73  perating systems
8250: 20 74 68 61 74 20 72 65 74 75 72 6e 20 22 41 4d   that return "AM
8260: 44 36 34 22 20 61 73 0d 0a 20 20 20 20 20 20 20  D64" as..       
8270: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
8280: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
8290: 63 68 69 74 65 63 74 75 72 65 20 61 72 65 20 61  chitecture are a
82a0: 63 74 75 61 6c 6c 79 20 61 20 73 75 70 65 72 73  ctually a supers
82b0: 65 74 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20  et of..         
82c0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
82d0: 65 20 22 78 38 36 22 20 70 72 6f 63 65 73 73 6f  e "x86" processo
82e0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 3b 20  r architecture; 
82f0: 74 68 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72  therefore, retur
8300: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n..             
8310: 20 2f 2f 20 20 20 20 20 20 20 22 78 38 36 22 20   //       "x86" 
8320: 77 68 65 6e 20 74 68 65 20 70 6f 69 6e 74 65 72  when the pointer
8330: 20 73 69 7a 65 20 69 73 20 33 32 2d 62 69 74 73   size is 32-bits
8340: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8350: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
8360: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
8370: 69 74 65 63 74 75 72 65 20 3d 20 22 78 38 36 22  itecture = "x86"
8380: 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
8390: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
83a0: 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
83b0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
83c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
83d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
83e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
83f0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
8400: 3a 20 53 68 6f 77 20 74 68 61 74 20 77 65 20 68  : Show that we h
8410: 69 74 20 61 20 66 61 69 72 6c 79 20 75 6e 75 73  it a fairly unus
8420: 75 61 6c 20 73 69 74 75 61 74 69 6f 6e 20 28 69  ual situation (i
8430: 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .e...           
8440: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
8450: 74 68 65 20 22 77 72 6f 6e 67 22 20 70 72 6f 63  the "wrong" proc
8460: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
8470: 72 65 20 77 61 73 20 64 65 74 65 63 74 65 64 29  re was detected)
8480: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8490: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
84a0: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
84b0: 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
84c0: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84e0: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
84f0: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
8500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8510: 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
8520: 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 64  ary pre-loader d
8530: 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69 74 20  etected {0}-bit 
8540: 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20 20 20  pointer " +..   
8550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8560: 20 20 20 22 73 69 7a 65 20 77 69 74 68 20 70 72     "size with pr
8570: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
8580: 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20 75 73  ture \"{1}\", us
8590: 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ing " +..       
85a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
85b0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
85c0: 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22 20 69  ecture \"{2}\" i
85d0: 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20 20 20  nstead...",..   
85e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85f0: 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65 20 2a     IntPtr.Size *
8600: 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c 20 73   8 /* bits */, s
8610: 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63  avedProcessorArc
8620: 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20  hitecture,..    
8630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8640: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
8650: 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20 74 68  tecture)); /* th
8660: 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
8670: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8680: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
8690: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
86a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86b0: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
86c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
86d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
86e0: 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20      }..#else..  
86f0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
8700: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
8710: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
8720: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8730: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
8740: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
8750: 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  : On the .NET Co
8760: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
8770: 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20   attempt to use 
8780: 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
8790: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
87a0: 20 20 20 57 69 6e 33 32 20 41 50 49 20 66 75 6e     Win32 API fun
87b0: 63 74 69 6f 6e 20 28 76 69 61 20 50 2f 49 6e 76  ction (via P/Inv
87c0: 6f 6b 65 29 20 74 68 61 74 20 63 61 6e 20 70 72  oke) that can pr
87d0: 6f 76 69 64 65 20 75 73 0d 0a 20 20 20 20 20 20  ovide us..      
87e0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
87f0: 20 77 69 74 68 20 74 68 65 20 70 72 6f 63 65 73   with the proces
8800: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
8810: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8820: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
8830: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
8840: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8850: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
8860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8870: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6f 75   // NOTE: The ou
8880: 74 70 75 74 20 6f 66 20 74 68 65 20 47 65 74 53  tput of the GetS
8890: 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e 63 74 69  ystemInfo functi
88a0: 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  on will be..    
88b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
88c0: 20 20 20 20 20 20 20 70 6c 61 63 65 64 20 68 65         placed he
88d0: 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20 70 72  re.  Only the pr
88e0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
88f0: 74 75 72 65 20 66 69 65 6c 64 0d 0a 20 20 20 20  ture field..    
8900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8910: 20 20 20 20 20 20 20 69 73 20 75 73 65 64 20 62         is used b
8920: 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a  y this method...
8930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8940: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
8950: 20 20 20 20 20 20 20 20 53 59 53 54 45 4d 5f 49          SYSTEM_I
8960: 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d  NFO systemInfo;.
8970: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8980: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
8990: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
89a0: 54 45 3a 20 51 75 65 72 79 20 74 68 65 20 73 79  TE: Query the sy
89b0: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
89c0: 20 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74   via P/Invoke, t
89d0: 68 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  hus..           
89e0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
89f0: 66 69 6c 6c 69 6e 67 20 74 68 65 20 73 74 72 75  filling the stru
8a00: 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
8a10: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
8a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a30: 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75  GetSystemInfo(ou
8a40: 74 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a  t systemInfo);..
8a50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8a60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8a70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
8a80: 45 3a 20 52 65 74 75 72 6e 20 74 68 65 20 70 72  E: Return the pr
8a90: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
8aa0: 74 75 72 65 20 76 61 6c 75 65 20 61 73 20 61 20  ture value as a 
8ab0: 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  string...       
8ac0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
8ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ae0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
8af0: 65 63 74 75 72 65 20 3d 0d 0a 20 20 20 20 20 20  ecture =..      
8b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b10: 73 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63  systemInfo.wProc
8b20: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
8b30: 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
8b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
8b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
8b60: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
8b70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8b80: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
8b90: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
8ba0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8bb0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
8bc0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
8bd0: 54 45 3a 20 55 70 6f 6e 20 66 61 69 6c 75 72 65  TE: Upon failure
8be0: 2c 20 72 65 74 75 72 6e 20 61 6e 20 65 6d 70 74  , return an empt
8bf0: 79 20 73 74 72 69 6e 67 2e 20 20 54 68 69 73 20  y string.  This 
8c00: 77 69 6c 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20  will prevent..  
8c10: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
8c20: 20 20 20 20 20 74 68 65 20 63 61 6c 6c 69 6e 67       the calling
8c30: 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e   method from con
8c40: 73 69 64 65 72 69 6e 67 20 74 68 69 73 20 6d 65  sidering this me
8c50: 74 68 6f 64 20 63 61 6c 6c 20 61 0d 0a 20 20 20  thod call a..   
8c60: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
8c70: 20 20 20 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a      "failure"...
8c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
8c90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8ca0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
8cb0: 63 74 75 72 65 20 3d 20 53 74 72 69 6e 67 2e 45  cture = String.E
8cc0: 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  mpty;..         
8cd0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
8ce0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
8cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8d30: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
8d40: 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  n processorArchi
8d50: 74 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20  tecture;..      
8d60: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
8d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8db0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
8dc0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8dd0: 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65 20 70   /// Given the p
8de0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
8df0: 63 74 75 72 65 2c 20 72 65 74 75 72 6e 73 20 74  cture, returns t
8e00: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70  he name of the p
8e10: 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20  latform...      
8e20: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
8e30: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
8e40: 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72   name="processor
8e50: 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a  Architecture">..
8e60: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72        /// The pr
8e70: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
8e80: 74 75 72 65 20 74 6f 20 62 65 20 74 72 61 6e 73  ture to be trans
8e90: 6c 61 74 65 64 20 74 6f 20 61 20 70 6c 61 74 66  lated to a platf
8ea0: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
8eb0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8ec0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
8ed0: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
8ee0: 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20  e platform name 
8ef0: 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
8f00: 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
8f10: 69 74 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75  itecture -OR- nu
8f20: 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66  ll..      /// if
8f30: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
8f40: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
8f50: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
8f60: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
8f70: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
8f80: 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20  PlatformName(.. 
8f90: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
8fa0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
8fb0: 63 74 75 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  cture /* in */..
8fc0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
8fd0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8fe0: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
8ff0: 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
9000: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
9010: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
9020: 74 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f  tecture = GetPro
9030: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
9040: 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  re();....       
9050: 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
9060: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63  NullOrEmpty(proc
9070: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
9080: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
9090: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
90a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
90b0: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
90c0: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
90d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
90e0: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
90f0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
9100: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
9110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
9120: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
9130: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9140: 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b  ng platformName;
9150: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9160: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
9170: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
9180: 6f 72 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65  orms.TryGetValue
9190: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
91a0: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
91b0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20  orArchitecture, 
91c0: 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  out platformName
91d0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
91e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
91f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c         return pl
9200: 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20  atformName;..   
9210: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9220: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9230: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
9240: 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ll;..      }....
9250: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
92a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
92b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
92c0: 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64  Attempts to load
92d0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
92e0: 74 65 20 6c 69 62 72 61 72 79 20 62 61 73 65 64  te library based
92f0: 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 65   on the specifie
9300: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72  d..      /// dir
9310: 65 63 74 6f 72 79 20 61 6e 64 20 70 72 6f 63 65  ectory and proce
9320: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
9330: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
9340: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9350: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
9360: 22 62 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e  "baseDirectory">
9370: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
9380: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 74  base directory t
9390: 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20  o use, null for 
93a0: 64 65 66 61 75 6c 74 20 28 74 68 65 20 62 61 73  default (the bas
93b0: 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a  e directory of..
93c0: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 75        /// the cu
93d0: 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
93e0: 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73  n domain).  This
93f0: 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f 75 6c   directory shoul
9400: 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  d contain the.. 
9410: 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73       /// process
9420: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
9430: 73 70 65 63 69 66 69 63 20 73 75 62 2d 64 69 72  specific sub-dir
9440: 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20  ectories...     
9450: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9460: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
9470: 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41  name="processorA
9480: 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20  rchitecture">.. 
9490: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 71       /// The req
94a0: 75 65 73 74 65 64 20 70 72 6f 63 65 73 73 6f 72  uested processor
94b0: 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 6e   architecture, n
94c0: 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20  ull for default 
94d0: 28 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  (the..      /// 
94e0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
94f0: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
9500: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 29 2e 20  rrent process). 
9510: 20 54 68 69 73 20 63 61 6c 6c 65 72 20 73 68 6f   This caller sho
9520: 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  uld..      /// a
9530: 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73 70 65  lmost always spe
9540: 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68  cify null for th
9550: 69 73 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20  is parameter... 
9560: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
9570: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
9580: 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65  ram name="native
9590: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 22 3e  ModuleFileName">
95a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
95b0: 63 61 6e 64 69 64 61 74 65 20 6e 61 74 69 76 65  candidate native
95c0: 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d   module file nam
95d0: 65 20 74 6f 20 6c 6f 61 64 20 77 69 6c 6c 20 62  e to load will b
95e0: 65 20 73 74 6f 72 65 64 20 68 65 72 65 2c 0d 0a  e stored here,..
95f0: 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 6e 65 63        /// if nec
9600: 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  essary...      /
9610: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
9620: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
9630: 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65  me="nativeModule
9640: 48 61 6e 64 6c 65 22 3e 0d 0a 20 20 20 20 20 20  Handle">..      
9650: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
9660: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20  odule handle as 
9670: 72 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64  returned by Load
9680: 4c 69 62 72 61 72 79 20 77 69 6c 6c 20 62 65 20  Library will be 
9690: 73 74 6f 72 65 64 0d 0a 20 20 20 20 20 20 2f 2f  stored..      //
96a0: 2f 20 68 65 72 65 2c 20 69 66 20 6e 65 63 65 73  / here, if neces
96b0: 73 61 72 79 2e 20 20 54 68 69 73 20 76 61 6c 75  sary.  This valu
96c0: 65 20 77 69 6c 6c 20 62 65 20 49 6e 74 50 74 72  e will be IntPtr
96d0: 2e 5a 65 72 6f 20 69 66 20 74 68 65 20 63 61 6c  .Zero if the cal
96e0: 6c 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  l to..      /// 
96f0: 4c 6f 61 64 4c 69 62 72 61 72 79 20 66 61 69 6c  LoadLibrary fail
9700: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
9710: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
9720: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
9730: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
9740: 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f  if the native mo
9750: 64 75 6c 65 20 77 61 73 20 6c 6f 61 64 65 64 20  dule was loaded 
9760: 73 75 63 63 65 73 73 66 75 6c 6c 79 3b 20 6f 74  successfully; ot
9770: 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20  herwise,..      
9780: 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  /// zero...     
9790: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
97a0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
97b0: 74 61 74 69 63 20 62 6f 6f 6c 20 50 72 65 4c 6f  tatic bool PreLo
97c0: 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20  adSQLiteDll(..  
97d0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62          string b
97e0: 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20  aseDirectory,   
97f0: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
9800: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
9810: 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
9820: 68 69 74 65 63 74 75 72 65 2c 20 20 20 20 2f 2a  hitecture,    /*
9830: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
9840: 20 20 72 65 66 20 73 74 72 69 6e 67 20 6e 61 74    ref string nat
9850: 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
9860: 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20  e, /* out */..  
9870: 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
9880: 74 72 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  tr nativeModuleH
9890: 61 6e 64 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20  andle    /* out 
98a0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
98b0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
98c0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
98d0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
98e0: 65 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65  e specified base
98f0: 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75   directory is nu
9900: 6c 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66 61  ll, use the defa
9910: 75 6c 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ult..          /
9920: 2f 20 20 20 20 20 20 20 28 69 2e 65 2e 20 61 74  /       (i.e. at
9930: 74 65 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61 74  tempt to automat
9940: 69 63 61 6c 6c 79 20 64 65 74 65 63 74 20 69 74  ically detect it
9950: 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  )...          //
9960: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
9970: 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d  baseDirectory ==
9980: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
9990: 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
99a0: 6f 72 79 20 3d 20 47 65 74 42 61 73 65 44 69 72  ory = GetBaseDir
99b0: 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20  ectory();....   
99c0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
99d0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
99e0: 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75   we failed to qu
99f0: 65 72 79 20 74 68 65 20 62 61 73 65 20 64 69 72  ery the base dir
9a00: 65 63 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77  ectory, stop now
9a10: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
9a20: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62  .          if (b
9a30: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  aseDirectory == 
9a40: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
9a50: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
9a60: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
9a70: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
9a80: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 6e 61   NOTE: If the na
9a90: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
9aa0: 61 72 79 20 65 78 69 73 74 73 20 69 6e 20 74 68  ary exists in th
9ab0: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
9ac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
9ad0: 20 20 20 20 20 69 74 73 65 6c 66 2c 20 73 74 6f       itself, sto
9ae0: 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
9af0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9b00: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20  string fileName 
9b10: 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61  = FixUpDllFileNa
9b20: 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28  me(Path.Combine(
9b30: 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a  baseDirectory,..
9b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
9b50: 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20  LITE_DLL));.... 
9b60: 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
9b70: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
9b80: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
9b90: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
9ba0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
9bb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
9bc0: 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63  OTE: If the spec
9bd0: 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20  ified processor 
9be0: 61 72 63 68 69 74 65 63 74 75 72 65 20 69 73 20  architecture is 
9bf0: 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20  null, use the.. 
9c00: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9c10: 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20    default...    
9c20: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9c30: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
9c40: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d  rArchitecture ==
9c50: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
9c60: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
9c70: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
9c80: 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
9c90: 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20  ecture();....   
9ca0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9cb0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
9cc0: 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75   we failed to qu
9cd0: 65 72 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ery the processo
9ce0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20  r architecture, 
9cf0: 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
9d00: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9d10: 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
9d20: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
9d30: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
9d40: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
9d50: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
9d60: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
9d70: 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65   NOTE: Build the
9d80: 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66   full path and f
9d90: 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
9da0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
9db0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
9dc0: 20 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67     library using
9dd0: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
9de0: 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65  rchitecture name
9df0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
9e00: 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e  .          fileN
9e10: 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69  ame = FixUpDllFi
9e20: 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62  leName(Path.Comb
9e30: 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65  ine(Path.Combine
9e40: 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d  (baseDirectory,.
9e50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
9e60: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
9e70: 74 75 72 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c  ture), SQLITE_DL
9e80: 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  L));....        
9e90: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9ea0: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
9eb0: 66 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20  file name based 
9ec0: 6f 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  on the processor
9ed0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
9ee0: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  me..          //
9ef0: 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74   is not found, t
9f00: 72 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73  ry using the ass
9f10: 6f 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d  ociated platform
9f20: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
9f30: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9f40: 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
9f50: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
9f60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9f70: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9f80: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
9f90: 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72  E: Attempt to tr
9fa0: 61 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63  anslate the proc
9fb0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
9fc0: 72 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20  re to a..       
9fd0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9fe0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
9ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a010: 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
a020: 61 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72  ame = GetPlatfor
a030: 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41  mName(processorA
a040: 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d  rchitecture);...
a050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
a060: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
a070: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
a080: 66 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c  failed to transl
a090: 61 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ate the platform
a0a0: 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e   name, stop now.
a0b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a0c0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
a0d0: 20 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61    if (platformNa
a0e0: 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
a0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a100: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
a110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a120: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a130: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
a140: 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
a150: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
a160: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
a170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a180: 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79  //       library
a190: 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 74 66   using the platf
a1a0: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
a1b0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
a1c0: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
a1d0: 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69  ame = FixUpDllFi
a1e0: 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62  leName(Path.Comb
a1f0: 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65  ine(Path.Combine
a200: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
a210: 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
a220: 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  ry, platformName
a230: 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b  ), SQLITE_DLL));
a240: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a250: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a260: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
a270: 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f  the file does no
a280: 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72  t exist, skip tr
a290: 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e  ying to load it.
a2a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a2b0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
a2c0: 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73    if (!File.Exis
a2d0: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
a2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a2f0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
a300: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
a310: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
a320: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
a330: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
a340: 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
a350: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
a360: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
a370: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a380: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
a390: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a3a0: 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74  NOTE: Show exact
a3b0: 6c 79 20 77 68 65 72 65 20 77 65 20 61 72 65 20  ly where we are 
a3c0: 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74  trying to load t
a3d0: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
a3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a3f0: 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62        SQLite lib
a400: 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20  rary from...    
a410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a430: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
a440: 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(String.Forma
a450: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
a460: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
a470: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
a480: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
a490: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
a4a0: 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
a4b0: 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79 69 6e  -loader is tryin
a4c0: 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65  g to load native
a4d0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
a4e0: 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51 4c              "SQL
a4f0: 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30  ite library \"{0
a500: 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d  }\"...", fileNam
a510: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
a520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a530: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
a540: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
a550: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
a560: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
a570: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
a580: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
a590: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
a5a0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a5b0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
a5c0: 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74  ttempt to load t
a5d0: 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
a5e0: 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65 69  y.  This will ei
a5f0: 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20  ther..          
a600: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74      //       ret
a610: 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61 74 69  urn a valid nati
a620: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
a630: 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e  , return IntPtr.
a640: 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Zero,..         
a650: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72       //       or
a660: 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65 70 74   throw an except
a670: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ion...          
a680: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a690: 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
a6a0: 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c  leFileName = fil
a6b0: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
a6c0: 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
a6d0: 6c 65 48 61 6e 64 6c 65 20 3d 20 4c 6f 61 64 4c  leHandle = LoadL
a6e0: 69 62 72 61 72 79 28 66 69 6c 65 4e 61 6d 65 29  ibrary(fileName)
a6f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a700: 20 20 20 72 65 74 75 72 6e 20 28 6e 61 74 69 76     return (nativ
a710: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21 3d  eModuleHandle !=
a720: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
a730: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
a740: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
a750: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
a760: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
a770: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
a780: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
a790: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
a7a0: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
a7b0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
a7c0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
a7d0: 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
a7e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
a7f0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
a800: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a810: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
a820: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a830: 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61  NOTE: First, gra
a840: 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32  b the last Win32
a850: 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a   error number...
a860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a870: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a880: 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74          int last
a890: 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e  Error = Marshal.
a8a0: 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f  GetLastWin32Erro
a8b0: 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  r(); /* throw */
a8c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a8d0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
a8e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
a8f0: 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65 20  OTE: Show where 
a900: 77 65 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61  we failed to loa
a910: 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  d the native SQL
a920: 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ite..           
a930: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
a940: 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f  library from alo
a950: 6e 67 20 77 69 74 68 20 74 68 65 20 57 69 6e 33  ng with the Win3
a960: 32 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64  2 error code and
a970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a980: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78 63      //       exc
a990: 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69  eption informati
a9a0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on...           
a9b0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
a9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
a9d0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
a9e0: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
a9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa00: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
aa10: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
aa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa30: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
aa40: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
aa50: 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20   failed to load 
aa60: 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20  native " +..    
aa70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa80: 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72    "SQLite librar
aa90: 79 20 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c 61  y \"{0}\" (getLa
aaa0: 73 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20  stError = {1}): 
aab0: 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {2}",..         
aac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
aad0: 65 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72  eName, lastError
aae0: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
aaf0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
ab00: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
ab10: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
ab20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
ab40: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
ab50: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
ab60: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
ab70: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
ab80: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
ab90: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
aba0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
abb0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
abc0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
abd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
ac10: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
ac20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
ac30: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
ac40: 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  : On the .NET Co
ac50: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
ac60: 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65   the native inte
ac70: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73  rop assembly mus
ac80: 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  t..    //       
ac90: 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20  be used because 
aca0: 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65  it provides seve
acb0: 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20  ral workarounds 
acc0: 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d  to .NET Compact.
acd0: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72  .    //       Fr
ace0: 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69  amework limitati
acf0: 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f  ons important fo
ad00: 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69  r proper operati
ad10: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a  on of the core..
ad20: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73      //       Sys
ad30: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
ad40: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65  functionality (e
ad50: 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74  .g. being able t
ad60: 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20  o bind..    //  
ad70: 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20       parameters 
ad80: 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d  and handle colum
ad90: 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65  n values of type
ada0: 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62  s Int64 and Doub
adb0: 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  le)...    //..  
adc0: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
add0: 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
ade0: 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
adf0: 65 72 6f 70 2e 30 39 34 2e 64 6c 6c 22 3b 0d 0a  erop.094.dll";..
ae00: 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41  #elif SQLITE_STA
ae10: 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20  NDARD..    //.. 
ae20: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
ae30: 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73 74  rwise, if the st
ae40: 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
ae50: 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64  brary is enabled
ae60: 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f  , use it...    /
ae70: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
ae80: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
ae90: 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74  ITE_DLL = "sqlit
aea0: 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f  e3";..#elif USE_
aeb0: 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20  INTEROP_DLL..   
aec0: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
aed0: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
aee0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
aef0: 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ite interop asse
af00: 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c  mbly is enabled,
af10: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
af20: 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  se it...    //..
af30: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e      internal con
af40: 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45  st string SQLITE
af50: 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49  _DLL = "SQLite.I
af60: 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65  nterop.dll";..#e
af70: 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  lse..    //..   
af80: 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c   // NOTE: Finall
af90: 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74 20 74  y, assume that t
afa0: 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73  he mixed-mode as
afb0: 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20  sembly is being 
afc0: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20  used...    //.. 
afd0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
afe0: 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f  t string SQLITE_
aff0: 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61  DLL = "System.Da
b000: 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d  ta.SQLite.dll";.
b010: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
b020: 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75  / This section u
b030: 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c  ses interop call
b040: 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63  s that also fetc
b050: 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f  h text length to
b060: 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72   optimize conver
b070: 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20 57 68  sion...    // Wh
b080: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61  en using the sta
b090: 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61  ndard dll, we ca
b0a0: 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73 65 20  n replace these 
b0b0: 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61  calls with norma
b0c0: 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61  l sqlite calls a
b0d0: 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e  nd..    // do un
b0e0: 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72  optimized conver
b0f0: 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66  sions instead af
b100: 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72  terwards..    #r
b110: 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64  egion interop ad
b120: 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63  ded textlength c
b130: 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c  alls....#if !SQL
b140: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
b150: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b160: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
b170: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b180: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
b190: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
b1a0: 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72  meter_name_inter
b1b0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
b1c0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
b1d0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
b1e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b1f0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
b200: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b210: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
b220: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
b230: 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  se_name_interop(
b240: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
b250: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
b260: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
b270: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b280: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
b290: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
b2a0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
b2b0: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
b2c0: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
b2d0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
b2e0: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
b2f0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
b300: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b310: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
b320: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b330: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
b340: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69  olumn_decltype_i
b350: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
b360: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
b370: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
b380: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b390: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
b3a0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b3b0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
b3c0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
b3d0: 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70  cltype16_interop
b3e0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
b3f0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
b400: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
b410: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b420: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
b430: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b440: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
b450: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74  _column_name_int
b460: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
b470: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
b480: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
b490: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b4a0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
b4b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b4c0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
b4d0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
b4e0: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
b4f0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
b500: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
b510: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
b520: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
b530: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b540: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b550: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
b560: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e  n_origin_name_in
b570: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
b580: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
b590: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
b5a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b5b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
b5c0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b5d0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
b5e0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
b5f0: 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  gin_name16_inter
b600: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
b610: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
b620: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
b630: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b640: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
b650: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b660: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
b670: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
b680: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
b690: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
b6a0: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
b6b0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
b6c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b6d0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
b6e0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
b6f0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
b700: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36  umn_table_name16
b710: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
b720: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
b730: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
b740: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b750: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
b760: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b770: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
b780: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
b790: 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  text_interop(Int
b7a0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
b7b0: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
b7c0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
b7d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b7e0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
b7f0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
b800: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
b810: 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  umn_text16_inter
b820: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
b830: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
b840: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
b850: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b860: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
b870: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b880: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
b890: 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f  e3_errmsg_intero
b8a0: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 6f 75 74  p(IntPtr db, out
b8b0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
b8c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b8d0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
b8e0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b8f0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
b900: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72  rCode sqlite3_pr
b910: 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e  epare_interop(In
b920: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
b930: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
b940: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d  , out IntPtr stm
b950: 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74  t, out IntPtr pt
b960: 72 52 65 6d 61 69 6e 2c 20 6f 75 74 20 69 6e 74  rRemain, out int
b970: 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20   nRemain);....  
b980: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b990: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
b9a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b9b0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
b9c0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61  rCode sqlite3_ta
b9d0: 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
b9e0: 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ata_interop(IntP
b9f0: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
ba00: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c  Name, byte[] tbl
ba10: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c  Name, byte[] col
ba20: 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72  Name, out IntPtr
ba30: 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 6f 75   ptrDataType, ou
ba40: 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c  t IntPtr ptrColl
ba50: 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e 6f 74  Seq, out int not
ba60: 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20 70 72  Null, out int pr
ba70: 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20 69 6e  imaryKey, out in
ba80: 74 20 61 75 74 6f 49 6e 63 2c 20 6f 75 74 20 69  t autoInc, out i
ba90: 6e 74 20 64 74 4c 65 6e 2c 20 6f 75 74 20 69 6e  nt dtLen, out in
baa0: 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t csLen);....   
bab0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
bac0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
bad0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
bae0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
baf0: 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69  te3_value_text_i
bb00: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
bb10: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
bb20: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bb30: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
bb40: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bb50: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
bb60: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
bb70: 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ext16_interop(In
bb80: 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74 20  tPtr p, out int 
bb90: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
bba0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bbb0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
bbc0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bbd0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d 61 6c   int sqlite3_mal
bbe0: 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70  loc_size_interop
bbf0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
bc00: 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a  if INTEROP_LOG..
bc10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bc20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
bc30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
bc40: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
bc50: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
bc60: 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74 65 72  config_log_inter
bc70: 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  op();..#endif..#
bc80: 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
bc90: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
bca0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
bcb0: 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e      // These fun
bcc0: 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69 73 74  ctions add exist
bcd0: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ing functionalit
bce0: 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c 69  y on top of SQLi
bcf0: 74 65 20 61 6e 64 20 72 65 71 75 69 72 65 20 61  te and require a
bd00: 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74 20 74   little effort t
bd10: 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20 77 6f  o..    // get wo
bd20: 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69 6e 67  rking when using
bd30: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
bd40: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
bd50: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
bd60: 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74 69 6f  op added functio
bd70: 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21 53  nality....#if !S
bd80: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
bd90: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bda0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
bdb0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bdc0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
bdd0: 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76 65 72 73   interop_libvers
bde0: 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ion();....    [D
bdf0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
be00: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
be10: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
be20: 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70  n IntPtr interop
be30: 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a  _sourceid();....
be40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
be50: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
be60: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
be70: 20 65 78 74 65 72 6e 20 69 6e 74 20 69 6e 74 65   extern int inte
be80: 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  rop_compileoptio
be90: 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f  n_used(IntPtr zO
bea0: 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  ptName);....    
beb0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bec0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
bed0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
bee0: 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72  ern IntPtr inter
bef0: 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  op_compileoption
bf00: 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a  _get(int N);....
bf10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
bf20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
bf30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
bf40: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
bf50: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
bf60: 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e  close_interop(In
bf70: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
bf80: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
bf90: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
bfa0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
bfb0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
bfc0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65  Code sqlite3_cre
bfd0: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69 6e 74  ate_function_int
bfe0: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
bff0: 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20  byte[] strName, 
c000: 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e  int nArgs, int n
c010: 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
c020: 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62  ser, SQLiteCallb
c030: 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65  ack func, SQLite
c040: 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20  Callback fstep, 
c050: 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62  SQLiteFinalCallb
c060: 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e 74 20  ack ffinal, int 
c070: 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d  needCollSeq);...
c080: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c090: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
c0a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c0b0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
c0c0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
c0d0: 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f  _finalize_intero
c0e0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
c0f0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
c100: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
c110: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c120: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
c130: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
c140: 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
c150: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
c160: 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20  backup);....    
c170: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c180: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
c190: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c1a0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
c1b0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
c1c0: 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20  _interop(byte[] 
c1d0: 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 53 51  utf8Filename, SQ
c1e0: 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
c1f0: 6d 20 66 6c 61 67 73 2c 20 6f 75 74 20 49 6e 74  m flags, out Int
c200: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
c210: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c220: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
c230: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c240: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
c250: 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
c260: 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  16_interop(byte[
c270: 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
c280: 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
c290: 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75 74 20 49  num flags, out I
c2a0: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
c2b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c2c0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
c2d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c2e0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
c2f0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
c300: 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  set_interop(IntP
c310: 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20  tr stmt);....   
c320: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c330: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
c340: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c350: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
c360: 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72 6f 70  _changes_interop
c370: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65  (IntPtr db);..#e
c380: 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45  ndif..// !SQLITE
c390: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
c3a0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
c3b0: 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e 64 61     // The standa
c3c0: 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71 75 69  rd api call equi
c3d0: 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65 20 61  valents of the a
c3e0: 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63 61 6c  bove interop cal
c3f0: 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ls..    #region 
c400: 73 74 61 6e 64 61 72 64 20 76 65 72 73 69 6f 6e  standard version
c410: 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66 75 6e  s of interop fun
c420: 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20 53 51  ctions....#if SQ
c430: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
c440: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c450: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c460: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c470: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c480: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c490: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c4a0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c4b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c4c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c4d0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c4e0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c4f0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
c500: 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28  e sqlite3_close(
c510: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
c520: 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45 47 41  if !INTEROP_LEGA
c530: 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20 21 50  CY_CLOSE..#if !P
c540: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c550: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c560: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c570: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c580: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c590: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c5a0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c5b0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c5c0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c5d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c5e0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
c5f0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
c600: 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e 74 50  e3_close_v2(IntP
c610: 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37 2e 31  tr db); /* 3.7.1
c620: 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d  4+ */..#endif...
c630: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c640: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c650: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c660: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c670: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c680: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c690: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c6a0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c6b0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c6c0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c6d0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c6e0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
c6f0: 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
c700: 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72  _function(IntPtr
c710: 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
c720: 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20  ame, int nArgs, 
c730: 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
c740: 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
c750: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
c760: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73  QLiteCallback fs
c770: 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c  tep, SQLiteFinal
c780: 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 29  Callback ffinal)
c790: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
c7a0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
c7b0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
c7c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c7d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c7e0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
c7f0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
c800: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
c810: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c820: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
c830: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c840: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
c850: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
c860: 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20 73 74  nalize(IntPtr st
c870: 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
c880: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c890: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
c8a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c8b0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
c8c0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
c8d0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
c8e0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
c8f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c900: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
c910: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c920: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
c930: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
c940: 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 28 49  _backup_finish(I
c950: 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
c960: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
c970: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
c980: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c990: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
c9a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
c9b0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c9c0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
c9d0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
c9e0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
c9f0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
ca00: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
ca10: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
ca20: 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74  de sqlite3_reset
ca30: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
ca40: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
ca50: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
ca60: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ca70: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
ca80: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
ca90: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
caa0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
cab0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
cac0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
cad0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
cae0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
caf0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
cb00: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
cb10: 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
cb20: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
cb30: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
cb40: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
cb50: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cb60: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
cb70: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
cb80: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
cb90: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
cba0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
cbb0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
cbc0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
cbd0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
cbe0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
cbf0: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
cc00: 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  e_name(IntPtr st
cc10: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
cc20: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
cc30: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
cc40: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
cc50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
cc60: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
cc70: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
cc80: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
cc90: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
cca0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ccb0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
ccc0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ccd0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
cce0: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
ccf0: 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72  se_name16(IntPtr
cd00: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
cd10: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
cd20: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
cd30: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
cd40: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
cd50: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
cd60: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
cd70: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
cd80: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
cd90: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
cda0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
cdb0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
cdc0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
cdd0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63  lite3_column_dec
cde0: 6c 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d  ltype(IntPtr stm
cdf0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
ce00: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
ce10: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
ce20: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ce30: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
ce40: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
ce50: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ce60: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
ce70: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
ce80: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
ce90: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
cea0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
ceb0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
cec0: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
ced0: 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
cee0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
cef0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
cf00: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
cf10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
cf20: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
cf30: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
cf40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
cf50: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
cf60: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
cf70: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
cf80: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
cf90: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
cfa0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
cfb0: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50  column_name(IntP
cfc0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
cfd0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
cfe0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
cff0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
d000: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d010: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
d020: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
d030: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
d040: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
d050: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d060: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
d070: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
d080: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
d090: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
d0a0: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
d0b0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
d0c0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d0d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d0e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d0f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
d100: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
d110: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d120: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
d130: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
d140: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d150: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
d160: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d170: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
d180: 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f  3_column_origin_
d190: 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
d1a0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
d1b0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
d1c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d1d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d1e0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
d1f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
d200: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d210: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
d220: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d230: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
d240: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
d250: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d260: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
d270: 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
d280: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
d290: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
d2a0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d2b0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d2c0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d2d0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
d2e0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
d2f0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d300: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
d310: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
d320: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d330: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
d340: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d350: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
d360: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
d370: 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
d380: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
d390: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
d3a0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
d3b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d3c0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
d3d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
d3e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d3f0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
d400: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d410: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
d420: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
d430: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d440: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
d450: 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
d460: 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
d470: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
d480: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
d490: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
d4a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d4b0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
d4c0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
d4d0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d4e0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
d4f0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d500: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
d510: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
d520: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d530: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
d540: 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e 74 50  column_text(IntP
d550: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
d560: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
d570: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
d580: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
d590: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d5a0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
d5b0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
d5c0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
d5d0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
d5e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d5f0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
d600: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
d610: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
d620: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
d630: 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ext16(IntPtr stm
d640: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
d650: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d660: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d670: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d680: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
d690: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
d6a0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d6b0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
d6c0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
d6d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d6e0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
d6f0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d700: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
d710: 33 5f 65 72 72 6d 73 67 28 49 6e 74 50 74 72 20  3_errmsg(IntPtr 
d720: 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
d730: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
d740: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
d750: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d760: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
d770: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
d780: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
d790: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
d7a0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d7b0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
d7c0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
d7d0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
d7e0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
d7f0: 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74 72 20  _prepare(IntPtr 
d800: 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c  db, IntPtr pSql,
d810: 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f 75 74   int nBytes, out
d820: 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 6f 75   IntPtr stmt, ou
d830: 74 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61  t IntPtr ptrRema
d840: 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55 53 45 5f  in);....#if USE_
d850: 50 52 45 50 41 52 45 5f 56 32 0d 0a 23 69 66 20  PREPARE_V2..#if 
d860: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
d870: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
d880: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d890: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
d8a0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
d8b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
d8c0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
d8d0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d8e0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
d8f0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d900: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
d910: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
d920: 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
d930: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
d940: 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
d950: 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73  es, out IntPtr s
d960: 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  tmt, out IntPtr 
d970: 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e  ptrRemain);..#en
d980: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
d990: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
d9a0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
d9b0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d9c0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
d9d0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
d9e0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
d9f0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
da00: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
da10: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
da20: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
da30: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
da40: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
da50: 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
da60: 61 64 61 74 61 28 49 6e 74 50 74 72 20 64 62 2c  adata(IntPtr db,
da70: 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20   byte[] dbName, 
da80: 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20  byte[] tblName, 
da90: 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20  byte[] colName, 
daa0: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 44 61  out IntPtr ptrDa
dab0: 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e 74 50  taType, out IntP
dac0: 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 6f  tr ptrCollSeq, o
dad0: 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20  ut int notNull, 
dae0: 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72 79 4b  out int primaryK
daf0: 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75 74 6f  ey, out int auto
db00: 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Inc);....#if !PL
db10: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
db20: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
db30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
db40: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
db50: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
db60: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
db70: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
db80: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
db90: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
dba0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
dbb0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
dbc0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
dbd0: 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  ext(IntPtr p);..
dbe0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
dbf0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
dc00: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
dc10: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
dc20: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
dc30: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
dc40: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
dc50: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
dc60: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
dc70: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
dc80: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
dc90: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
dca0: 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 28 49  3_value_text16(I
dcb0: 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e  ntPtr p);....#en
dcc0: 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 49  dif..    // SQLI
dcd0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
dce0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
dcf0: 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75  .    // These fu
dd00: 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75 73 74  nctions are cust
dd10: 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f 20 65  om and have no e
dd20: 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61  quivalent standa
dd30: 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74 68 6f  rd library metho
dd40: 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c 20 6f  d...    // All o
dd50: 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69 63 65  f them are "nice
dd60: 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64 20 6e   to haves" and n
dd70: 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20 22  ot necessarily "
dd80: 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22 2e 0d  need to haves"..
dd90: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e 6f 20  .    #region no 
dda0: 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64  equivalent stand
ddb0: 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69  ard method....#i
ddc0: 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
ddd0: 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  RD....    [DllIm
dde0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ddf0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
de00: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
de10: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6e  tPtr sqlite3_con
de20: 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74  text_collseq_int
de30: 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74  erop(IntPtr cont
de40: 65 78 74 2c 20 6f 75 74 20 69 6e 74 20 74 79 70  ext, out int typ
de50: 65 2c 20 6f 75 74 20 69 6e 74 20 65 6e 63 2c 20  e, out int enc, 
de60: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
de70: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
de80: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
de90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
dea0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
deb0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c  ite3_context_col
dec0: 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65 72 6f 70  lcompare_interop
ded0: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
dee0: 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e 74 20   byte[] p1, int 
def0: 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20 70 32  p1len, byte[] p2
df00: 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d  , int p2len);...
df10: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
df20: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
df30: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
df40: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
df50: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
df60: 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 5f 69 6e  _cursor_rowid_in
df70: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
df80: 74 2c 20 69 6e 74 20 63 75 72 73 6f 72 2c 20 6f  t, int cursor, o
df90: 75 74 20 6c 6f 6e 67 20 72 6f 77 69 64 29 3b 0d  ut long rowid);.
dfa0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
dfb0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
dfc0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
dfd0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
dfe0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
dff0: 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f  e3_index_column_
e000: 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49 6e 74  info_interop(Int
e010: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 63  Ptr db, byte[] c
e020: 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d 20 49  atalog, byte[] I
e030: 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65 5b 5d  ndexName, byte[]
e040: 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 6f 75 74   ColumnName, out
e050: 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72 2c 20   int sortOrder, 
e060: 6f 75 74 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c  out int onError,
e070: 20 6f 75 74 20 49 6e 74 50 74 72 20 43 6f 6c 6c   out IntPtr Coll
e080: 61 74 69 6f 6e 2c 20 6f 75 74 20 69 6e 74 20 63  ation, out int c
e090: 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  olllen);....    
e0a0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e0b0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
e0c0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
e0d0: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
e0e0: 5f 72 65 73 65 74 61 6c 6c 5f 69 6e 74 65 72 6f  _resetall_intero
e0f0: 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  p(IntPtr db);...
e100: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e110: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
e120: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e130: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
e140: 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f  ite3_table_curso
e150: 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  r_interop(IntPtr
e160: 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69   stmt, int db, i
e170: 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65  nt tableRootPage
e180: 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  );....#endif..//
e190: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
e1a0: 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
e1b0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74  ion....    // St
e1c0: 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73  andard API calls
e1d0: 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76   global across v
e1e0: 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20  ersions.  There 
e1f0: 61 72 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e  are a few instan
e200: 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63  ces of interop c
e210: 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61  alls..    // sca
e220: 74 74 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20  ttered in here, 
e230: 62 75 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c  but they are onl
e240: 79 20 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c  y active when PL
e250: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
e260: 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61  AMEWORK is decla
e270: 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  red...    #regio
e280: 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74  n standard sqlit
e290: 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23  e api calls....#
e2a0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
e2b0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e2c0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e2d0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
e2e0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
e2f0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
e300: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
e310: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e320: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
e330: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
e340: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
e350: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c  IntPtr sqlite3_l
e360: 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a  ibversion();....
e370: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
e380: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
e390: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e3a0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
e3b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
e3c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e3d0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
e3e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e3f0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
e400: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
e410: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
e420: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62   int sqlite3_lib
e430: 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
e440: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
e450: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
e460: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
e470: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
e480: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e490: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
e4a0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
e4b0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
e4c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
e4d0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
e4e0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
e4f0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
e500: 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b  ite3_sourceid();
e510: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
e520: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
e530: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
e540: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
e550: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e560: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
e570: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
e580: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
e590: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
e5a0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
e5b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e5c0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
e5d0: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
e5e0: 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e  sed(IntPtr zOptN
e5f0: 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
e600: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
e610: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
e620: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e630: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
e640: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
e650: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
e660: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
e670: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e680: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
e690: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e6a0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
e6b0: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
e6c0: 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e  option_get(int N
e6d0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
e6e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e6f0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
e700: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
e710: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e720: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
e730: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
e740: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
e750: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e760: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
e770: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e780: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
e790: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
e7a0: 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e  nable_load_exten
e7b0: 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  sion(..        I
e7c0: 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 65 6e  ntPtr db, int en
e7d0: 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  able);....#if !P
e7e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
e7f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
e800: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e810: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
e820: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
e830: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
e840: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
e850: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e860: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
e870: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
e880: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
e890: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
e8a0: 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  e3_load_extensio
e8b0: 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
e8c0: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 66 69  tr db, byte[] fi
e8d0: 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70  leName, byte[] p
e8e0: 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  rocName, ref Int
e8f0: 50 74 72 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a  Ptr pError);....
e900: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
e910: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
e920: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e930: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
e940: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
e950: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e960: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
e970: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e980: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
e990: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
e9a0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
e9b0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
e9c0: 20 73 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61   sqlite3_overloa
e9d0: 64 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74  d_function(IntPt
e9e0: 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 4e 61  r db, IntPtr zNa
e9f0: 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 29 3b 0d  me, int nArgs);.
ea00: 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a  ...#if WINDOWS..
ea10: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ea20: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ea30: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ea40: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
ea50: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
ea60: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ea70: 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
ea80: 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
ea90: 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
eaa0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
eab0: 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
eac0: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
ead0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
eae0: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
eaf0: 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
eb00: 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72  n32_set_director
eb10: 79 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  y" SQLite core l
eb20: 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
eb30: 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
eb40: 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
eb50: 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d 0a 20 20 20  on Windows...   
eb60: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
eb70: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
eb80: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
eb90: 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65  sqlite3_win32_se
eba0: 74 5f 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74  t_directory(uint
ebb0: 20 74 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61   type, string va
ebc0: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 44 45  lue);....#if !DE
ebd0: 42 55 47 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f  BUG // NOTE: Sho
ebe0: 75 6c 64 20 62 65 20 22 57 49 4e 33 32 48 45 41  uld be "WIN32HEA
ebf0: 50 20 26 26 20 21 4d 45 4d 44 45 42 55 47 22 0d  P && !MEMDEBUG".
ec00: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ec10: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ec20: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ec30: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
ec40: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ec50: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ec60: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
ec70: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ec80: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
ec90: 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
eca0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
ecb0: 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72  "sqlite3_win32_r
ecc0: 65 73 65 74 5f 68 65 61 70 22 20 53 51 4c 69 74  eset_heap" SQLit
ecd0: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66  e core library f
ece0: 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20  unction is..    
ecf0: 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75  //       only su
ed00: 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f  pported on Windo
ed10: 77 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33  ws when the Win3
ed20: 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74  2 native allocat
ed30: 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f  or is in..    //
ed40: 20 20 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e         use (i.e.
ed50: 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   by default, in 
ed60: 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73  "Release" builds
ed70: 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e   of System.Data.
ed80: 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20  SQLite..    //  
ed90: 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20       only).  By 
eda0: 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62  default, in "Deb
edb0: 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  ug" builds of Sy
edc0: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
edd0: 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  , the..    //   
ede0: 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c      MEMDEBUG all
edf0: 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d  ocator is used..
ee00: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
ee10: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ee20: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
ee30: 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
ee40: 32 5f 72 65 73 65 74 5f 68 65 61 70 28 29 3b 0d  2_reset_heap();.
ee50: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
ee60: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
ee70: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
ee80: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
ee90: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
eea0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
eeb0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
eec0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
eed0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
eee0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d  .#endif..    //.
eef0: 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
ef00: 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  e "sqlite3_win32
ef10: 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 22 20 53  _compact_heap" S
ef20: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
ef30: 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
ef40: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
ef50: 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
ef60: 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20  indows when the 
ef70: 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c  Win32 native all
ef80: 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20  ocator is in..  
ef90: 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28    //       use (
efa0: 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c  i.e. by default,
efb0: 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75   in "Release" bu
efc0: 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
efd0: 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20  ata.SQLite..    
efe0: 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20  //       only). 
eff0: 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   By default, in 
f000: 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f  "Debug" builds o
f010: 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
f020: 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f  Lite, the..    /
f030: 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47  /       MEMDEBUG
f040: 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73   allocator is us
f050: 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
f060: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
f070: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
f080: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
f090: 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
f0a0: 61 70 28 72 65 66 20 75 69 6e 74 20 6c 61 72 67  ap(ref uint larg
f0b0: 65 73 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  est);..#endif..#
f0c0: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
f0d0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f0e0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
f0f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f100: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
f110: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
f120: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f130: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
f140: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f150: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
f160: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f170: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
f180: 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
f190: 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  int n);....#if !
f1a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f1b0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f1c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f1d0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
f1e0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
f1f0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f200: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
f210: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f220: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
f230: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f240: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
f250: 74 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  tr sqlite3_reall
f260: 6f 63 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74  oc(IntPtr p, int
f270: 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   n);....#if !PLA
f280: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f290: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
f2a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f2b0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
f2c0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
f2d0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f2e0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
f2f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f300: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
f310: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f320: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
f330: 6c 69 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74  lite3_free(IntPt
f340: 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
f350: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f360: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
f370: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f380: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
f390: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
f3a0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f3b0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
f3c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f3d0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
f3e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f3f0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
f400: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
f410: 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d  3_open_v2(byte[]
f420: 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 6f   utf8Filename, o
f430: 75 74 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ut IntPtr db, SQ
f440: 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
f450: 6d 20 66 6c 61 67 73 2c 20 49 6e 74 50 74 72 20  m flags, IntPtr 
f460: 76 66 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  vfs);....#if !PL
f470: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f480: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
f490: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f4a0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
f4b0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
f4c0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
f4d0: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
f4e0: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
f4f0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
f500: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
f510: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
f520: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
f530: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
f540: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f550: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
f560: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 73  sqlite3_open16(s
f570: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20  tring fileName, 
f580: 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  out IntPtr db);.
f590: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f5a0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f5b0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f5c0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f5d0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f5e0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f5f0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
f600: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
f610: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f620: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
f630: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f640: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
f650: 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74  _interrupt(IntPt
f660: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
f670: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f680: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
f690: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f6a0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
f6b0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
f6c0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
f6d0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
f6e0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
f6f0: 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  ong sqlite3_last
f700: 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e  _insert_rowid(In
f710: 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69  tPtr db);..#endi
f720: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
f730: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f740: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
f750: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
f760: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f770: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
f780: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
f790: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
f7a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
f7b0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
f7c0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f7d0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
f7e0: 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50 74 72  3_changes(IntPtr
f7f0: 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
f800: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f810: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
f820: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f830: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
f840: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
f850: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f860: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
f870: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
f880: 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  ng sqlite3_memor
f890: 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e 64 69  y_used();..#endi
f8a0: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
f8b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f8c0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
f8d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
f8e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f8f0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
f900: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
f910: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f920: 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
f930: 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
f940: 67 68 77 61 74 65 72 28 69 6e 74 20 72 65 73 65  ghwater(int rese
f950: 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69 66 0d  tFlag);..#endif.
f960: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f970: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f980: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f990: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f9a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f9b0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f9c0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
f9d0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
f9e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f9f0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
fa00: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
fa10: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
fa20: 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74  ode sqlite3_shut
fa30: 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  down();....#if !
fa40: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
fa50: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
fa60: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
fa70: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
fa80: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
fa90: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
faa0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
fab0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
fac0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
fad0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
fae0: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
faf0: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
fb00: 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74  te3_busy_timeout
fb10: 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
fb20: 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ms);....#if !PLA
fb30: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
fb40: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
fb50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fb60: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
fb70: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
fb80: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
fb90: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
fba0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
fbb0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
fbc0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
fbd0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
fbe0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
fbf0: 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74 50 74  _bind_blob(IntPt
fc00: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
fc10: 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75 65 2c  x, Byte[] value,
fc20: 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50   int nSize, IntP
fc30: 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29 3b 0d  tr nTransient);.
fc40: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
fc50: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
fc60: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
fc70: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
fc80: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
fc90: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
fca0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
fcb0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
fcc0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
fcd0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
fce0: 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e 74 50  bind_double(IntP
fcf0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
fd00: 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ex, double value
fd10: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
fd20: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
fd30: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
fd40: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
fd50: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
fd60: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
fd70: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
fd80: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
fd90: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
fda0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
fdb0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
fdc0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
fdd0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
fde0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28  qlite3_bind_int(
fdf0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
fe00: 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c 75   index, int valu
fe10: 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20  e);....    //.. 
fe20: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73     // NOTE: This
fe30: 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c   really just cal
fe40: 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64  ls "sqlite3_bind
fe50: 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c 20  _int"; however, 
fe60: 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20  it has the..    
fe70: 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74  //       correct
fe80: 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20   type signature 
fe90: 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20  for an unsigned 
fea0: 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67 65 72  (32-bit) integer
feb0: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21  ...    //..#if !
fec0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
fed0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
fee0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
fef0: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
ff00: 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
ff10: 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  _int", CallingCo
ff20: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
ff30: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
ff40: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
ff50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ff60: 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
ff70: 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
ff80: 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64 69  nd_int")]..#endi
ff90: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
ffa0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
ffb0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
ffc0: 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 28  lite3_bind_uint(
ffd0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
ffe0: 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76 61 6c   index, uint val
fff0: 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
10000 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10010 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
10020 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10030 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
10040 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10050 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10060 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10070 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
10080 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
10090 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28  ite3_bind_int64(
100a0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
100b0 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61 6c   index, long val
100c0 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
100d0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
100e0 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79  OTE: This really
100f0 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c   just calls "sql
10100 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22  ite3_bind_int64"
10110 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61  ; however, it ha
10120 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  s the..    //   
10130 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65      correct type
10140 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61   signature for a
10150 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20  n unsigned long 
10160 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67 65 72  (64-bit) integer
10170 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21  ...    //..#if !
10180 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10190 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
101a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
101b0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
101c0 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
101d0 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67  _int64", Calling
101e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
101f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10200 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
10210 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10220 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10230 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
10240 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  uint64(IntPtr st
10250 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75  mt, int index, u
10260 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
10270 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
10280 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10290 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
102a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
102b0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
102c0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
102d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
102e0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
102f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10300 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10310 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10320 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
10330 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
10340 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74  _bind_null(IntPt
10350 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10360 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
10370 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10380 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10390 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
103a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
103b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
103c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
103d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
103e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
103f0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10400 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10410 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
10420 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
10430 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74 72  bind_text(IntPtr
10440 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
10450 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
10460 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72  int nlen, IntPtr
10470 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
10480 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10490 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
104a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
104b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
104c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
104d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
104e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
104f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10500 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10510 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10520 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10530 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
10540 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75  nd_parameter_cou
10550 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
10560 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10570 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10580 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10590 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
105a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
105b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
105c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
105d0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
105e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
105f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
10600 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10610 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
10620 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
10630 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74 6d  index(IntPtr stm
10640 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  t, byte[] strNam
10650 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
10660 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10670 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10680 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10690 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
106a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
106b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
106c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
106d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
106e0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
106f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10700 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
10710 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74  te3_column_count
10720 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
10730 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10740 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10750 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10760 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10770 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10780 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10790 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
107a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
107b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
107c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
107d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
107e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
107f0 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  de sqlite3_step(
10800 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
10810 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10820 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10830 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10840 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10850 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10860 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10870 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
10880 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10890 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c  xtern double sql
108a0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
108b0 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  le(IntPtr stmt, 
108c0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e  int index);..#en
108d0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#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 69 6e 74 20 73 71 6c 69   extern int sqli
10990 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49  te3_column_int(I
109a0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
109b0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
109c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
109d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
109e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
109f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
10a00 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
10a10 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
10a20 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
10a30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10a40 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c  long sqlite3_col
10a50 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  umn_int64(IntPtr
10a60 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
10a70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
10a80 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10a90 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10aa0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10ab0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
10ac0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10ad0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10ae0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10af0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10b00 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10b10 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10b20 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
10b30 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
10b40 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72  lumn_blob(IntPtr
10b50 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
10b60 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10b70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10b80 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10b90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10ba0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10bb0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10bc0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10bd0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
10be0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10bf0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
10c00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10c10 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
10c20 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28  e3_column_bytes(
10c30 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
10c40 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
10c50 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10c60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10c70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10c80 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
10c90 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
10ca0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10cb0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
10cc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10cd0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
10ce0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10cf0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
10d00 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
10d10 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 73  bytes16(IntPtr s
10d20 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
10d30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10d40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10d50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10d60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10d70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10d80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10d90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10da0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
10db0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10dc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
10dd0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10de0 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  tern TypeAffinit
10df0 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  y sqlite3_column
10e00 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d  _type(IntPtr stm
10e10 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
10e20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10e30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10e40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10e50 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10e60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
10e70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10e80 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
10e90 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
10ea0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10eb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10ec0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10ed0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10ee0 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
10ef0 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50  e_collation(IntP
10f00 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
10f10 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65  rName, int nType
10f20 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
10f30 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e   SQLiteCollation
10f40 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21   func);....#if !
10f50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
10f60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
10f70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10f80 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
10f90 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
10fa0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
10fb0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
10fc0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10fd0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
10fe0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10ff0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
11000 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
11010 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63  e_count(IntPtr c
11020 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
11030 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11040 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11050 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11060 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11070 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11080 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11090 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
110a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
110b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
110c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
110d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
110e0 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
110f0 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29  e_blob(IntPtr p)
11100 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11110 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11120 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11130 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11140 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11150 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11160 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11170 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11180 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11190 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
111a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
111b0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
111c0 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e  3_value_bytes(In
111d0 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
111e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
111f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11200 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11210 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
11220 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
11230 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
11240 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
11250 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11260 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11270 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11280 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
11290 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
112a0 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 70 29  ytes16(IntPtr p)
112b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
112c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
112d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
112e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
112f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11300 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11310 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
11320 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11330 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
11340 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
11350 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b  ouble(IntPtr p);
11360 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
11370 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11380 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11390 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
113a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
113b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
113c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
113d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
113e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
113f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
11400 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11410 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
11420 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
11430 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  nt(IntPtr p);...
11440 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11450 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11460 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11470 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11480 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11490 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
114a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
114b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
114c0 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
114d0 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49  e3_value_int64(I
114e0 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69  ntPtr p);..#endi
114f0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
11500 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11510 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
11520 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
11530 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11540 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
11550 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11560 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
11570 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
11580 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11590 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
115a0 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69  xtern TypeAffini
115b0 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ty sqlite3_value
115c0 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70 29 3b  _type(IntPtr p);
115d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
115e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
115f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11600 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
11610 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11620 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
11630 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11640 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11650 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11660 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11670 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11680 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
11690 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e  3_result_blob(In
116a0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
116b0 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
116c0 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 70 76  nSize, IntPtr pv
116d0 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
116e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
116f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11700 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11710 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11720 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11730 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11740 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
11750 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
11760 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
11770 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e  result_double(In
11780 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f  tPtr context, do
11790 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
117a0 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
117b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
117c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
117d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
117e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
117f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11800 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11810 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
11820 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11830 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
11840 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11850 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
11860 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
11870 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  or(IntPtr contex
11880 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72 72  t, byte[] strErr
11890 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
118a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
118b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
118c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
118d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
118e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
118f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11900 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
11910 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11920 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
11930 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
11940 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
11950 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
11960 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28  sult_error_code(
11970 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
11980 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
11990 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
119a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
119b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
119c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
119d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
119e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
119f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11a00 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11a10 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11a20 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11a30 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11a40 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
11a50 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
11a60 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74  error_toobig(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 65 72 72 6f 72 5f 6e 6f 6d 65  esult_error_nome
11b50 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  m(IntPtr context
11b60 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11b70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11b80 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11b90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
11ba0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11bb0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
11bc0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
11bd0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
11be0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11bf0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11c00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11c10 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
11c20 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65  te3_result_value
11c30 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
11c40 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b 0d   IntPtr value);.
11c50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11c60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11c70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11c90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
11ca0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11cb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11cc0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
11cd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11ce0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
11cf0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11d00 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
11d10 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
11d20 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
11d30 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
11d40 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11d50 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11d60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11d70 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11d80 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11d90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11da0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
11db0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11dc0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
11dd0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
11de0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
11df0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
11e00 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72 20 63  ult_int(IntPtr c
11e10 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c 75  ontext, int valu
11e20 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
11e30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
11e40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
11e50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11e60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11e70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11e80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11e90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11ea0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
11eb0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
11ec0 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f 6e  int64(IntPtr con
11ed0 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65  text, long value
11ee0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
11ef0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11f00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11f10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11f20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11f30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11f40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11f50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11f60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11f70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11f80 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11f90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
11fa0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
11fb0 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63  lt_null(IntPtr c
11fc0 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
11fd0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11fe0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11ff0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12000 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12010 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12020 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12030 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12040 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12050 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
12060 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12070 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
12080 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
12090 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e  _text(IntPtr con
120a0 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c  text, byte[] val
120b0 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e  ue, int nLen, In
120c0 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
120d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
120e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
120f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
12100 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
12110 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12120 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
12130 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12140 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
12150 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
12160 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
12170 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
12180 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
12190 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
121a0 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  ontext(IntPtr co
121b0 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74 65  ntext, int nByte
121c0 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
121d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
121e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
121f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12200 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12210 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12220 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
12230 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
12240 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
12250 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12260 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
12270 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
12280 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
12290 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
122a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
122b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
122c0 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
122d0 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
122e0 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67  nt index, string
122f0 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e   value, int nlen
12300 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
12310 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
12320 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12330 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12340 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12350 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
12360 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12370 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
12380 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
12390 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
123a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
123b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
123c0 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
123d0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
123e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
123f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12400 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
12410 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74 50  ult_error16(IntP
12420 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
12430 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
12440 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
12450 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12460 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12470 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12480 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12490 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
124a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
124b0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
124c0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
124d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
124e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
124f0 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
12500 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
12510 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12520 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12530 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
12540 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50  sult_text16(IntP
12550 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
12560 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
12570 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
12580 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
12590 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 0d 0a   INTEROP_CODEC..
125a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
125b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
125c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
125d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
125e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
125f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12600 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12610 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12620 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
12630 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12640 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12650 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
12660 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74   sqlite3_key(Int
12670 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b  Ptr db, byte[] k
12680 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b  ey, int keylen);
12690 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
126a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
126b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
126c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
126d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
126e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
126f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
12700 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
12710 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
12720 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
12730 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
12740 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
12750 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 6b  Code sqlite3_rek
12760 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ey(IntPtr db, by
12770 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65  te[] key, int ke
12780 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ylen);..#endif..
12790 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
127a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
127b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
127c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
127d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
127e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
127f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
12800 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
12810 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
12820 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
12830 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
12840 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
12850 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
12860 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
12870 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c  teAuthorizerCall
12880 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
12890 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
128a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
128b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
128c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
128d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
128e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
128f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12900 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
12910 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12920 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
12930 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
12940 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
12950 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75 70  ntPtr sqlite3_up
12960 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  date_hook(IntPtr
12970 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61 74   db, SQLiteUpdat
12980 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  eCallback func, 
12990 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
129a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
129b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
129c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
129d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
129e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
129f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12a00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12a10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12a20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12a30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12a40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12a50 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
12a60 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49  e3_commit_hook(I
12a70 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
12a80 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66  CommitCallback f
12a90 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
12aa0 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
12ab0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12ac0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12ad0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12ae0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12af0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12b00 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12b10 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12b20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12b30 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12b40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12b50 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
12b60 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49 6e  sqlite3_trace(In
12b70 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 54  tPtr db, SQLiteT
12b80 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  raceCallback fun
12b90 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
12ba0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e  );....    // Sin
12bb0 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  ce sqlite3_confi
12bc0 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72 69  g() takes a vari
12bd0 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69  able argument li
12be0 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f  st, we have to o
12bf0 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74  verload declarat
12c00 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72  ions..    // for
12c10 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61   all possible ca
12c20 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61 6e 74  lls that we want
12c30 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21 50   to use...#if !P
12c40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12c50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12c60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12c70 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
12c80 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
12c90 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
12ca0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
12cb0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
12cc0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
12cd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12ce0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
12cf0 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
12d00 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
12d10 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12d20 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
12d30 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
12d40 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51 4c  _config_none(SQL
12d50 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d  iteConfigOpsEnum
12d60 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   op);....#if !PL
12d70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12d80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
12d90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12da0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
12db0 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
12dc0 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
12dd0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12de0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12df0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12e00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12e10 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
12e20 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
12e30 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
12e40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12e50 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
12e60 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
12e70 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69 74  config_int(SQLit
12e80 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f  eConfigOpsEnum o
12e90 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  p, int value);..
12ea0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
12eb0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
12ec0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12ed0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
12ee0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
12ef0 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
12f00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12f10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12f20 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12f30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12f40 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
12f50 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
12f60 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
12f70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
12f80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
12f90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
12fa0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
12fb0 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  log(SQLiteConfig
12fc0 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c 69  OpsEnum op, SQLi
12fd0 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66 75  teLogCallback fu
12fe0 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
12ff0 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
13000 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13010 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13020 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13030 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13040 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13050 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13060 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
13070 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13080 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13090 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
130a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
130b0 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f  qlite3_rollback_
130c0 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20  hook(IntPtr db, 
130d0 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61  SQLiteRollbackCa
130e0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
130f0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
13100 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13110 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13120 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13130 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13140 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13150 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13160 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13170 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13180 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13190 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
131a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
131b0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
131c0 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74 72  db_handle(IntPtr
131d0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
131e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
131f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13200 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13210 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13220 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13230 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13240 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13250 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13260 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13270 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13280 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
13290 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
132a0 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d  te3_db_release_m
132b0 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62 29  emory(IntPtr db)
132c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
132d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
132e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
132f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
13300 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13310 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
13320 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13330 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13340 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13350 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13360 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13370 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
13380 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
13390 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
133a0 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  tr dbName);....#
133b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
133c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
133d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
133e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
133f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13400 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13410 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13420 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13430 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13440 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13450 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13460 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e  IntPtr sqlite3_n
13470 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20  ext_stmt(IntPtr 
13480 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  db, IntPtr stmt)
13490 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
134a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
134b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
134c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
134d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
134e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
134f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
13500 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
13510 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
13520 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
13530 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
13540 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
13550 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78  rCode sqlite3_ex
13560 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ec(IntPtr db, by
13570 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74  te[] strSql, Int
13580 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20  Ptr pvCallback, 
13590 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20  IntPtr pvParam, 
135a0 6f 75 74 20 49 6e 74 50 74 72 20 65 72 72 4d 73  out IntPtr errMs
135b0 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  g);....#if !PLAT
135c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
135d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
135e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
135f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13600 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
13610 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
13620 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
13630 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
13640 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13650 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13660 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
13670 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f  te3_release_memo
13680 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d  ry(int nBytes);.
13690 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
136a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
136b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
136c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
136d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
136e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
136f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
13700 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
13710 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13720 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13730 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13740 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
13750 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49  get_autocommit(I
13760 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
13770 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13780 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13790 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
137a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
137b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
137c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
137d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
137e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
137f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13800 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13810 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
13820 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
13830 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
13840 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74  result_codes(Int
13850 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66  Ptr db, int onof
13860 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  f);....#if !PLAT
13870 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13880 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13890 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
138a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
138b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
138c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
138d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
138e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
138f0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
13900 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
13910 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
13920 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
13930 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64  errcode(IntPtr d
13940 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
13950 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13960 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
13970 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13980 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
13990 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
139a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
139b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
139c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
139d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
139e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
139f0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
13a00 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
13a10 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65  extended_errcode
13a20 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
13a30 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13a40 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13a50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13a60 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13a70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13a80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13a90 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13aa0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13ab0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13ac0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13ad0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13ae0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
13af0 65 72 72 73 74 72 28 53 51 4c 69 74 65 45 72 72  errstr(SQLiteErr
13b00 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33  orCode rc); /* 3
13b10 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20  .7.15+ */....   
13b20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65   // Since sqlite
13b30 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20  3_log() takes a 
13b40 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e  variable argumen
13b50 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20  t list, we have 
13b60 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c  to overload decl
13b70 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f  arations..    //
13b80 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c   for all possibl
13b90 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f  e calls.  For no
13ba0 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65  w, we are only e
13bb0 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65  xposing a single
13bc0 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20   string, and..  
13bd0 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74    // depend on t
13be0 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72  he caller to for
13bf0 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d  mat the string..
13c00 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13c10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13c20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13c30 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13c40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13c50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13c60 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13c70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13c80 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13c90 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13ca0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13cb0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c  n void sqlite3_l
13cc0 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  og(SQLiteErrorCo
13cd0 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74  de iErrCode, byt
13ce0 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d  e[] zFormat);...
13cf0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13d00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13d10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13d20 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13d30 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13d40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13d50 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13d60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13d70 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13d80 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13d90 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13da0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
13db0 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63  e sqlite3_file_c
13dc0 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62  ontrol(IntPtr db
13dd0 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65  , byte[] zDbName
13de0 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72  , int op, IntPtr
13df0 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21   pArg);....#if !
13e00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13e10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13e20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13e30 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13e40 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13e50 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13e60 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13e70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13e80 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13e90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13ea0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
13eb0 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  tr sqlite3_backu
13ec0 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65  p_init(IntPtr de
13ed0 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65  stDb, byte[] zDe
13ee0 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73  stName, IntPtr s
13ef0 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20  ourceDb, byte[] 
13f00 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d  zSourceName);...
13f10 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
13f20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
13f30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13f40 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
13f50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
13f60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
13f70 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
13f80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
13f90 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
13fa0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
13fb0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
13fc0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
13fd0 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  e sqlite3_backup
13fe0 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62 61 63  _step(IntPtr bac
13ff0 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b  kup, int nPage);
14000 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
14010 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14020 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
14030 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
14040 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14050 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
14060 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
14070 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
14080 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14090 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
140a0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
140b0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
140c0 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e  _backup_remainin
140d0 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  g(IntPtr backup)
140e0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
140f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14100 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
14110 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
14120 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
14130 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
14140 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
14150 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
14160 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14170 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
14180 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14190 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
141a0 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75  3_backup_pagecou
141b0 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  nt(IntPtr backup
141c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
141d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
141e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
141f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
14200 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
14210 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
14220 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
14230 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
14240 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
14250 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
14260 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14270 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
14280 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64  orCode sqlite3_d
14290 65 63 6c 61 72 65 5f 76 74 61 62 28 49 6e 74 50  eclare_vtab(IntP
142a0 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 53  tr db, IntPtr zS
142b0 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  QL);....#if !PLA
142c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
142d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
142e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
142f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
14300 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
14310 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
14320 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
14330 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14340 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
14350 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14360 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
14370 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28  sqlite3_mprintf(
14380 49 6e 74 50 74 72 20 66 6f 72 6d 61 74 2c 20 5f  IntPtr format, _
14390 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20 20 20 20  _arglist);..    
143a0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
143b0 20 20 2f 2f 20 53 51 4c 69 74 65 20 41 50 49 20    // SQLite API 
143c0 63 61 6c 6c 73 20 74 68 61 74 20 61 72 65 20 70  calls that are p
143d0 72 6f 76 69 64 65 64 20 62 79 20 22 77 65 6c 6c  rovided by "well
143e0 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f  -known" extensio
143f0 6e 73 20 74 68 61 74 20 6d 61 79 20 62 65 20 73  ns that may be s
14400 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f  tatically..    /
14410 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68 20 74 68  / linked with th
14420 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6e 61  e SQLite core na
14430 74 69 76 65 20 6c 69 62 72 61 72 79 20 63 75 72  tive library cur
14440 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a  rently in use...
14450 20 20 20 20 23 72 65 67 69 6f 6e 20 65 78 74 65      #region exte
14460 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20 61 70 69  nsion sqlite api
14470 20 63 61 6c 6c 73 0d 0a 23 69 66 20 49 4e 54 45   calls..#if INTE
14480 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c  ROP_VIRTUAL_TABL
14490 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
144a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
144b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
144c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
144d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
144e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
144f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
14500 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
14510 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14520 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
14530 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14540 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
14550 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73  e3_create_dispos
14560 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50  able_module(IntP
14570 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61  tr db, IntPtr na
14580 6d 65 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f  me, ref sqlite3_
14590 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49  module module, I
145a0 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
145b0 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c  a, xDestroyModul
145c0 65 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a  e xDestroy);....
145d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
145e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
145f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14600 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
14610 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
14620 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
14630 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
14640 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14650 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
14660 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
14670 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14680 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69   void sqlite3_di
14690 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74  spose_module(Int
146a0 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23  Ptr pModule);..#
146b0 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72  endif..    #endr
146c0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
146d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14710 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14720 23 72 65 67 69 6f 6e 20 73 71 6c 69 74 65 20 69  #region sqlite i
14730 6e 74 65 72 6f 70 20 61 70 69 20 63 61 6c 6c 73  nterop api calls
14740 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46   (.NET Compact F
14750 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a  ramework only)..
14760 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
14770 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26  PACTFRAMEWORK &&
14780 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
14790 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  D..    [DllImpor
147a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
147b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
147c0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
147d0 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73  sqlite3_last_ins
147e0 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f  ert_rowid_intero
147f0 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66  p(IntPtr db, ref
14800 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d   long rowId);...
14810 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
14820 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
14830 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14840 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
14850 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
14860 64 5f 69 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f  d_interop(ref lo
14870 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20  ng bytes);....  
14880 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14890 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
148a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
148b0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
148c0 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61  e3_memory_highwa
148d0 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20  ter_interop(int 
148e0 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20 6c  resetFlag, ref l
148f0 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20  ong bytes);.... 
14900 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
14910 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
14920 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
14930 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
14940 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
14950 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  ind_double_inter
14960 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
14970 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64  int index, ref d
14980 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  ouble value);...
14990 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
149a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
149b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
149c0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
149d0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
149e0 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65  _bind_int64_inte
149f0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
14a00 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
14a10 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  long value);....
14a20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
14a30 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
14a40 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
14a50 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65  _bind_int64_inte
14a60 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65  rop")]..    inte
14a70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14a80 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
14a90 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
14aa0 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  uint64_interop(I
14ab0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
14ac0 69 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e 67  index, ref ulong
14ad0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
14ae0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
14af0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
14b00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
14b10 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
14b20 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69  _column_double_i
14b30 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
14b40 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
14b50 75 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ut double value)
14b60 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
14b70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14b80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14b90 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
14ba0 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  d sqlite3_column
14bb0 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
14bc0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
14bd0 69 6e 64 65 78 2c 20 6f 75 74 20 6c 6f 6e 67 20  index, out long 
14be0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
14bf0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14c00 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
14c10 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14c20 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
14c30 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74  value_double_int
14c40 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f  erop(IntPtr p, o
14c50 75 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ut double value)
14c60 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
14c70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14c80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14c90 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
14ca0 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  d sqlite3_value_
14cb0 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
14cc0 74 50 74 72 20 70 2c 20 6f 75 74 20 49 6e 74 36  tPtr p, out Int6
14cd0 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  4 value);....   
14ce0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14cf0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
14d00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14d10 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
14d20 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f  3_result_double_
14d30 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
14d40 6f 6e 74 65 78 74 2c 20 72 65 66 20 64 6f 75 62  ontext, ref doub
14d50 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  le value);....  
14d60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
14d70 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
14d80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
14d90 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
14da0 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f  e3_result_int64_
14db0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
14dc0 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36  ontext, ref Int6
14dd0 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  4 value);....   
14de0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14df0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
14e00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14e10 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
14e20 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f  te3_create_dispo
14e30 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74  sable_module_int
14e40 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20 49  erop(..        I
14e50 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
14e60 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72 20 70 4d   name, IntPtr pM
14e70 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56 65 72 73  odule, int iVers
14e80 69 6f 6e 2c 20 78 43 72 65 61 74 65 20 78 43 72  ion, xCreate xCr
14e90 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78  eate,..        x
14ea0 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74  Connect xConnect
14eb0 2c 20 78 42 65 73 74 49 6e 64 65 78 20 78 42 65  , xBestIndex xBe
14ec0 73 74 49 6e 64 65 78 2c 20 78 44 69 73 63 6f 6e  stIndex, xDiscon
14ed0 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74  nect xDisconnect
14ee0 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73 74  ,..        xDest
14ef0 72 6f 79 20 78 44 65 73 74 72 6f 79 2c 20 78 4f  roy xDestroy, xO
14f00 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43 6c 6f 73  pen xOpen, xClos
14f10 65 20 78 43 6c 6f 73 65 2c 20 78 46 69 6c 74 65  e xClose, xFilte
14f20 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20 20 20 20  r xFilter,..    
14f30 20 20 20 20 78 4e 65 78 74 20 78 4e 65 78 74 2c      xNext xNext,
14f40 20 78 45 6f 66 20 78 45 6f 66 2c 20 78 43 6f 6c   xEof xEof, xCol
14f50 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f  umn xColumn, xRo
14f60 77 49 64 20 78 52 6f 77 49 64 2c 20 78 55 70 64  wId xRowId, xUpd
14f70 61 74 65 20 78 55 70 64 61 74 65 2c 0d 0a 20 20  ate xUpdate,..  
14f80 20 20 20 20 20 20 78 42 65 67 69 6e 20 78 42 65        xBegin xBe
14f90 67 69 6e 2c 20 78 53 79 6e 63 20 78 53 79 6e 63  gin, xSync xSync
14fa0 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69  , xCommit xCommi
14fb0 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f  t, xRollback xRo
14fc0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
14fd0 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78   xFindFunction x
14fe0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 78 52  FindFunction, xR
14ff0 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 2c 20 78  ename xRename, x
15000 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70  Savepoint xSavep
15010 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 78  oint,..        x
15020 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73 65  Release xRelease
15030 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52  , xRollbackTo xR
15040 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50 74  ollbackTo, IntPt
15050 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d 0a  r pClientData,..
15060 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79          xDestroy
15070 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79 4d  Module xDestroyM
15080 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  odule);..#endif.
15090 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52 4d  .    // PLATFORM
150a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
150b0 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41  K && !SQLITE_STA
150c0 4e 44 41 52 44 0d 0a 20 20 20 20 23 65 6e 64 72  NDARD..    #endr
150d0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
150e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15120 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
15130 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 44  #region Native D
15140 65 6c 65 67 61 74 65 73 0d 0a 23 69 66 20 49 4e  elegates..#if IN
15150 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
15160 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  BLE..#if !PLATFO
15170 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15180 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
15190 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
151a0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
151b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
151c0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
151d0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
151e0 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61 74  ErrorCode xCreat
151f0 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
15200 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
15210 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20   IntPtr pAux,.. 
15220 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
15230 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
15240 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
15250 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
15260 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
15270 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20  ntPtr pError..  
15280 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
15290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
152e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
152f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15300 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
15310 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
15320 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15330 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
15340 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
15350 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
15360 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
15370 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a     IntPtr pDb,..
15380 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
15390 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  Aux,..        in
153a0 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
153b0 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
153c0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
153d0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
153e0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72    ref IntPtr pEr
153f0 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  ror..    );.... 
15400 20 20 20 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 2f 2f 2f 2f 2f 0d 0a  //////////////..
15450 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15460 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15470 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
15480 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
15490 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
154a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
154b0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
154c0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
154d0 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e 64 65  orCode xBestInde
154e0 78 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  x(..        IntP
154f0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
15500 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78     IntPtr pIndex
15510 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
15520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
15570 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
15580 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
15590 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
155a0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
155b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
155c0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
155d0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
155e0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
155f0 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28  ode xDisconnect(
15600 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
15610 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
15620 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
15630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15670 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
15680 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
15690 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
156a0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
156b0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
156c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
156d0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
156e0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
156f0 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73 74 72  ErrorCode xDestr
15700 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  oy(..        Int
15710 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
15720 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
15730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15770 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
15780 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15790 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
157a0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
157b0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
157c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
157d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
157e0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
157f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70  iteErrorCode xOp
15800 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  en(..        Int
15810 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
15820 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
15830 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
15840 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
15850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15890 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
158a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
158b0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
158c0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
158d0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
158e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
158f0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
15900 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
15910 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65  ErrorCode xClose
15920 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
15930 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
15940 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
15950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15990 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
159a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
159b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
159c0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
159d0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
159e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
159f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
15a00 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
15a10 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46 69  iteErrorCode xFi
15a20 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 49  lter(..        I
15a30 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
15a40 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 4e          int idxN
15a50 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  um,..        Int
15a60 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20  Ptr idxStr,..   
15a70 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
15a80 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
15a90 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  rgv..    );.... 
15aa0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15af0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
15b00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15b10 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
15b20 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
15b30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
15b40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
15b50 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
15b60 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
15b70 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20  orCode xNext(.. 
15b80 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
15b90 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  ursor..    );...
15ba0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
15bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bf0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15c00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15c10 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
15c20 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
15c30 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
15c40 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
15c50 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
15c60 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 45 6f  delegate int xEo
15c70 66 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  f(..        IntP
15c80 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
15c90 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
15ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ce0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
15cf0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15d00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
15d10 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
15d20 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
15d30 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
15d40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
15d50 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
15d60 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
15d70 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
15d80 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
15d90 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
15da0 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20  pContext,..     
15db0 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20     int index..  
15dc0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
15dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
15e20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
15e30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
15e40 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
15e50 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
15e60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
15e70 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
15e80 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
15e90 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
15ea0 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20  xRowId(..       
15eb0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
15ec0 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f  ..        ref lo
15ed0 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b  ng rowId..    );
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 53 51 4c 69  ic delegate SQLi
15fb0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64  teErrorCode xUpd
15fc0 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ate(..        In
15fd0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
15fe0 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
15ff0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
16000 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  rgv,..        re
16010 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
16020 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
16030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16070 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
16080 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16090 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
160a0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
160b0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
160c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
160d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
160e0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
160f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16100 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20  xBegin(..       
16110 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
16120 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
16130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16170 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
16180 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16190 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
161a0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
161b0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
161c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
161d0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
161e0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
161f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16200 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20   xSync(..       
16210 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
16220 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
16230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16270 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
16280 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
16290 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
162a0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
162b0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
162c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
162d0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
162e0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
162f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16300 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20   xCommit(..     
16310 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
16320 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
16330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
16380 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16390 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
163a0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
163b0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
163c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
163d0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
163e0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
163f0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
16400 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20  de xRollback(.. 
16410 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
16420 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
16430 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
16440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16480 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
16490 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
164a0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
164b0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
164c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
164d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
164e0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
164f0 6c 65 67 61 74 65 20 69 6e 74 20 78 46 69 6e 64  legate int xFind
16500 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  Function(..     
16510 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
16520 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41  ..        int nA
16530 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  rg,..        Int
16540 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20  Ptr zName,..    
16550 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61      ref SQLiteCa
16560 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c  llback callback,
16570 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
16580 74 50 74 72 20 70 55 73 65 72 44 61 74 61 0d 0a  tPtr pUserData..
16590 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
165a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
165f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
16600 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
16610 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
16620 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
16630 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
16640 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
16650 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
16660 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
16670 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  e xRename(..    
16680 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
16690 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
166a0 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d 0a  r zNew..    );..
166b0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
166c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16700 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
16710 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16720 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
16730 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
16740 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
16750 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
16760 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
16770 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
16780 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70  ErrorCode xSavep
16790 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 49  oint(..        I
167a0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
167b0 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
167c0 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  oint..    );....
167d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
167e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16820 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
16830 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
16840 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
16850 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
16860 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
16870 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
16880 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
16890 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
168a0 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65  rorCode xRelease
168b0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
168c0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
168d0 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
168e0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
168f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
16940 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16950 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16960 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
16970 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
16980 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
16990 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
169a0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
169b0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
169c0 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28  ode xRollbackTo(
169d0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
169e0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
169f0 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
16a00 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
16a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
16a60 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
16a70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16a80 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
16a90 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
16aa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
16ab0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
16ac0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
16ad0 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79  te void xDestroy
16ae0 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70 43  Module(IntPtr pC
16af0 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 23 65 6e  lientData);..#en
16b00 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  dif..    #endreg
16b10 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
16b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
16b70 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 53 74 72  egion Native Str
16b80 75 63 74 75 72 65 73 0d 0a 23 69 66 20 49 4e 54  uctures..#if INT
16b90 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42  EROP_VIRTUAL_TAB
16ba0 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  LE..    [StructL
16bb0 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
16bc0 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
16bd0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
16be0 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ct sqlite3_modul
16bf0 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
16c00 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 56 65    public int iVe
16c10 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  rsion;..        
16c20 70 75 62 6c 69 63 20 78 43 72 65 61 74 65 20 78  public xCreate x
16c30 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20 20  Create;..       
16c40 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63 74   public xConnect
16c50 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20   xConnect;..    
16c60 20 20 20 20 70 75 62 6c 69 63 20 78 42 65 73 74      public xBest
16c70 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78  Index xBestIndex
16c80 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
16c90 63 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44  c xDisconnect xD
16ca0 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20  isconnect;..    
16cb0 20 20 20 20 70 75 62 6c 69 63 20 78 44 65 73 74      public xDest
16cc0 72 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20  roy xDestroy;.. 
16cd0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 4f         public xO
16ce0 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20  pen xOpen;..    
16cf0 20 20 20 20 70 75 62 6c 69 63 20 78 43 6c 6f 73      public xClos
16d00 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20  e xClose;..     
16d10 20 20 20 70 75 62 6c 69 63 20 78 46 69 6c 74 65     public xFilte
16d20 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20  r xFilter;..    
16d30 20 20 20 20 70 75 62 6c 69 63 20 78 4e 65 78 74      public xNext
16d40 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20 20   xNext;..       
16d50 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45 6f   public xEof xEo
16d60 66 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  f;..        publ
16d70 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75  ic xColumn xColu
16d80 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  mn;..        pub
16d90 6c 69 63 20 78 52 6f 77 49 64 20 78 52 6f 77 49  lic xRowId xRowI
16da0 64 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  d;..        publ
16db0 69 63 20 78 55 70 64 61 74 65 20 78 55 70 64 61  ic xUpdate xUpda
16dc0 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  te;..        pub
16dd0 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65 67 69  lic xBegin xBegi
16de0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
16df0 69 63 20 78 53 79 6e 63 20 78 53 79 6e 63 3b 0d  ic xSync xSync;.
16e00 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16e10 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b  xCommit xCommit;
16e20 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
16e30 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c   xRollback xRoll
16e40 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 70  back;..        p
16e50 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63 74  ublic xFindFunct
16e60 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  ion xFindFunctio
16e70 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
16e80 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61  ic xRename xRena
16e90 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  me;..        /* 
16ea0 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76  The methods abov
16eb0 65 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e  e are in version
16ec0 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65   1 of the sqlite
16ed0 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20  3_module..      
16ee0 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68     * object.  Th
16ef0 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f  ose below are fo
16f00 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64 20  r version 2 and 
16f10 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20  greater. */..   
16f20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 61 76       public xSav
16f30 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e  epoint xSavepoin
16f40 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
16f50 69 63 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c  ic xRelease xRel
16f60 65 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 70  ease;..        p
16f70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54  ublic xRollbackT
16f80 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a  o xRollbackTo;..
16f90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fe0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
16ff0 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
17000 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
17010 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
17020 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
17030 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a  e3_vtab..    {..
17040 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
17050 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b 0d 0a  ntPtr pModule;..
17060 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
17070 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c  nt nRef; /* NO L
17080 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20  ONGER USED */.. 
17090 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
170a0 74 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20  tPtr zErrMsg;.. 
170b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
170c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17100 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
17110 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
17120 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
17130 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
17140 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
17150 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20  3_vtab_cursor.. 
17160 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
17170 62 6c 69 63 20 49 6e 74 50 74 72 20 70 56 54 61  blic IntPtr pVTa
17180 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  b;..    }....   
17190 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
171a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
171e0 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
171f0 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
17200 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
17210 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
17220 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
17230 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a  straint..    {..
17240 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
17250 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
17260 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20  straint(..      
17270 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
17280 78 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73  xConstraint cons
17290 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20 20  traint..        
172a0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
172b0 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
172c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
172d0 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69      if (constrai
172e0 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  nt != null)..   
172f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
17300 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c              iCol
17310 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  umn = constraint
17320 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20  .iColumn;..     
17330 20 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d 20             op = 
17340 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a  constraint.op;..
17350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17360 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61  usable = constra
17370 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20  int.usable;..   
17380 20 20 20 20 20 20 20 20 20 20 20 20 20 69 54 65               iTe
17390 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73 74  rmOffset = const
173a0 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65  raint.iTermOffse
173b0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
173c0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
173d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
173e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17420 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
17430 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a  c int iColumn;..
17440 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
17450 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
17460 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20  aintOp op;..    
17470 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
17480 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20  usable;..       
17490 20 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65 72   public int iTer
174a0 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d  mOffset;..    }.
174b0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
174c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17500 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
17510 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
17520 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
17530 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
17540 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
17550 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20 20  ex_orderby..    
17560 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
17570 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  c sqlite3_index_
17580 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20 20  orderby(..      
17590 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
175a0 78 4f 72 64 65 72 42 79 20 6f 72 64 65 72 42 79  xOrderBy orderBy
175b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
175c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
175d0 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
175e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
175f0 20 28 6f 72 64 65 72 42 79 20 21 3d 20 6e 75 6c   (orderBy != nul
17600 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
17610 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17620 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64     iColumn = ord
17630 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20  erBy.iColumn;.. 
17640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
17650 65 73 63 20 3d 20 6f 72 64 65 72 42 79 2e 64 65  esc = orderBy.de
17660 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sc;..           
17670 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
17680 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
17690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
176e0 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20  ic int iColumn; 
176f0 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72  /* Column number
17700 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
17710 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b 20 20  lic byte desc;  
17720 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45 53   /* True for DES
17730 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53  C.  False for AS
17740 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  C. */..    }....
17750 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
177a0 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
177b0 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
177c0 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
177d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
177e0 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
177f0 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
17800 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
17810 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f   public sqlite3_
17820 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
17830 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20  _usage(..       
17840 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
17850 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
17860 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d  constraintUsage.
17870 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
17880 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
17890 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
178a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
178b0 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  (constraintUsage
178c0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
178d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
178e0 20 20 20 20 20 20 20 20 20 20 61 72 67 76 49 6e            argvIn
178f0 64 65 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  dex = constraint
17900 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78 3b  Usage.argvIndex;
17910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17920 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61    omit = constra
17930 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a  intUsage.omit;..
17940 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
17950 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
17960 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
179b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
179c0 74 20 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20  t argvIndex; /* 
179d0 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e  if >0, constrain
179e0 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72 67  t is part of arg
179f0 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d  v to xFilter */.
17a00 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17a10 62 79 74 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f  byte omit;     /
17a20 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20  * Do not code a 
17a30 74 65 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f  test for this co
17a40 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20  nstraint */..   
17a50 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
17a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17aa0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
17ab0 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
17ac0 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
17ad0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
17ae0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
17af0 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20  index_info..    
17b00 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 49 6e  {..        /* In
17b10 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20  puts */..       
17b20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e   public int nCon
17b30 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62  straint; /* Numb
17b40 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e  er of entries in
17b50 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d   aConstraint */.
17b60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17b70 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69  IntPtr aConstrai
17b80 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  nt;..        pub
17b90 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72 42 79  lic int nOrderBy
17ba0 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
17bb0 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42  c IntPtr aOrderB
17bc0 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f  y;..        /* O
17bd0 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  utputs */..     
17be0 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
17bf0 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   aConstraintUsag
17c00 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  e;..        publ
17c10 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20  ic int idxNum;  
17c20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62           /* Numb
17c30 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74  er used to ident
17c40 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f  ify the index */
17c50 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
17c60 20 73 74 72 69 6e 67 20 69 64 78 53 74 72 3b 20   string idxStr; 
17c70 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e 67         /* String
17c80 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61 69  , possibly obtai
17c90 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  ned from sqlite3
17ca0 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20  _malloc */..    
17cb0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e      public int n
17cc0 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b  eedToFreeIdxStr;
17cd0 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72 20   /* Free idxStr 
17ce0 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72  using sqlite3_fr
17cf0 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0d  ee() if true */.
17d00 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
17d10 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75  int orderByConsu
17d20 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20 69 66  med;  /* True if
17d30 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65 61   output is alrea
17d40 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20  dy ordered */.. 
17d50 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f         public do
17d60 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43 6f  uble estimatedCo
17d70 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65 64  st; /* Estimated
17d80 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74   cost of using t
17d90 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20  his index */..  
17da0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
17db0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d   #endregion..  }
17dc0 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ....  //////////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e10 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ///....#if PLATF
17e20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
17e30 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  WORK..  internal
17e40 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20   abstract class 
17e50 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a  CriticalHandle :
17e60 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20   IDisposable..  
17e70 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62  {..    private b
17e80 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a  ool _isClosed;..
17e90 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e      protected In
17ea0 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a  tPtr handle;....
17eb0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 43 72      protected Cr
17ec0 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74  iticalHandle(Int
17ed0 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c  Ptr invalidHandl
17ee0 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a  eValue)..    {..
17ef0 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69        handle = i
17f00 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75  nvalidHandleValu
17f10 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f  e;..      _isClo
17f20 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  sed = false;..  
17f30 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74    }....    ~Crit
17f40 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20  icalHandle()..  
17f50 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f    {..      Dispo
17f60 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
17f70 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65  }....    private
17f80 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d   void Cleanup().
17f90 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
17fa0 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20   (!IsClosed)..  
17fb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74      {..        t
17fc0 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20  his._isClosed = 
17fd0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69  true;..        i
17fe0 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a  f (!IsInvalid)..
17ff0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18000 20 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64       ReleaseHand
18010 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  le();..         
18020 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
18030 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
18040 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
18050 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
18060 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28  blic void Close(
18070 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
18080 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
18090 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
180a0 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
180b0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
180c0 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
180d0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
180e0 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
180f0 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
18100 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
18110 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e    {..      Clean
18120 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  up();..    }....
18130 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 61 62      protected ab
18140 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65  stract bool Rele
18150 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a  aseHandle();....
18160 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f      protected vo
18170 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74  id SetHandle(Int
18180 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20  Ptr value)..    
18190 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20  {..      handle 
181a0 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d  = value;..    }.
181b0 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f  ...    public vo
181c0 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e  id SetHandleAsIn
181d0 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a  valid()..    {..
181e0 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20        _isClosed 
181f0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47  = true;..      G
18200 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69  C.SuppressFinali
18210 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d  ze(this);..    }
18220 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62  ....    public b
18230 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20  ool IsClosed..  
18240 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b    {..      get {
18250 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65   return _isClose
18260 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  d; }..    }.... 
18270 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61     public abstra
18280 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  ct bool IsInvali
18290 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  d..    {..      
182a0 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  get;..    }.... 
182b0 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   }....#endif....
182c0 20 20 20 20 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 2f 2f 2f  ////////////////
182e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18310 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
18320 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
18330 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20  andle Class..   
18340 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65 20   // Handles the 
18350 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62 61  unmanaged databa
18360 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20  se pointer, and 
18370 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a  provides finaliz
18380 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75  ation..    // su
18390 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20  pport for it... 
183a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
183b0 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43  ed class SQLiteC
183c0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
183d0 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  : CriticalHandle
183e0 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c  ..    {..#if SQL
183f0 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26 20  ITE_STANDARD && 
18400 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18410 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18420 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c      internal del
18430 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73 65  egate void Close
18440 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61  ConnectionCallba
18450 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck(..           
18460 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
18470 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74  nHandle hdl, Int
18480 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
18490 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
184a0 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  tic CloseConnect
184b0 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73  ionCallback clos
184c0 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20  eConnection =.. 
184d0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
184e0 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
184f0 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ction;..#endif..
18500 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
18510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18550 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
18560 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18570 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
18580 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
18590 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
185a0 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
185b0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
185c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
185d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18600 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18610 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
18620 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20   ownHandle;.... 
18630 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18680 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
18690 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74   static implicit
186a0 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72   operator IntPtr
186b0 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
186c0 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20  nHandle db)..   
186d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
186e0 20 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75      if (db != nu
186f0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
18700 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
18710 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
18720 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
18730 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63     lock (db.sync
18740 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
18750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
18760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18770 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e        return db.
18780 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  handle;..       
18790 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
187a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
187b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
187c0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
187d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
187e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
187f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18820 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18830 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
18840 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
18850 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62  dle(IntPtr db, b
18860 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  ool ownHandle)..
18870 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
18880 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  is(ownHandle).. 
18890 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
188a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
188b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
188c0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
188d0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
188e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
188f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
18900 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77  s.ownHandle = ow
18910 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  nHandle;..      
18920 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
18930 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20 20  dle(db);..      
18940 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18950 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
18960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
189b0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43   private SQLiteC
189c0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28  onnectionHandle(
189d0 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d  bool ownHandle).
189e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
189f0 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
18a00 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
18a10 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
18a20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
18a30 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
18a40 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
18a50 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
18a60 28 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76  (ref UnsafeNativ
18a70 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74  eMethods.connect
18a80 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  ionCount);..#end
18a90 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
18aa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
18ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18af0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  ....        prot
18b00 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62  ected override b
18b10 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
18b20 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
18b30 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
18b40 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
18b50 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
18b60 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
18b70 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
18b80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18b90 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c     if (!ownHandl
18ba0 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d  e) return true;.
18bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
18bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
18bd0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
18be0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
18bf0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
18c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18c10 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
18c20 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
18c30 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
18c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c50 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
18c60 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23  tPtr.Zero);....#
18c70 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
18c80 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RD..            
18c90 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
18ca0 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
18cb0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
18cc0 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f           closeCo
18cd0 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c  nnection(this, l
18ce0 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65  ocalHandle);..#e
18cf0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
18d00 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
18d10 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
18d20 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
18d30 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
18d40 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
18d50 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c  tion(this, local
18d60 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66  Handle);..#endif
18d70 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
18d80 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
18d90 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
18da0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
18db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
18dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18dd0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
18de0 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
18df0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
18e00 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
18e10 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
18e20 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
18e30 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
18e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18e50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
18e60 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
18e70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
18e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
18e90 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
18ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18eb0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
18ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18ed0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18ee0 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
18ef0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
18f00 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
18f10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f30 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
18f40 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
18f50 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  is, handle);..  
18f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f70 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
18f80 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
18f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18fa0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
18fb0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
18fc0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
18fd0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
18fe0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
18ff0 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
19000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
19010 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
19020 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f  ethods.connectio
19030 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  nCount);..#endif
19040 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
19050 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
19060 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
19070 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
19080 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
19090 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
190a0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
190b0 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
190c0 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
190d0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
190e0 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
190f0 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
19100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
19110 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
19120 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
19130 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
19140 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
19150 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19170 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
19180 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
19190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
191a0 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
191b0 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c  Connection: {0},
191c0 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22   exception: {1}"
191d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
191e0 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c             handl
191f0 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  e, e)); /* throw
19200 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19210 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
19220 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
19230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
19240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19250 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
19260 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
19270 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
19280 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
19290 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
192a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
192b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
192c0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
192d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
192e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
192f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
19300 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
19310 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
19320 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
19330 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55       }..#if DEBU
19340 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  G..            r
19350 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65  eturn false;..#e
19360 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
19370 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
19380 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
19390 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
193a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193e0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54  ///....#if COUNT
193f0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
19400 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52   public int WasR
19410 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20  eleasedOk()..   
19420 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19430 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72      return Inter
19440 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
19450 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
19460 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
19470 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65  iveMethods.conne
19480 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20  ctionCount);..  
19490 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
194a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
194b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
19500 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e  blic bool OwnHan
19510 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
19520 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
19530 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
19540 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
19550 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
19570 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
19580 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
19590 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
195a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
195b0 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b  eturn ownHandle;
195c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
195d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
195e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
195f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
19600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19640 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
19650 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
19660 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
19670 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19680 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
19690 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
196a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
196b0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
196c0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
196d0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
196e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
196f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19700 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
19710 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
19720 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
19730 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19740 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
19750 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
197b0 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
197c0 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
197d0 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
197e0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
197f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19800 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
19810 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
19820 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
19830 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
19840 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
19850 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
19860 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
19870 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
19880 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
19890 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
198a0 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198f0 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
19900 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  n SQLiteStatemen
19910 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  tHandle Class.. 
19920 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66     // Provides f
19930 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70  inalization supp
19940 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65  ort for unmanage
19950 64 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d 65  d SQLite stateme
19960 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  nts...    intern
19970 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
19980 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
19990 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
199a0 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
199b0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
199c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
199d0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
199e0 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
199f0 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
19a00 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
19a10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
19a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
19a70 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e  ivate SQLiteConn
19a80 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
19a90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
19aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ae0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
19af0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
19b00 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
19b10 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74 61  IntPtr(SQLiteSta
19b20 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d  tementHandle stm
19b30 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
19b40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
19b50 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tmt != null)..  
19b60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
19b70 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
19b80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
19b90 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
19ba0 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29   (stmt.syncRoot)
19bb0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
19bc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
19bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19be0 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e   return stmt.han
19bf0 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
19c00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
19c10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
19c20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
19c30 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
19c40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
19c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19ca0 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
19cb0 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28  StatementHandle(
19cc0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
19cd0 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
19ce0 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20  tr stmt)..      
19cf0 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
19d00 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
19d10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19d20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
19d30 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
19d40 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
19d50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19d70 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20  is.cnn = cnn;.. 
19d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
19d90 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d  etHandle(stmt);.
19da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
19db0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
19dc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
19dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19e10 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
19e20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
19e30 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
19e40 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
19e50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
19e60 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
19e70 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
19e80 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
19e90 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ncrement(..     
19ea0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
19eb0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
19ec0 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ds.statementCoun
19ed0 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  t);..#endif..   
19ee0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
19ef0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19f40 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f       protected o
19f50 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c  verride bool Rel
19f60 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20  easeHandle()..  
19f70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
19f80 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
19f90 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
19fa0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
19fb0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
19fc0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
19fd0 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e  localHandle = In
19fe0 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e  terlocked.Exchan
19ff0 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
1a000 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e           ref han
1a010 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  dle, IntPtr.Zero
1a020 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1a030 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
1a040 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
1a050 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1a060 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1a070 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74  eBase.FinalizeSt
1a080 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63  atement(cnn, loc
1a090 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
1a0a0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1a0b0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1a0c0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1a0d0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1a0e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1a0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1a100 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
1a110 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
1a120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a130 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
1a140 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c  Statement: {0}",
1a150 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
1a160 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
1a170 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a190 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1a1a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a1b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1a1c0 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
1a1d0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1a1e0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
1a1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1a200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a210 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
1a220 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1a230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a240 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1a250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
1a260 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69  QLiteBase.Finali
1a270 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c  zeStatement(cnn,
1a280 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
1a290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a2a0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
1a2b0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
1a2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a2d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1a2e0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
1a2f0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
1a300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a310 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
1a320 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
1a330 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1a340 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1a350 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ods.statementCou
1a360 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
1a370 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1a380 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a390 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
1a3a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1a3b0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1a3c0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1a3d0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
1a3e0 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
1a3f0 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
1a400 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
1a410 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
1a420 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
1a430 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
1a440 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
1a450 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
1a460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a470 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1a480 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1a4a0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
1a4b0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
1a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a4d0 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53        "FinalizeS
1a4e0 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65  tatement: {0}, e
1a4f0 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
1a500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a510 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
1a520 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
1a530 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1a540 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1a550 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
1a560 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1a570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a580 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
1a590 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1a5a0 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
1a5b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1a5c0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1a5d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1a5f0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1a600 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1a610 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1a620 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
1a630 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
1a640 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1a650 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1a660 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
1a670 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1a680 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
1a690 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
1a6a0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
1a6b0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1a6c0 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a710 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
1a720 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
1a730 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
1a740 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
1a750 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1a760 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
1a770 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d  cked.Decrement(.
1a780 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a790 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
1a7a0 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65  eMethods.stateme
1a7b0 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  ntCount);..     
1a7c0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
1a7d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1a7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1a820 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
1a830 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
1a840 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
1a850 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1a860 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
1a870 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1a880 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a890 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1a8a0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1a8b0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1a8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1a8d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a8e0 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
1a8f0 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
1a900 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
1a910 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1a920 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a930 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a980 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
1a990 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
1a9a0 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
1a9b0 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
1a9c0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1a9d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a9e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1a9f0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
1aa00 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
1aa10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1aa20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1aa30 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
1aa40 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
1aa50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
1aa60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
1aa70 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1aa80 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aad0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
1aae0 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
1aaf0 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
1ab00 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
1ab10 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
1ab20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
1ab30 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65  Lite backup obje
1ab40 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cts...    intern
1ab50 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
1ab60 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
1ab70 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
1ab80 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
1ab90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1aba0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1abb0 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
1abc0 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
1abd0 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
1abe0 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
1abf0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ac40 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
1ac50 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
1ac60 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a  ionHandle cnn;..
1ac70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acc0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
1acd0 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
1ace0 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
1acf0 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75 70  Ptr(SQLiteBackup
1ad00 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a  Handle backup)..
1ad10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ad20 20 20 20 20 20 20 20 69 66 20 28 62 61 63 6b 75         if (backu
1ad30 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  p != null)..    
1ad40 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
1ad50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ad60 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
1ad70 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1ad80 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29  backup.syncRoot)
1ad90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1ada0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1adc0 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e 68   return backup.h
1add0 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
1ade0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1adf0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1ae00 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
1ae10 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
1ae20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ae30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1ae80 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
1ae90 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53  teBackupHandle(S
1aea0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
1aeb0 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
1aec0 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20  r backup)..     
1aed0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
1aee0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1aef0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1af00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1af10 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1af20 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1af30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1af40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1af50 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
1af60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af70 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75 70  SetHandle(backup
1af80 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1af90 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
1afa0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1aff0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
1b000 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  te SQLiteBackupH
1b010 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
1b020 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
1b030 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1b040 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
1b050 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
1b060 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
1b070 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ncrement(..     
1b080 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
1b090 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1b0a0 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ds.backupCount);
1b0b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1b0c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1b0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b110 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1b120 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
1b130 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
1b140 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
1b150 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b160 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1b170 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
1b180 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1b190 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
1b1a0 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
1b1b0 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
1b1c0 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
1b1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b1e0 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
1b1f0 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
1b200 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1b210 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
1b220 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
1b230 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1b240 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
1b250 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28  se.FinishBackup(
1b260 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
1b270 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
1b280 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
1b290 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
1b2a0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1b2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b2c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1b2d0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
1b2e0 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
1b2f0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
1b300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1b310 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30  FinishBackup: {0
1b320 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
1b330 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
1b340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b350 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1b360 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
1b370 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1b380 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1b390 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
1b3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1b3b0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1b3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b3d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1b3e0 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
1b3f0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
1b400 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1b410 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b430 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
1b440 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68  ishBackup(cnn, h
1b450 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
1b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b470 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
1b480 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
1b490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1b4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b4b0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20   }..#endif..#if 
1b4c0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
1b4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1b4e0 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
1b4f0 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
1b500 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e            ref Un
1b510 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1b520 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d  s.backupCount);.
1b530 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
1b540 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
1b550 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
1b560 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1b570 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
1b580 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
1b590 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
1b5a0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1b5b0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
1b5c0 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
1b5d0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
1b5e0 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
1b5f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1b600 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
1b610 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
1b620 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
1b630 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
1b640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b650 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1b660 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
1b670 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
1b680 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1b690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6a0 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20   "FinishBackup: 
1b6b0 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20  {0}, exception: 
1b6c0 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
1b6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
1b6e0 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74  andle, e)); /* t
1b6f0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
1b700 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1b710 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1b720 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
1b730 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b740 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1b750 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1b760 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
1b770 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
1b780 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1b790 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b7a0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
1b7b0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
1b7c0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
1b7d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1b7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7f0 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e     SetHandleAsIn
1b800 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20  valid();..      
1b810 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1b820 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
1b830 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
1b840 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1b850 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
1b860 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
1b870 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
1b880 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1b890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b8d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43  ///////....#if C
1b8e0 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
1b8f0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
1b900 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d  WasReleasedOk().
1b910 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1b920 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
1b930 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
1b940 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
1b950 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66         ref Unsaf
1b960 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 62  eNativeMethods.b
1b970 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20  ackupCount);..  
1b980 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1b990 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
1b9f0 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
1ba00 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
1ba10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ba20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
1ba30 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
1ba40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ba50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
1ba60 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1ba70 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
1ba80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ba90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1baa0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
1bab0 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
1bac0 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
1bad0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1bae0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1baf0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1bb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
1bb50 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
1bb60 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
1bb70 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
1bb80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1bb90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1bba0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1bbb0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1bbc0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
1bbd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1bbf0 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
1bc00 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
1bc10 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1bc20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
1bc30 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
1bc40 6e 0d 0a 7d 0d 0a                                n..}..