System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact e7b5f38009e948d7975571ae74a50dcfa21d1556:


0000: ef bb bf 2f 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 2a 2a 2a 0d 0a 20 2a  ************.. *
0040: 20 41 44 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74   ADO.NET 2.0 Dat
0050: 61 20 50 72 6f 76 69 64 65 72 20 66 6f 72 20 53  a Provider for S
0060: 51 4c 69 74 65 20 56 65 72 73 69 6f 6e 20 33 2e  QLite Version 3.
0070: 58 0d 0a 20 2a 20 57 72 69 74 74 65 6e 20 62 79  X.. * Written by
0080: 20 52 6f 62 65 72 74 20 53 69 6d 70 73 6f 6e 20   Robert Simpson 
0090: 28 72 6f 62 65 72 74 40 62 6c 61 63 6b 63 61 73  (robert@blackcas
00a0: 74 6c 65 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a  tlesoft.com).. *
00b0: 20 0d 0a 20 2a 20 52 65 6c 65 61 73 65 64 20 74   .. * Released t
00c0: 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d  o the public dom
00d0: 61 69 6e 2c 20 75 73 65 20 61 74 20 79 6f 75 72  ain, use at your
00e0: 20 6f 77 6e 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a   own 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 2a 2a 2a 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70  *****/....namesp
0130: 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  ace System.Data.
0140: 53 51 4c 69 74 65 0d 0a 7b 0d 0a 20 20 75 73 69  SQLite..{..  usi
0150: 6e 67 20 53 79 73 74 65 6d 3b 0d 0a 20 20 75 73  ng System;..  us
0160: 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c 6f 62 61  ing System.Globa
0170: 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66  lization;....#if
0180: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
0190: 20 26 26 20 28 54 52 41 43 45 5f 50 52 45 4c 4f   && (TRACE_PRELO
01a0: 41 44 20 7c 7c 20 54 52 41 43 45 5f 48 41 4e 44  AD || TRACE_HAND
01b0: 4c 45 29 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  LE)..  using Sys
01c0: 74 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63 73 3b  tem.Diagnostics;
01d0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
01e0: 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c  PRELOAD_NATIVE_L
01f0: 49 42 52 41 52 59 0d 0a 20 20 75 73 69 6e 67 20  IBRARY..  using 
0200: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
0210: 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 20 20 75  ns.Generic;..  u
0220: 73 69 6e 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d  sing System.IO;.
0230: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0240: 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e  Reflection;..#en
0250: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
0260: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
0270: 45 57 4f 52 4b 20 26 26 20 21 44 45 42 55 47 0d  EWORK && !DEBUG.
0280: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0290: 53 65 63 75 72 69 74 79 3b 0d 0a 23 65 6e 64 69  Security;..#endi
02a0: 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  f....  using Sys
02b0: 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65  tem.Runtime.Inte
02c0: 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 0d 0a  ropServices;....
02d0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
02e0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
02f0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 54    using System.T
0300: 68 72 65 61 64 69 6e 67 3b 0d 0a 23 65 6e 64 69  hreading;..#endi
0310: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
0320: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
0330: 4f 52 4b 20 26 26 20 21 44 45 42 55 47 0d 0a 20  ORK && !DEBUG.. 
0340: 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61   [SuppressUnmana
0350: 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d  gedCodeSecurity]
0360: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65  ..#endif..  inte
0370: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
0380: 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  s UnsafeNativeMe
0390: 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20  thods..  {..    
03a0: 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f 6e    #region Option
03b0: 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74 65  al Native SQLite
03c0: 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f 61   Library Pre-Loa
03d0: 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20 20  ding Code..     
03e0: 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
03f0: 54 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c 6f  TE: If we are lo
0400: 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73 74  oking for the st
0410: 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44 4c  andard SQLite DL
0420: 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c 22  L ("sqlite3.dll"
0430: 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  ),..      //    
0440: 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20 44     the interop D
0450: 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74 65  LL ("SQLite.Inte
0460: 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77 65  rop.dll"), or we
0470: 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20   are running on 
0480: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
0490: 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74      .NET Compact
04a0: 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20 73   Framework, we s
04b0: 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74 68  hould include th
04c0: 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69 66  is code (only if
04d0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
04e0: 20 20 20 20 20 66 65 61 74 75 72 65 20 68 61 73       feature has
04f0: 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20 65   actually been e
0500: 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20 63  nabled).  This c
0510: 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f 74  ode would be tot
0520: 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20  ally..      //  
0530: 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20 69       redundant i
0540: 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68 61  f this module ha
0550: 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20 69  s been bundled i
0560: 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f  nto the mixed-mo
0570: 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  de..      //    
0580: 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20     assembly...  
0590: 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c 49      //..#if SQLI
05a0: 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55  TE_STANDARD || U
05b0: 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c  SE_INTEROP_DLL |
05c0: 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  | PLATFORM_COMPA
05d0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a 20  CTFRAMEWORK.... 
05e0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f       //..      /
05f0: 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f 6d  / NOTE: Only com
0600: 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74 69  pile in the nati
0610: 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
0620: 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68 65 20  oad code if the 
0630: 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20 2f  feature..      /
0640: 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65 6e  /       has been
0650: 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68 69   enabled for thi
0660: 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20 20  s build...      
0670: 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  //..#if PRELOAD_
0680: 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
0690: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
06a0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
06b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
06c0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
06d0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  he name of the e
06e0: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
06f0: 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ble containing t
0700: 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  he processor..  
0710: 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63      /// architec
0720: 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72  ture of the curr
0730: 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
0740: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0750: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
0760: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
0770: 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53 53  y string PROCESS
0780: 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20  OR_ARCHITECTURE 
0790: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50 52  =..          "PR
07a0: 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
07b0: 54 55 52 45 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a  TURE";..#endif..
07c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
07d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0810: 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61  /....      priva
0820: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
0830: 6c 79 20 73 74 72 69 6e 67 20 44 6c 6c 46 69 6c  ly string DllFil
0840: 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 64  eExtension = ".d
0850: 6c 6c 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ll";....      //
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
08a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
08b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
08c0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
08d0: 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74  the P/Invoke met
08e0: 68 6f 64 20 74 68 61 74 20 77 72 61 70 73 20 74  hod that wraps t
08f0: 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20  he native Win32 
0900: 4c 6f 61 64 4c 69 62 72 61 72 79 0d 0a 20 20 20  LoadLibrary..   
0910: 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
0920: 20 20 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64    See the MSDN d
0930: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
0940: 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e   full details on
0950: 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20   what it..      
0960: 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20  /// does...     
0970: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0980: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
0990: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
09a0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
09b0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78  e name of the ex
09c0: 65 63 75 74 61 62 6c 65 20 6c 69 62 72 61 72 79  ecutable library
09d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
09e0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
09f0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
0a00: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
0a10: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75   module handle u
0a20: 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d  pon success -OR-
0a30: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20   IntPtr.Zero on 
0a40: 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
0a50: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
0a60: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
0a70: 28 22 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 20 20  ("kernel32",..  
0a80: 20 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67 43          CallingC
0a90: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
0aa0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69  ingConvention.Wi
0ab0: 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d 20  napi, CharSet = 
0ac0: 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23  CharSet.Auto,..#
0ad0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
0ae0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
0af0: 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69 74           BestFit
0b00: 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c  Mapping = false,
0b10: 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62   ThrowOnUnmappab
0b20: 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a  leChar = true,..
0b30: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
0b40: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d    SetLastError =
0b50: 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 70   true)]..      p
0b60: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65 78  rivate static ex
0b70: 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64  tern IntPtr Load
0b80: 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67 20 66  Library(string f
0b90: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
0ba0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0bb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
0bc0: 20 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f   lock is used to
0bd0: 20 70 72 6f 74 65 63 74 20 74 68 65 20 73 74 61   protect the sta
0be0: 74 69 63 20 5f 53 51 4c 69 74 65 4d 6f 64 75 6c  tic _SQLiteModul
0bf0: 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  e and..      ///
0c00: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
0c10: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
0c20: 66 69 65 6c 64 73 2c 20 62 65 6c 6f 77 2e 0d 0a  fields, below...
0c30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0c40: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
0c50: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
0c60: 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69  nly object stati
0c70: 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20  cSyncRoot = new 
0c80: 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20  object();....   
0c90: 20 20 20 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 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
0ce0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0cf0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 74 6f  >..      /// Sto
0d00: 72 65 73 20 74 68 65 20 6d 61 70 70 69 6e 67 73  res the mappings
0d10: 20 62 65 74 77 65 65 6e 20 70 72 6f 63 65 73 73   between process
0d20: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
0d30: 6e 61 6d 65 73 20 61 6e 64 20 70 6c 61 74 66 6f  names and platfo
0d40: 72 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61  rm..      /// na
0d50: 6d 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  mes...      /// 
0d60: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0d70: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0d80: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
0d90: 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 72 6f 63  ng, string> proc
0da0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
0db0: 65 50 6c 61 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20  ePlatforms;.... 
0dc0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
0dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
0e10: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0e20: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
0e30: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
0e40: 20 68 61 6e 64 6c 65 20 66 6f 72 20 74 68 65 20   handle for the 
0e50: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
0e60: 62 72 61 72 79 20 6f 72 20 74 68 65 20 76 61 6c  brary or the val
0e70: 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e  ue..      /// In
0e80: 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20  tPtr.Zero...    
0e90: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0ea0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
0eb0: 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 5f 53  static IntPtr _S
0ec0: 51 4c 69 74 65 4d 6f 64 75 6c 65 20 3d 20 49 6e  QLiteModule = In
0ed0: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
0ee0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
0f30: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
0f40: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
0f50: 72 20 6e 6f 77 2c 20 74 68 69 73 20 6d 65 74 68  r now, this meth
0f60: 6f 64 20 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20  od simply calls 
0f70: 74 68 65 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d  the Initialize m
0f80: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
0f90: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0fa0: 20 20 20 20 73 74 61 74 69 63 20 55 6e 73 61 66      static Unsaf
0fb0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 28 29  eNativeMethods()
0fc0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
0fd0: 20 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 28       Initialize(
0fe0: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
0ff0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1040: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1050: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
1060: 74 74 65 6d 70 74 73 20 74 6f 20 69 6e 69 74 69  ttempts to initi
1070: 61 6c 69 7a 65 20 74 68 69 73 20 63 6c 61 73 73  alize this class
1080: 20 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20   by pre-loading 
1090: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
10a0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62  e..      /// lib
10b0: 72 61 72 79 20 66 6f 72 20 74 68 65 20 70 72 6f  rary for the pro
10c0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
10d0: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
10e0: 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
10f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1100: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
1110: 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  l static void In
1120: 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20  itialize()..    
1130: 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
1140: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1150: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ORK..          /
1160: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
1170: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 4e 6f  NOTE: If the "No
1180: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 20 65  PreLoadSQLite" e
1190: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
11a0: 62 6c 65 20 69 73 20 73 65 74 2c 20 73 6b 69 70  ble is set, skip
11b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
11c0: 20 20 20 20 20 61 6c 6c 20 6f 75 72 20 73 70 65       all our spe
11d0: 63 69 61 6c 20 63 6f 64 65 20 61 6e 64 20 73 69  cial code and si
11e0: 6d 70 6c 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20  mply return...  
11f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1200: 20 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f        if (Enviro
1210: 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
1220: 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 22 4e 6f  mentVariable("No
1230: 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 29  _PreLoadSQLite")
1240: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1250: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
1260: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1270: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
1280: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
1290: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12a0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 4f 44            // TOD
12c0: 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 69  O: Make sure thi
12d0: 73 20 6c 69 73 74 20 69 73 20 75 70 64 61 74 65  s list is update
12e0: 64 20 69 66 20 74 68 65 20 73 75 70 70 6f 72 74  d if the support
12f0: 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
1300: 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
1310: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
1320: 65 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72 20 70  e names and/or p
1330: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20  latform names.. 
1340: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1350: 20 20 20 20 20 20 63 68 61 6e 67 65 73 2e 0d 0a        changes...
1360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1380: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
1390: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
13a0: 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ms == null)..   
13b0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
13e0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
13f0: 72 65 61 74 65 20 74 68 65 20 6d 61 70 20 6f 66  reate the map of
1400: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
1410: 74 65 63 74 75 72 65 20 6e 61 6d 65 73 0d 0a 20  tecture names.. 
1420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1430: 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 70 6c 61   //       to pla
1440: 74 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73 69 6e  tform names usin
1450: 67 20 61 20 63 61 73 65 2d 69 6e 73 65 6e 73 69  g a case-insensi
1460: 74 69 76 65 20 73 74 72 69 6e 67 0d 0a 20 20 20  tive string..   
1470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1480: 2f 20 20 20 20 20 20 20 63 6f 6d 70 61 72 65 72  /       comparer
1490: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14a0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14b0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
14c0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
14d0: 50 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20 20 20  Platforms =..   
14e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f0: 20 20 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72     new Dictionar
1500: 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  y<string, string
1510: 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  >(..            
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
1530: 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64  ringComparer.Ord
1540: 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b  inalIgnoreCase);
1550: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1560: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1570: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
1580: 4f 54 45 3a 20 53 65 74 75 70 20 74 68 65 20 6c  OTE: Setup the l
1590: 69 73 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d 20  ist of platform 
15a0: 6e 61 6d 65 73 20 61 73 73 6f 63 69 61 74 65 64  names associated
15b0: 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 20   with..         
15c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
15d0: 20 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20    the supported 
15e0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
15f0: 65 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20 20  ectures...      
1600: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1620: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
1630: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
1640: 2e 41 64 64 28 22 78 38 36 22 2c 20 22 57 69 6e  .Add("x86", "Win
1650: 33 32 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  32");..         
1660: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
1670: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
1680: 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44  atforms.Add("AMD
1690: 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20  64", "x64");..  
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
16c0: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41  cturePlatforms.A
16d0: 64 64 28 22 49 41 36 34 22 2c 20 22 49 74 61 6e  dd("IA64", "Itan
16e0: 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ium");..        
16f0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1700: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1710: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55             // BU
1720: 47 42 55 47 3a 20 57 68 61 74 20 61 62 6f 75 74  GBUG: What about
1730: 20 6f 74 68 65 72 20 61 70 70 6c 69 63 61 74 69   other applicati
1740: 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20  on domains?..   
1750: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1760: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1770: 28 5f 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 3d  (_SQLiteModule =
1780: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
1790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17a0: 20 20 5f 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20    _SQLiteModule 
17b0: 3d 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44  = PreLoadSQLiteD
17c0: 6c 6c 28 6e 75 6c 6c 2c 20 6e 75 6c 6c 29 3b 0d  ll(null, null);.
17d0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
17e0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
17f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1830: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
1840: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1850: 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
1860: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
1870: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
1880: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 61  of the current a
1890: 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20  pplication..    
18a0: 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20    /// domain... 
18b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
18c0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
18d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
18e0: 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69 72  /// The base dir
18f0: 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 63  ectory for the c
1900: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
1910: 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e  on domain -OR- n
1920: 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20  ull if it..     
1930: 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64   /// cannot be d
1940: 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
1950: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1960: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1970: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
1980: 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28 29  tBaseDirectory()
1990: 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21  ..      {..#if !
19a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
19b0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
19c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
19d0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
19e0: 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
19f0: 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79 22  e_BaseDirectory"
1a00: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
1a10: 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  iable..         
1a20: 20 2f 2f 20 20 20 20 20 20 20 69 73 20 73 65 74   //       is set
1a30: 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69  , use it verbati
1a40: 6d 20 66 6f 72 20 74 68 65 20 62 61 73 65 20 64  m for the base d
1a50: 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20  irectory...     
1a60: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1a70: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
1a80: 6f 72 79 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  ory = Environmen
1a90: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
1aa0: 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
1ab0: 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61           "PreLoa
1ac0: 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65  dSQLite_BaseDire
1ad0: 63 74 6f 72 79 22 29 3b 0d 0a 0d 0a 20 20 20 20  ctory");....    
1ae0: 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74        if (direct
1af0: 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory != null)..  
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1b10: 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 0d  rn directory;...
1b20: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1b30: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1b40: 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c  : Otherwise, fal
1b50: 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74  lback on using t
1b60: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
1b70: 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  y of the..      
1b80: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75 72      //       cur
1b90: 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
1ba0: 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20   domain...      
1bb0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1bc0: 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d 61    return AppDoma
1bd0: 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e  in.CurrentDomain
1be0: 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b 0d  .BaseDirectory;.
1bf0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1c00: 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d    Assembly assem
1c10: 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47  bly = Assembly.G
1c20: 65 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d  etExecutingAssem
1c30: 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  bly();....      
1c40: 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79      if (assembly
1c50: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1c60: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1c70: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
1c80: 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20     AssemblyName 
1c90: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61  assemblyName = a
1ca0: 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28  ssembly.GetName(
1cb0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1cc0: 69 66 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65  if (assemblyName
1cd0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1ce0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1cf0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
1d00: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1d10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d20: 20 20 20 72 65 74 75 72 6e 20 50 61 74 68 2e 47     return Path.G
1d30: 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28  etDirectoryName(
1d40: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f 64  assemblyName.Cod
1d50: 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  eBase);..       
1d60: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1d70: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1d80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1d90: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
1da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
1db0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
1dc0: 6e 20 6e 75 6c 6c 3b 0d 0a 23 65 6e 64 69 66 0d  n null;..#endif.
1dd0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
1de0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1e30: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1e40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65  ..      /// Dete
1e50: 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 64 79  rmines if the dy
1e60: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
1e70: 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72 65 71  ry file name req
1e80: 75 69 72 65 73 20 61 20 73 75 66 66 69 78 0d 0a  uires a suffix..
1e90: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64        /// and ad
1ea0: 64 73 20 69 74 20 69 66 20 6e 65 63 65 73 73 61  ds it if necessa
1eb0: 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
1ec0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1ed0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1ee0: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
1ef0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67      /// The orig
1f00: 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e  inal dynamic lin
1f10: 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
1f20: 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d  ame to inspect..
1f30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
1f40: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
1f50: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1f60: 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69 63 20  /// The dynamic 
1f70: 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c  link library fil
1f80: 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79  e name, possibly
1f90: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69 6e 63   modified to inc
1fa0: 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f  lude an..      /
1fb0: 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20  // extension... 
1fc0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1fd0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
1fe0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
1ff0: 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
2000: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
2010: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20  ring fileName.. 
2020: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2030: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
2040: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
2050: 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d  lOrEmpty(fileNam
2060: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
2070: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2080: 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66  PlatformID platf
2090: 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d  ormId = Environm
20a0: 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c  ent.OSVersion.Pl
20b0: 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20  atform;....     
20c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70 6c           if ((pl
20d0: 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74  atformId == Plat
20e0: 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53 29 20 7c  formID.Win32S) |
20f0: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
2100: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
2110: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
2120: 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d  in32Windows) ||.
2130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2140: 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d     (platformId =
2150: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
2160: 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20  32NT) ||..      
2170: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
2180: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
2190: 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20  ormID.WinCE)).. 
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
21b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c0: 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e    if (!fileName.
21d0: 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65  EndsWith(DllFile
21e0: 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20  Extension,..    
21f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2200: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
2210: 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
2220: 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20  noreCase))..    
2230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2250: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
2260: 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65  leName + DllFile
2270: 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20  Extension;..    
2280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
22a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
22b0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
22c0: 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  n fileName;..   
22d0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
22e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f  ///////..      /
2330: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2340: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
2350: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
2360: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
2370: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
2380: 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
2390: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
23a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
23b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
23c0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
23d0: 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
23e0: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
23f0: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
2400: 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  s -OR- null if i
2410: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  t..      /// can
2420: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
2430: 64 2e 20 20 41 6c 77 61 79 73 20 72 65 74 75 72  d.  Always retur
2440: 6e 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  ns an empty stri
2450: 6e 67 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20  ng when running 
2460: 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  on..      /// th
2470: 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46  e .NET Compact F
2480: 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20  ramework...     
2490: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
24a0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
24b0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
24c0: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
24d0: 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20 20 7b  cture()..      {
24e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
24f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2500: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
2510: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2520: 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f  E: If the "PreLo
2530: 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73  adSQLite_Process
2540: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 20  orArchitecture" 
2550: 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
2560: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2570: 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 2c  variable is set,
2580: 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d   use it verbatim
2590: 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
25a0: 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
25b0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
25c0: 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
25d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
25e0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
25f0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
2600: 72 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  re = Environment
2610: 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  .GetEnvironmentV
2620: 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20  ariable(..      
2630: 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
2640: 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72  SQLite_Processor
2650: 41 72 63 68 69 74 65 63 74 75 72 65 22 29 3b 0d  Architecture");.
2660: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
2670: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
2680: 65 63 74 75 72 65 20 21 3d 20 6e 75 6c 6c 29 0d  ecture != null).
2690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
26a0: 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41  eturn processorA
26b0: 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 0d 0a  rchitecture;....
26c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
26d0: 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55          // BUGBU
26e0: 47 3a 20 57 69 6c 6c 20 74 68 69 73 20 61 6c 77  G: Will this alw
26f0: 61 79 73 20 62 65 20 72 65 6c 69 61 62 6c 65 3f  ays be reliable?
2700: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
2710: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2720: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74   Environment.Get
2730: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
2740: 62 6c 65 28 50 52 4f 43 45 53 53 4f 52 5f 41 52  ble(PROCESSOR_AR
2750: 43 48 49 54 45 43 54 55 52 45 29 3b 0d 0a 23 65  CHITECTURE);..#e
2760: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lse..          /
2770: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
2780: 42 55 47 42 55 47 3a 20 4e 6f 20 77 61 79 20 74  BUGBUG: No way t
2790: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 69 73  o determine this
27a0: 20 76 61 6c 75 65 20 6f 6e 20 74 68 65 20 2e 4e   value on the .N
27b0: 45 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20  ET Compact..    
27c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20        //        
27d0: 20 46 72 61 6d 65 77 6f 72 6b 20 28 72 75 6e 6e   Framework (runn
27e0: 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73 20 43  ing on Windows C
27f0: 45 2c 20 65 74 63 29 2e 0d 0a 20 20 20 20 20 20  E, etc)...      
2800: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2810: 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
2820: 45 6d 70 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Empty;..#endif..
2830: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2840: 20 2f 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 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
2890: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
28a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e  .      /// Given
28b0: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
28c0: 72 63 68 69 74 65 63 74 75 72 65 2c 20 72 65 74  rchitecture, ret
28d0: 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  urns the name of
28e0: 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a   the platform...
28f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2900: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2910: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
2920: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
2930: 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re">..      /// 
2940: 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
2950: 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 62 65  chitecture to be
2960: 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61   translated to a
2970: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d   platform name..
2980: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
2990: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
29a0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
29b0: 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d  /// The platform
29c0: 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70   name for the sp
29d0: 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
29e0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 2d  r architecture -
29f0: 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20  OR- null..      
2a00: 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74  /// if it cannot
2a10: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
2a20: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
2a30: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
2a40: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
2a50: 6e 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ng GetPlatformNa
2a60: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  me(..          s
2a70: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
2a80: 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20  rchitecture..   
2a90: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2aa0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
2ab0: 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
2ac0: 45 6d 70 74 79 28 70 72 6f 63 65 73 73 6f 72 41  Empty(processorA
2ad0: 72 63 68 69 74 65 63 74 75 72 65 29 29 0d 0a 20  rchitecture)).. 
2ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2af0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
2b00: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
2b10: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
2b20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b30: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
2b40: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
2b50: 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e  rePlatforms == n
2b60: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2b70: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
2b80: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
2b90: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61        string pla
2ba0: 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  tformName;....  
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2bc0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
2bd0: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 54  cturePlatforms.T
2be0: 72 79 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20  ryGetValue(..   
2bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c00: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
2c10: 69 74 65 63 74 75 72 65 2c 20 6f 75 74 20 70 6c  itecture, out pl
2c20: 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20 20  atformName))..  
2c30: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c50: 20 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d   return platform
2c60: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
2c70: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2c80: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2c90: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
2ca0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
2d00: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2d10: 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
2d20: 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e  ts to load the n
2d30: 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
2d40: 72 61 72 79 20 62 61 73 65 64 20 6f 6e 20 74 68  rary based on th
2d50: 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  e specified..   
2d60: 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79     /// directory
2d70: 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 20 61   and processor a
2d80: 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
2d90: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2da0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
2db0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 72 65 63  aram name="direc
2dc0: 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  tory">..      //
2dd0: 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63  / The base direc
2de0: 74 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c  tory to use, nul
2df0: 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74  l for default (t
2e00: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
2e10: 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  y of..      /// 
2e20: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
2e30: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e  ication domain).
2e40: 20 20 54 68 69 73 20 64 69 72 65 63 74 6f 72 79    This directory
2e50: 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20   should contain 
2e60: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  the..      /// p
2e70: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
2e80: 63 74 75 72 65 20 73 70 65 63 69 66 69 63 20 73  cture specific s
2e90: 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d  ub-directories..
2ea0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
2eb0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
2ec0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63  param name="proc
2ed0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
2ee0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
2ef0: 68 65 20 72 65 71 75 65 73 74 65 64 20 70 72 6f  he requested pro
2f00: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
2f10: 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65  ure, null for de
2f20: 66 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20  fault (the..    
2f30: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20    /// processor 
2f40: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
2f50: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
2f60: 65 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c  ess).  This call
2f70: 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20  er should..     
2f80: 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61   /// almost alwa
2f90: 79 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20  ys specify null 
2fa0: 66 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65 74  for this paramet
2fb0: 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  er...      /// <
2fc0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
2fd0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2fe0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
2ff0: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
3000: 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20   as returned by 
3010: 4c 6f 61 64 4c 69 62 72 61 72 79 20 2d 4f 52 2d  LoadLibrary -OR-
3020: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 0d 0a 20 20   IntPtr.Zero..  
3030: 20 20 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 6c      /// if the l
3040: 6f 61 64 69 6e 67 20 66 61 69 6c 73 20 66 6f 72  oading fails for
3050: 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20   any reason...  
3060: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
3070: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
3080: 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20  e static IntPtr 
3090: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c  PreLoadSQLiteDll
30a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
30b0: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a  ing directory,..
30c0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
30d0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
30e0: 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20  ecture..        
30f0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
3100: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3110: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
3120: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
3130: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69  base directory i
3140: 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20  s null, use the 
3150: 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20  default...      
3160: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3170: 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
3180: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
3190: 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
31a0: 79 20 3d 20 47 65 74 42 61 73 65 44 69 72 65 63  y = GetBaseDirec
31b0: 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tory();....     
31c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
31d0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
31e0: 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
31f0: 79 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  y the base direc
3200: 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  tory, stop now..
3210: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
3220: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
3230: 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
3240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
3250: 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
3260: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
3270: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
3280: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 6e 61   NOTE: If the na
3290: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
32a0: 61 72 79 20 65 78 69 73 74 73 20 69 6e 20 74 68  ary exists in th
32b0: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
32c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
32d0: 20 20 20 20 20 69 74 73 65 6c 66 2c 20 73 74 6f       itself, sto
32e0: 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
32f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3300: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20  string fileName 
3310: 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61  = FixUpDllFileNa
3320: 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28  me(Path.Combine(
3330: 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
3340: 20 20 20 20 20 20 20 20 20 20 53 51 4c 49 54 45            SQLITE
3350: 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  _DLL));....     
3360: 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
3370: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
3380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
3390: 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
33a0: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
33b0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
33c0: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
33d0: 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
33e0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69  r architecture i
33f0: 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d  s null, use the.
3400: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
3410: 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20      default...  
3420: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3430: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
3440: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
3450: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
3460: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
3470: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
3480: 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
3490: 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
34a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
34b0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
34c0: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
34d0: 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73  query the proces
34e0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
34f0: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
3500: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
3510: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
3520: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
3530: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
3540: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
3550: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
3560: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3570: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
3580: 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61  uild the full pa
3590: 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
35a0: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
35b0: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
35c0: 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61    //       libra
35d0: 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f  ry using the pro
35e0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
35f0: 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ure name...     
3600: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3610: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69     fileName = Fi
3620: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50  xUpDllFileName(P
3630: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68  ath.Combine(Path
3640: 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f  .Combine(directo
3650: 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry,..           
3660: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
3670: 69 74 65 63 74 75 72 65 29 2c 20 53 51 4c 49 54  itecture), SQLIT
3680: 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20  E_DLL));....    
3690: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
36a0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
36b0: 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61  the file name ba
36c0: 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65  sed on the proce
36d0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
36e0: 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e name..        
36f0: 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e    // is not foun
3700: 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65  d, try using the
3710: 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74   associated plat
3720: 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
3730: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
3740: 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
3750: 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
3760: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
3770: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
3780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3790: 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
37a0: 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20  o translate the 
37b0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
37c0: 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20  ecture to a..   
37d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
37e0: 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d      platform nam
37f0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
3800: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3810: 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66      string platf
3820: 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61  ormName = GetPla
3830: 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73  tformName(proces
3840: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
3850: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3860: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3870: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
3880: 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72   we failed to tr
3890: 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74  anslate the plat
38a0: 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20  form name, stop 
38b0: 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
38c0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
38d0: 20 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f        if (platfo
38e0: 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  rmName == null).
38f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3900: 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
3910: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
3920: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3930: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
3940: 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c  E: Build the ful
3950: 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20  l path and file 
3960: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
3970: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
3980: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
3990: 20 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67     library using
39a0: 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   the platform na
39b0: 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me...           
39c0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
39d0: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
39e0: 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
39f0: 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 50 61  (Path.Combine(Pa
3a00: 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63  th.Combine(direc
3a10: 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
3a20: 20 20 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72           platfor
3a30: 6d 4e 61 6d 65 29 2c 20 53 51 4c 49 54 45 5f 44  mName), SQLITE_D
3a40: 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  LL));....       
3a50: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
3a60: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
3a70: 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f  : If the file do
3a80: 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b  es not exist, sk
3a90: 69 70 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61  ip trying to loa
3aa0: 64 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  d it...         
3ab0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3ac0: 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
3ad0: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
3ae0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
3af0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
3b00: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
3b10: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3b20: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
3b30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3b40: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3b50: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
3b60: 68 6f 77 20 65 78 61 63 74 6c 79 20 77 68 65 72  how exactly wher
3b70: 65 20 77 65 20 61 72 65 20 74 72 79 69 6e 67 20  e we are trying 
3b80: 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69  to load the nati
3b90: 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
3ba0: 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74    //       SQLit
3bb0: 65 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d  e library from..
3bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3bd0: 2f 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  /..#if !NET_COMP
3be0: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
3bf0: 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20  PRELOAD..       
3c00: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
3c10: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
3c20: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
3c30: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
3c40: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
3c50: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
3c60: 20 20 20 20 20 20 20 20 22 54 72 79 69 6e 67 20          "Trying 
3c70: 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 53  to load native S
3c80: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22  QLite library \"
3c90: 7b 30 7d 5c 22 2e 2e 2e 22 2c 0d 0a 20 20 20 20  {0}\"...",..    
3ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
3cb0: 6c 65 4e 61 6d 65 29 29 3b 0d 0a 23 65 6e 64 69  leName));..#endi
3cc0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
3cd0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3ce0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
3cf0: 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74 68  tempt to load th
3d00: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
3d10: 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65 69 74  .  This will eit
3d20: 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  her..           
3d30: 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75     //       retu
3d40: 72 6e 20 61 20 76 61 6c 69 64 20 6e 61 74 69 76  rn a valid nativ
3d50: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 2c  e module handle,
3d60: 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
3d70: 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ero,..          
3d80: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72 20      //       or 
3d90: 74 68 72 6f 77 20 61 6e 20 65 78 63 65 70 74 69  throw an excepti
3da0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on...           
3db0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3dc0: 20 20 20 20 20 72 65 74 75 72 6e 20 4c 6f 61 64       return Load
3dd0: 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61 6d 65  Library(fileName
3de0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
3df0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
3e00: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50 52  T_20 && TRACE_PR
3e10: 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20  ELOAD..         
3e20: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
3e30: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
3e40: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
3e50: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
3e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
3e70: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
3e80: 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
3e90: 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  OAD..           
3ea0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
3eb0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3ec0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
3ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ee0: 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c   // NOTE: First,
3ef0: 20 67 72 61 62 20 74 68 65 20 6c 61 73 74 20 57   grab the last W
3f00: 69 6e 33 32 20 65 72 72 6f 72 20 6e 75 6d 62 65  in32 error numbe
3f10: 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
3f20: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
3f30: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
3f40: 6c 61 73 74 45 72 72 6f 72 20 3d 20 4d 61 72 73  lastError = Mars
3f50: 68 61 6c 2e 47 65 74 4c 61 73 74 57 69 6e 33 32  hal.GetLastWin32
3f60: 45 72 72 6f 72 28 29 3b 0d 0a 0d 0a 20 20 20 20  Error();....    
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3f80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3f90: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
3fa0: 77 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65  w where we faile
3fb0: 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  d to load the na
3fc0: 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
3fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
3fe0: 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
3ff0: 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20  from along with 
4000: 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20  the Win32 error 
4010: 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  code and..      
4020: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
4030: 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69       exception i
4040: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20  nformation...   
4050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4060: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4070: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
4080: 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
4090: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
40a0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
40b0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
40c0: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
40d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
40e0: 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 6e 61  ailed to load na
40f0: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
4100: 61 72 79 20 5c 22 7b 30 7d 5c 22 20 22 20 2b 0d  ary \"{0}\" " +.
4110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4120: 20 20 20 20 20 20 20 22 28 67 65 74 4c 61 73 74         "(getLast
4130: 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20 7b 32  Error = {1}): {2
4140: 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
4150: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
4160: 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72 2c 20  ame, lastError, 
4170: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
4180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4190: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
41a0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
41b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
41c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
41d0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
41e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
41f0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
4200: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
4210: 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
4220: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
4230: 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  f..#endif..     
4240: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
4250: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
42a0: 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54  ..#if !SQLITE_ST
42b0: 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 55  ANDARD....#if !U
42c0: 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a  SE_INTEROP_DLL..
42d0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
42e0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
42f0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63 6f  ..    private co
4300: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
4310: 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e  E_DLL = "System.
4320: 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22  Data.SQLite.dll"
4330: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 69 6e  ;..#else..    in
4340: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72  ternal const str
4350: 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
4360: 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70   "SQLite.Interop
4370: 2e 30 38 32 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64  .082.dll";..#end
4380: 69 66 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43  if // PLATFORM_C
4390: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
43a0: 0a 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 70 72  ...#else..    pr
43b0: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
43c0: 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
43d0: 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
43e0: 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 20 2f 2f  dll";..#endif //
43f0: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
4400: 0d 0a 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 70  ....#else..    p
4410: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
4420: 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
4430: 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6e   "sqlite3";..#en
4440: 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68  dif....    // Th
4450: 69 73 20 73 65 63 74 69 6f 6e 20 75 73 65 73 20  is section uses 
4460: 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20 74 68  interop calls th
4470: 61 74 20 61 6c 73 6f 20 66 65 74 63 68 20 74 65  at also fetch te
4480: 78 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74  xt length to opt
4490: 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e  imize conversion
44a0: 2e 20 20 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e  .  ..    // When
44b0: 20 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64   using the stand
44c0: 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20  ard dll, we can 
44d0: 72 65 70 6c 61 63 65 20 74 68 65 73 65 20 63 61  replace these ca
44e0: 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20  lls with normal 
44f0: 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61 6e 64  sqlite calls and
4500: 20 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e 6f   ..    // do uno
4510: 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72 73  ptimized convers
4520: 69 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66 74  ions instead aft
4530: 65 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72 65  erwards..    #re
4540: 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64  gion interop add
4550: 65 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63 61  ed textlength ca
4560: 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49  lls....#if !SQLI
4570: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
4580: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
4590: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
45a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
45b0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
45c0: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
45d0: 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  eter_name_intero
45e0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
45f0: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
4600: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
4610: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4620: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
4630: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4640: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
4650: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
4660: 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  e_name_interop(I
4670: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
4680: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
4690: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
46a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
46b0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
46c0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
46d0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
46e0: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
46f0: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
4700: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
4710: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
4720: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
4730: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
4740: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
4750: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
4760: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
4770: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e  lumn_decltype_in
4780: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
4790: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
47a0: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
47b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
47c0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
47d0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
47e0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
47f0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63  lite3_column_dec
4800: 6c 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70 28  ltype16_interop(
4810: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
4820: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
4830: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
4840: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
4850: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
4860: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
4870: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
4880: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65  column_name_inte
4890: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
48a0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20   int index, out 
48b0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
48c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
48d0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
48e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
48f0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
4900: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
4910: 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
4920: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
4930: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
4940: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
4950: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
4960: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
4970: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
4980: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
4990: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74  _origin_name_int
49a0: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
49b0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
49c0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
49d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
49e0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
49f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
4a00: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
4a10: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
4a20: 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  in_name16_intero
4a30: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
4a40: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
4a50: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
4a60: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4a70: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
4a80: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4a90: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
4aa0: 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
4ab0: 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
4ac0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
4ad0: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
4ae0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
4af0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
4b00: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
4b10: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
4b20: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
4b30: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 5f  mn_table_name16_
4b40: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
4b50: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
4b60: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
4b70: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
4b80: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
4b90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4ba0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
4bb0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
4bc0: 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ext_interop(IntP
4bd0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
4be0: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
4bf0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
4c00: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
4c10: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
4c20: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
4c30: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
4c40: 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f  mn_text16_intero
4c50: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
4c60: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
4c70: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
4c80: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4c90: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
4ca0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4cb0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
4cc0: 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70  3_errmsg_interop
4cd0: 28 49 6e 74 50 74 72 20 64 62 2c 20 6f 75 74 20  (IntPtr db, out 
4ce0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
4cf0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
4d00: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
4d10: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
4d20: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
4d30: 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70  _prepare_interop
4d40: 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
4d50: 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
4d60: 74 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  tes, out IntPtr 
4d70: 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74 72  stmt, out IntPtr
4d80: 20 70 74 72 52 65 6d 61 69 6e 2c 20 6f 75 74 20   ptrRemain, out 
4d90: 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d  int nRemain);...
4da0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
4db0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
4dc0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4dd0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
4de0: 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d  ite3_table_colum
4df0: 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72  n_metadata_inter
4e00: 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  op(IntPtr db, by
4e10: 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74  te[] dbName, byt
4e20: 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74  e[] tblName, byt
4e30: 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f 75 74  e[] colName, out
4e40: 20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54   IntPtr ptrDataT
4e50: 79 70 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ype, out IntPtr 
4e60: 70 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75 74 20  ptrCollSeq, out 
4e70: 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74  int notNull, out
4e80: 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c   int primaryKey,
4e90: 20 6f 75 74 20 69 6e 74 20 61 75 74 6f 49 6e 63   out int autoInc
4ea0: 2c 20 6f 75 74 20 69 6e 74 20 64 74 4c 65 6e 2c  , out int dtLen,
4eb0: 20 6f 75 74 20 69 6e 74 20 63 73 4c 65 6e 29 3b   out int csLen);
4ec0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
4ed0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
4ee0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
4ef0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
4f00: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
4f10: 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e  _text_interop(In
4f20: 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74 20  tPtr p, out int 
4f30: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
4f40: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
4f50: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
4f60: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
4f70: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
4f80: 76 61 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74  value_text16_int
4f90: 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f  erop(IntPtr p, o
4fa0: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
4fb0: 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49  #endif..// !SQLI
4fc0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
4fd0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
4fe0: 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75  .    // These fu
4ff0: 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69 73  nctions add exis
5000: 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69  ting functionali
5010: 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c  ty on top of SQL
5020: 69 74 65 20 61 6e 64 20 72 65 71 75 69 72 65 20  ite and require 
5030: 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74 20  a little effort 
5040: 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20 77  to..    // get w
5050: 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69 6e  orking when usin
5060: 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53  g the standard S
5070: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a  QLite library...
5080: 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65      #region inte
5090: 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74 69  rop added functi
50a0: 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21  onality....#if !
50b0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
50c0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
50d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
50e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
50f0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
5100: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74  qlite3_close_int
5110: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b  erop(IntPtr db);
5120: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
5130: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5140: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
5150: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
5160: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
5170: 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28  unction_interop(
5180: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
5190: 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
51a0: 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c  Args, int nType,
51b0: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20   IntPtr pvUser, 
51c0: 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66  SQLiteCallback f
51d0: 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62  unc, SQLiteCallb
51e0: 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74  ack fstep, SQLit
51f0: 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66  eFinalCallback f
5200: 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43  final, int needC
5210: 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20  ollSeq);....    
5220: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5230: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
5240: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5250: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
5260: 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70  finalize_interop
5270: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
5280: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5290: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
52a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
52b0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
52c0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72  lite3_open_inter
52d0: 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69  op(byte[] utf8Fi
52e0: 6c 65 6e 61 6d 65 2c 20 69 6e 74 20 66 6c 61 67  lename, int flag
52f0: 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62  s, out IntPtr db
5300: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
5310: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5320: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
5330: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
5340: 74 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  t sqlite3_open16
5350: 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20  _interop(byte[] 
5360: 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 69 6e  utf8Filename, in
5370: 74 20 66 6c 61 67 73 2c 20 6f 75 74 20 49 6e 74  t flags, out Int
5380: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
5390: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
53a0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
53b0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
53c0: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
53d0: 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e  reset_interop(In
53e0: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
53f0: 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
5400: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
5410: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
5420: 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e 64      // The stand
5430: 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71 75  ard api call equ
5440: 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65 20  ivalents of the 
5450: 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63 61  above interop ca
5460: 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  lls..    #region
5470: 20 73 74 61 6e 64 61 72 64 20 76 65 72 73 69 6f   standard versio
5480: 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66 75  ns of interop fu
5490: 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20 53  nctions....#if S
54a0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
54b0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
54c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
54d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
54e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
54f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
5500: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5510: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
5520: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
5530: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
5540: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
5550: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5560: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
5570: 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b  lose(IntPtr db);
5580: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
5590: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
55a0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
55b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
55c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
55d0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
55e0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
55f0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
5600: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5610: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
5620: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
5630: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
5640: 5f 63 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72  _close_v2(IntPtr
5650: 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
5660: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
5670: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
5680: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5690: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
56a0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
56b0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
56c0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
56d0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
56e0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
56f0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5700: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
5710: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
5720: 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ction(IntPtr db,
5730: 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c   byte[] strName,
5740: 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20   int nArgs, int 
5750: 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76  nType, IntPtr pv
5760: 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c  User, SQLiteCall
5770: 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74  back func, SQLit
5780: 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c  eCallback fstep,
5790: 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c   SQLiteFinalCall
57a0: 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d  back ffinal);...
57b0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
57c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
57d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
57e0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
57f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
5800: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
5810: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
5820: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5830: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
5840: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
5850: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5860: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 66 69  n int sqlite3_fi
5870: 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20 73 74  nalize(IntPtr st
5880: 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
5890: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
58a0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
58b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
58c0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
58d0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
58e0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
58f0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
5900: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5910: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
5920: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5930: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
5940: 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74  ite3_open_v2(byt
5950: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
5960: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 2c  , out IntPtr db,
5970: 20 69 6e 74 20 66 6c 61 67 73 2c 20 49 6e 74 50   int flags, IntP
5980: 74 72 20 76 66 73 29 3b 0d 0a 0d 0a 23 69 66 20  tr vfs);....#if 
5990: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
59a0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
59b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
59c0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
59d0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
59e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
59f0: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
5a00: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
5a10: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
5a20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5a30: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
5a40: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
5a50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
5a60: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5a70: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f  rn int sqlite3_o
5a80: 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66 69 6c  pen16(string fil
5a90: 65 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74  eName, out IntPt
5aa0: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
5ab0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
5ac0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
5ad0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5ae0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
5af0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
5b00: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
5b10: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
5b20: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5b30: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
5b40: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5b50: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
5b60: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49 6e 74  qlite3_reset(Int
5b70: 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
5b80: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
5b90: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
5ba0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5bb0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
5bc0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
5bd0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
5be0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
5bf0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5c00: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
5c10: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
5c20: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
5c30: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69  ntPtr sqlite3_bi
5c40: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d  nd_parameter_nam
5c50: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
5c60: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
5c70: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
5c80: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
5c90: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5ca0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
5cb0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
5cc0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
5cd0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
5ce0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5cf0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
5d00: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
5d10: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
5d20: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
5d30: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
5d40: 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
5d50: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
5d60: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
5d70: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
5d80: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5d90: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
5da0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
5db0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
5dc0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
5dd0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5de0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
5df0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
5e00: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
5e10: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
5e20: 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
5e30: 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
5e40: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
5e50: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
5e60: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
5e70: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5e80: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
5e90: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
5ea0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5eb0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
5ec0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
5ed0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
5ee0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
5ef0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5f00: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
5f10: 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
5f20: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
5f30: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
5f40: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
5f50: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
5f60: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5f70: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
5f80: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
5f90: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
5fa0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
5fb0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5fc0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
5fd0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
5fe0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
5ff0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
6000: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28  lumn_decltype16(
6010: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
6020: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
6030: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
6040: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
6050: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6060: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
6070: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
6080: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
6090: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
60a0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
60b0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
60c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
60d0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
60e0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
60f0: 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  mn_name(IntPtr s
6100: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
6110: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
6120: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
6130: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
6140: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
6150: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
6160: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
6170: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
6180: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
6190: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
61a0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
61b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
61c0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
61d0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
61e0: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
61f0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
6200: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
6210: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
6220: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6230: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
6240: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
6250: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
6260: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
6270: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6280: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
6290: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
62a0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
62b0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
62c0: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
62d0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
62e0: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
62f0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6300: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6310: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6320: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6330: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6340: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6350: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6360: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6370: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
6380: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
6390: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
63a0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
63b0: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31  umn_origin_name1
63c0: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
63d0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
63e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
63f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
6400: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6410: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
6420: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
6430: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
6440: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
6450: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6460: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
6470: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
6480: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6490: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
64a0: 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28  lumn_table_name(
64b0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
64c0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
64d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
64e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
64f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6500: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
6510: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
6520: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
6530: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
6540: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6550: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
6560: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6570: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
6580: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
6590: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28  mn_table_name16(
65a0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
65b0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
65c0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
65d0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
65e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
65f0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
6600: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
6610: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
6620: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
6630: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6640: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
6650: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6660: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
6670: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
6680: 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73  mn_text(IntPtr s
6690: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
66a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
66b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
66c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
66d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
66e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
66f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
6700: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
6710: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
6720: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
6730: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
6740: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
6750: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
6760: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31  te3_column_text1
6770: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
6780: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
6790: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
67a0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
67b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
67c0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
67d0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
67e0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
67f0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
6800: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6810: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
6820: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
6830: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6840: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72  ntPtr sqlite3_er
6850: 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62 29 3b  rmsg(IntPtr db);
6860: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
6870: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
6880: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
6890: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
68a0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
68b0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
68c0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
68d0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
68e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
68f0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
6900: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
6910: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
6920: 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74 72 20  _prepare(IntPtr 
6930: 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c  db, IntPtr pSql,
6940: 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f 75 74   int nBytes, out
6950: 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 6f 75   IntPtr stmt, ou
6960: 74 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61  t IntPtr ptrRema
6970: 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  in);....#if !PLA
6980: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6990: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
69a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
69b0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
69c0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
69d0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
69e0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
69f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6a00: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
6a10: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6a20: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
6a30: 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d  ite3_table_colum
6a40: 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74  n_metadata(IntPt
6a50: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
6a60: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
6a70: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
6a80: 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ame, out IntPtr 
6a90: 70 74 72 44 61 74 61 54 79 70 65 2c 20 6f 75 74  ptrDataType, out
6aa0: 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53   IntPtr ptrCollS
6ab0: 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e 6f 74 4e  eq, out int notN
6ac0: 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20 70 72 69  ull, out int pri
6ad0: 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20 69 6e 74  maryKey, out int
6ae0: 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69   autoInc);....#i
6af0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
6b00: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
6b10: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6b20: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
6b30: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
6b40: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
6b50: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
6b60: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6b70: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
6b80: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
6b90: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6ba0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
6bb0: 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20  lue_text(IntPtr 
6bc0: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
6bd0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
6be0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
6bf0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6c00: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
6c10: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
6c20: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
6c30: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
6c40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6c50: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
6c60: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6c70: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
6c80: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
6c90: 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t16(IntPtr p);..
6ca0: 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 53 51 4c  ..#endif..// SQL
6cb0: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
6cc0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
6cd0: 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66  ..    // These f
6ce0: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75 73  unctions are cus
6cf0: 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f 20  tom and have no 
6d00: 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64  equivalent stand
6d10: 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74 68  ard library meth
6d20: 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c 20  od...    // All 
6d30: 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69 63  of them are "nic
6d40: 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64 20  e to haves" and 
6d50: 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20  not necessarily 
6d60: 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22 2e  "need to haves".
6d70: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e 6f  ..    #region no
6d80: 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e   equivalent stan
6d90: 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a 23  dard method....#
6da0: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
6db0: 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ARD....    [DllI
6dc0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6dd0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
6de0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6df0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
6e00: 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 28 49 6e  ntext_collseq(In
6e10: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 6f 75  tPtr context, ou
6e20: 74 20 69 6e 74 20 74 79 70 65 2c 20 6f 75 74 20  t int type, out 
6e30: 69 6e 74 20 65 6e 63 2c 20 6f 75 74 20 69 6e 74  int enc, out int
6e40: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
6e50: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6e60: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
6e70: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6e80: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
6e90: 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72  ntext_collcompar
6ea0: 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
6eb0: 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e 74  , byte[] p1, int
6ec0: 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20 70   p1len, byte[] p
6ed0: 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d 0a  2, int p2len);..
6ee0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6ef0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
6f00: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6f10: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
6f20: 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77  lite3_cursor_row
6f30: 69 64 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  id(IntPtr stmt, 
6f40: 69 6e 74 20 63 75 72 73 6f 72 2c 20 6f 75 74 20  int cursor, out 
6f50: 6c 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a  long rowid);....
6f60: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6f70: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
6f80: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6f90: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
6fa0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d 6e  te3_index_column
6fb0: 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49 6e  _info_interop(In
6fc0: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
6fd0: 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d 20  catalog, byte[] 
6fe0: 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65 5b  IndexName, byte[
6ff0: 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 6f 75  ] ColumnName, ou
7000: 74 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72 2c  t int sortOrder,
7010: 20 6f 75 74 20 69 6e 74 20 6f 6e 45 72 72 6f 72   out int onError
7020: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 43 6f 6c  , out IntPtr Col
7030: 6c 61 74 69 6f 6e 2c 20 6f 75 74 20 69 6e 74 20  lation, out int 
7040: 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  colllen);....   
7050: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7060: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
7070: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7080: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
7090: 33 5f 72 65 73 65 74 61 6c 6c 5f 69 6e 74 65 72  3_resetall_inter
70a0: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
70b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
70c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
70d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
70e0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
70f0: 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73  lite3_table_curs
7100: 6f 72 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  or(IntPtr stmt, 
7110: 69 6e 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c  int db, int tabl
7120: 65 52 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23  eRootPage);....#
7130: 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
7140: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
7150: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7160: 20 20 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20      // Standard 
7170: 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c  API calls global
7180: 20 61 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73   across versions
7190: 2e 20 20 54 68 65 72 65 20 61 72 65 20 61 20 66  .  There are a f
71a0: 65 77 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20  ew instances of 
71b0: 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20  interop calls.. 
71c0: 20 20 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20     // scattered 
71d0: 69 6e 20 68 65 72 65 2c 20 62 75 74 20 74 68 65  in here, but the
71e0: 79 20 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76  y are only activ
71f0: 65 20 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f  e when PLATFORM_
7200: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7210: 20 69 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20   is declared... 
7220: 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64     #region stand
7230: 61 72 64 20 73 71 6c 69 74 65 20 61 70 69 20 63  ard sqlite api c
7240: 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  alls....#if !PLA
7250: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7260: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
7270: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7280: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
7290: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
72a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
72b0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
72c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
72d0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
72e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
72f0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
7300: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
7310: 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  on();....#if !PL
7320: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7330: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7340: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7350: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
7360: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7370: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
7380: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
7390: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
73a0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
73b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
73c0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
73d0: 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69   sqlite3_sourcei
73e0: 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  d();....#if !PLA
73f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7400: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
7410: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7420: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
7430: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
7440: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
7450: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
7460: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7470: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
7480: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
7490: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
74a0: 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69  sqlite3_malloc(i
74b0: 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nt n);....#if !P
74c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
74d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
74e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
74f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7500: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7510: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7520: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7530: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7540: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
7550: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
7560: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
7570: 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f  r sqlite3_reallo
7580: 63 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74 20  c(IntPtr p, int 
7590: 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
75a0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
75b0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
75c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
75d0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
75e0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
75f0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
7600: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
7610: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7620: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
7630: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7640: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
7650: 69 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72  ite3_free(IntPtr
7660: 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
7670: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
7680: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
7690: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
76a0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
76b0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
76c0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
76d0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
76e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
76f0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
7700: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
7710: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
7720: 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
7730: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
7740: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7750: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7760: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7770: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7780: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7790: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
77a0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
77b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
77c0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
77d0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
77e0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
77f0: 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73  long sqlite3_las
7800: 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49  t_insert_rowid(I
7810: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
7820: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7830: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7840: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7850: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7860: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7870: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7880: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7890: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
78a0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
78b0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
78c0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
78d0: 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  nt sqlite3_chang
78e0: 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  es(IntPtr db);..
78f0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7900: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7910: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7920: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7930: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7940: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7950: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7960: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7970: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7980: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7990: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
79a0: 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
79b0: 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a  memory_used();..
79c0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
79d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
79e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
79f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7a00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7a10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7a20: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7a30: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7a40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7a50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7a60: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7a70: 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
7a80: 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
7a90: 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b  (int resetFlag);
7aa0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7ab0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7ac0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7ad0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7ae0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7af0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7b00: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7b10: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7b20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7b30: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7b40: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7b50: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
7b60: 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a  _shutdown();....
7b70: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7b80: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7b90: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7ba0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7bb0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7bc0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7bd0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
7be0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7bf0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
7c00: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
7c10: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
7c20: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 75 73   int sqlite3_bus
7c30: 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74 72  y_timeout(IntPtr
7c40: 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d   db, int ms);...
7c50: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7c60: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7c70: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7c80: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
7c90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
7ca0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7cb0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
7cc0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7cd0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
7ce0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
7cf0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7d00: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
7d10: 6e 64 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73  nd_blob(IntPtr s
7d20: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
7d30: 42 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  Byte[] value, in
7d40: 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20  t nSize, IntPtr 
7d50: 6e 54 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a  nTransient);....
7d60: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7d70: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7d80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7d90: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7da0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7db0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7dc0: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
7dd0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7de0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
7df0: 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e 74  _bind_double(Int
7e00: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
7e10: 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75  dex, double valu
7e20: 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
7e30: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7e40: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
7e50: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
7e60: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
7e70: 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  bind_double_inte
7e80: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
7e90: 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
7ea0: 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
7eb0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
7ec0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7ed0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7ee0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7ef0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7f00: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7f10: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7f20: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7f30: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7f40: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
7f50: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
7f60: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
7f70: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28  qlite3_bind_int(
7f80: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
7f90: 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c 75   index, int valu
7fa0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20  e);....    //.. 
7fb0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73     // NOTE: This
7fc0: 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c   really just cal
7fd0: 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64  ls "sqlite3_bind
7fe0: 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c 20  _int"; however, 
7ff0: 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20  it has the..    
8000: 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74  //       correct
8010: 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20   type signature 
8020: 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20  for an unsigned 
8030: 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67 65 72  (32-bit) integer
8040: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21  ...    //..#if !
8050: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8060: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
8070: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8080: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
8090: 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
80a0: 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  _int", CallingCo
80b0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
80c0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
80d0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
80e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
80f0: 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
8100: 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
8110: 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64 69  nd_int")]..#endi
8120: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
8130: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
8140: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75  t sqlite3_bind_u
8150: 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
8160: 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74   int index, uint
8170: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
8180: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
8190: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
81a0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
81b0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
81c0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
81d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
81e0: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
81f0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8200: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
8210: 64 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73  d_int64(IntPtr s
8220: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
8230: 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
8240: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8250: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8260: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
8270: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
8280: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
8290: 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
82a0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
82b0: 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c  ex, ref long val
82c0: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
82d0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
82e0: 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79  OTE: This really
82f0: 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c   just calls "sql
8300: 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22  ite3_bind_int64"
8310: 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61  ; however, it ha
8320: 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  s the..    //   
8330: 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65      correct type
8340: 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61   signature for a
8350: 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20  n unsigned long 
8360: 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67 65 72  (64-bit) integer
8370: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21  ...    //..#if !
8380: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8390: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
83a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
83b0: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
83c0: 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
83d0: 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67  _int64", Calling
83e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
83f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8400: 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
8410: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
8420: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
8430: 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74  ind_uint64(IntPt
8440: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
8450: 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  x, ulong value);
8460: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
8470: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8480: 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
8490: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
84a0: 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d  nt64_interop")].
84b0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
84c0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
84d0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
84e0: 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
84f0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
8500: 65 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61  ex, ref ulong va
8510: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
8520: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
8530: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8540: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8550: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
8560: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
8570: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8580: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
8590: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
85a0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
85b0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
85c0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
85d0: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
85e0: 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73  nd_null(IntPtr s
85f0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
8600: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8610: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8620: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8630: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8640: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8650: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8660: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8670: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8680: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8690: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
86a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
86b0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
86c0: 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74  _bind_text(IntPt
86d0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
86e0: 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  x, byte[] value,
86f0: 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74   int nlen, IntPt
8700: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
8710: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
8720: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
8730: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8740: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
8750: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
8760: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8770: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
8780: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
8790: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
87a0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
87b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
87c0: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
87d0: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f  ind_parameter_co
87e0: 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  unt(IntPtr stmt)
87f0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
8800: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8810: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8820: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8830: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8840: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8850: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
8860: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
8870: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
8880: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
8890: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
88a0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
88b0: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
88c0: 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74  _index(IntPtr st
88d0: 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  mt, byte[] strNa
88e0: 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
88f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8900: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
8910: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8920: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8930: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8940: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
8950: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
8960: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8970: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
8980: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8990: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
89a0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e  ite3_column_coun
89b0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  t(IntPtr stmt);.
89c0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
89d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
89e0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
89f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8a00: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8a10: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8a20: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8a30: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8a40: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8a50: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8a60: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8a70: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
8a80: 73 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74  step(IntPtr stmt
8a90: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
8aa0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8ab0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
8ac0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8ad0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8ae0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8af0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8b00: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8b10: 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c  tic extern doubl
8b20: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
8b30: 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73  _double(IntPtr s
8b40: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
8b50: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
8b60: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8b70: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
8b80: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8b90: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f   void sqlite3_co
8ba0: 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  lumn_double_inte
8bb0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
8bc0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20   int index, out 
8bd0: 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
8be0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
8bf0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
8c00: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
8c10: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8c20: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
8c30: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
8c40: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
8c50: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
8c60: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8c70: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
8c80: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8c90: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
8ca0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e  qlite3_column_in
8cb0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
8cc0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
8cd0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8ce0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8cf0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8d00: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8d10: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8d20: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8d30: 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
8d40: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
8d50: 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
8d60: 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74  column_int64(Int
8d70: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
8d80: 64 65 78 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  dex);..#else..  
8d90: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8da0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
8db0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8dc0: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
8dd0: 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f  e3_column_int64_
8de0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
8df0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
8e00: 6f 75 74 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  out long value);
8e10: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
8e20: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
8e30: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
8e40: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8e50: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
8e60: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
8e70: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
8e80: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
8e90: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8ea0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
8eb0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
8ec0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
8ed0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
8ee0: 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73  mn_blob(IntPtr s
8ef0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
8f00: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8f10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8f20: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8f30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8f40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8f50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8f60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8f70: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8f80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8f90: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8fa0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8fb0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
8fc0: 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e  _column_bytes(In
8fd0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
8fe0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
8ff0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9000: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9010: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9020: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9030: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9040: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9050: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9060: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9070: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
9080: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
9090: 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41  tic extern TypeA
90a0: 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f  ffinity sqlite3_
90b0: 63 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50  column_type(IntP
90c0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
90d0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
90e0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
90f0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9100: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9110: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9120: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9130: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9140: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
9150: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9160: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
9170: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9180: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
9190: 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c  ite3_create_coll
91a0: 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ation(IntPtr db,
91b0: 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c   byte[] strName,
91c0: 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50   int nType, IntP
91d0: 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74  tr pvUser, SQLit
91e0: 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29  eCollation func)
91f0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
9200: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9210: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9220: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9230: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9240: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9250: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9260: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9270: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9280: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9290: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
92a0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
92b0: 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e  3_aggregate_coun
92c0: 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
92d0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
92e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
92f0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9300: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9310: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9320: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9330: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9340: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9350: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9360: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
9370: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9380: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
9390: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62  lite3_value_blob
93a0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
93b0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
93c0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
93d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
93e0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
93f0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
9400: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
9410: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
9420: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9430: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
9440: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
9450: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9460: 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  int sqlite3_valu
9470: 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 70  e_bytes(IntPtr p
9480: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
9490: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
94a0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
94b0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
94c0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
94d0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
94e0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
94f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
9500: 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c  tic extern doubl
9510: 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  e sqlite3_value_
9520: 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29  double(IntPtr p)
9530: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
9540: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9550: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
9560: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9570: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76  n void sqlite3_v
9580: 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  alue_double_inte
9590: 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75  rop(IntPtr p, ou
95a0: 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  t double value);
95b0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
95c0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
95d0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
95e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
95f0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
9600: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
9610: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
9620: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
9630: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9640: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
9650: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9660: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
9670: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
9680: 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  nt(IntPtr p);...
9690: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
96a0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
96b0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
96c0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
96d0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
96e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
96f0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
9700: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9710: 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
9720: 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49  e3_value_int64(I
9730: 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6c 73 65  ntPtr p);..#else
9740: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9750: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
9760: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9770: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
9780: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
9790: 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
97a0: 72 20 70 2c 20 6f 75 74 20 49 6e 74 36 34 20 76  r p, out Int64 v
97b0: 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
97c0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
97d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
97e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
97f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9800: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9810: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9820: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
9830: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9840: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
9850: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
9860: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9870: 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  rn TypeAffinity 
9880: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79  sqlite3_value_ty
9890: 70 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  pe(IntPtr p);...
98a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
98b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
98c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
98d0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
98e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
98f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9900: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
9910: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9920: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
9930: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
9940: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9950: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
9960: 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74  esult_blob(IntPt
9970: 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
9980: 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69  ] value, int nSi
9990: 7a 65 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  ze, IntPtr pvRes
99a0: 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
99b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
99c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
99d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
99e0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
99f0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9a00: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
9a10: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
9a20: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9a30: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
9a40: 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  ult_double(IntPt
9a50: 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c  r context, doubl
9a60: 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65  e value);..#else
9a70: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9a80: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
9a90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9aa0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
9ab0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f  qlite3_result_do
9ac0: 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
9ad0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66  Ptr context, ref
9ae0: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
9af0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
9b00: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
9b10: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
9b20: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9b30: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
9b40: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9b50: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
9b60: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
9b70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9b80: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
9b90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
9ba0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
9bb0: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
9bc0: 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e  error(IntPtr con
9bd0: 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72  text, byte[] str
9be0: 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  Err, int nLen);.
9bf0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
9c00: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9c10: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9c20: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9c30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9c40: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9c50: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
9c60: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9c70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9c80: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
9c90: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9ca0: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
9cb0: 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50  _result_int(IntP
9cc0: 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
9cd0: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
9ce0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
9cf0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
9d00: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9d10: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
9d20: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9d30: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
9d40: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
9d50: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9d60: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
9d70: 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ult_int64(IntPtr
9d80: 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76   context, long v
9d90: 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  alue);..#else.. 
9da0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9db0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
9dc0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9dd0: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
9de0: 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
9df0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
9e00: 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74  context, ref Int
9e10: 36 34 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  64 value);..#end
9e20: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
9e30: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9e40: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9e50: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9e60: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9e70: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9e80: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9e90: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9ea0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9eb0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
9ec0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9ed0: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
9ee0: 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28  te3_result_null(
9ef0: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
9f00: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
9f10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9f20: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
9f30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9f40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9f50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9f60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
9f70: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9f80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9f90: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
9fa0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9fb0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
9fc0: 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 49 6e  3_result_text(In
9fd0: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
9fe0: 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
9ff0: 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
a000: 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
a010: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a020: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a030: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a040: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a050: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a060: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a070: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a080: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a090: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a0a0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a0b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
a0c0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 61 67 67  tPtr sqlite3_agg
a0d0: 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 28 49  regate_context(I
a0e0: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69  ntPtr context, i
a0f0: 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23  nt nBytes);....#
a100: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
a110: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
a120: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a130: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
a140: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
a150: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
a160: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
a170: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
a180: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
a190: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a1a0: 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
a1b0: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
a1c0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
a1d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
a1e0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
a1f0: 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e  3_bind_text16(In
a200: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
a210: 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c  ndex, string val
a220: 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e  ue, int nlen, In
a230: 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
a240: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
a250: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
a260: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
a270: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
a280: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a290: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
a2a0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
a2b0: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
a2c0: 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
a2d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a2e0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
a2f0: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
a300: 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
a310: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a320: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
a330: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
a340: 65 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63  error16(IntPtr c
a350: 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73  ontext, string s
a360: 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e  trName, int nLen
a370: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
a380: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a390: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a3a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a3b0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a3c0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a3d0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
a3e0: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
a3f0: 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
a400: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a410: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
a420: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
a430: 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
a440: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a450: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
a460: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
a470: 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 63  _text16(IntPtr c
a480: 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73  ontext, string s
a490: 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e  trName, int nLen
a4a0: 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
a4b0: 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54  ved);....#if INT
a4c0: 45 52 4f 50 5f 43 4f 44 45 43 0d 0a 23 69 66 20  EROP_CODEC..#if 
a4d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a4e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a4f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a500: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a510: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a520: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a530: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
a540: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a550: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
a560: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a570: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
a580: 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74   sqlite3_key(Int
a590: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b  Ptr db, byte[] k
a5a0: 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b  ey, int keylen);
a5b0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
a5c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a5d0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
a5e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
a5f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a600: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
a610: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
a620: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
a630: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
a640: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
a650: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
a660: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
a670: 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62  _rekey(IntPtr db
a680: 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e  , byte[] key, in
a690: 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64  t keylen);..#end
a6a0: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
a6b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a6c0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a6d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a6e0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a6f0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a700: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a710: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
a720: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a730: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
a740: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
a750: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
a760: 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f  lite3_update_hoo
a770: 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
a780: 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63  iteUpdateCallbac
a790: 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
a7a0: 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
a7b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a7c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a7d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a7e0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
a7f0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
a800: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
a810: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
a820: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a830: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
a840: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a850: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
a860: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69  tr sqlite3_commi
a870: 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  t_hook(IntPtr db
a880: 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61  , SQLiteCommitCa
a890: 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
a8a0: 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
a8b0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
a8c0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
a8d0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a8e0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
a8f0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
a900: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a910: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
a920: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a930: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
a940: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
a950: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
a960: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
a970: 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c  trace(IntPtr db,
a980: 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c   SQLiteTraceCall
a990: 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
a9a0: 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20  r pvUser);....  
a9b0: 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
a9c0: 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65  e3_config() take
a9d0: 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
a9e0: 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
a9f0: 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
aa00: 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
aa10: 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
aa20: 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74  sible calls that
aa30: 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e   we want to use.
aa40: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
aa50: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
aa60: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
aa70: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
aa80: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
aa90: 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
aaa0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
aab0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
aac0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
aad0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
aae0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
aaf0: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
ab00: 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
ab10: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ab20: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ab30: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e   int sqlite3_con
ab40: 66 69 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43  fig_none(SQLiteC
ab50: 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29  onfigOpsEnum op)
ab60: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
ab70: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ab80: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ab90: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
aba0: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
abb0: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43  lite3_config", C
abc0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
abd0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
abe0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
abf0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
ac00: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
ac10: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
ac20: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d  lite3_config")].
ac30: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
ac40: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ac50: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
ac60: 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69 74  config_int(SQLit
ac70: 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f  eConfigOpsEnum o
ac80: 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  p, int value);..
ac90: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
aca0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
acb0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
acc0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
acd0: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
ace0: 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
acf0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ad00: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ad10: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
ad20: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ad30: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
ad40: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
ad50: 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
ad60: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ad70: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ad80: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e   int sqlite3_con
ad90: 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f  fig_log(SQLiteCo
ada0: 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20  nfigOpsEnum op, 
adb0: 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63  SQLiteLogCallbac
adc0: 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
add0: 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
ade0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
adf0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
ae00: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ae10: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
ae20: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
ae30: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
ae40: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
ae50: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
ae60: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
ae70: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
ae80: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
ae90: 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62  tr sqlite3_rollb
aea0: 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20  ack_hook(IntPtr 
aeb0: 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61  db, SQLiteRollba
aec0: 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  ckCallback func,
aed0: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
aee0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
aef0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
af00: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
af10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
af20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
af30: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
af40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
af50: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
af60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
af70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
af80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
af90: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
afa0: 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e  te3_db_handle(In
afb0: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
afc0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
afd0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
afe0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
aff0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
b000: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
b010: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
b020: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
b030: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b040: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
b050: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
b060: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b070: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e  IntPtr sqlite3_n
b080: 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20  ext_stmt(IntPtr 
b090: 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  db, IntPtr stmt)
b0a0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b0b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b0c0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b0d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b0e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b0f0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b100: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b110: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b120: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b130: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b140: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b150: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
b160: 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64 62  3_exec(IntPtr db
b170: 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c  , byte[] strSql,
b180: 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61   IntPtr pvCallba
b190: 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72  ck, IntPtr pvPar
b1a0: 61 6d 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 65  am, out IntPtr e
b1b0: 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21  rrMsg);....#if !
b1c0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b1d0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b1e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b1f0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b200: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b210: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b220: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b230: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b240: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b250: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b260: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
b270: 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f  sqlite3_get_auto
b280: 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20 64 62  commit(IntPtr db
b290: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
b2a0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
b2b0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
b2c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
b2d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b2e0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
b2f0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
b300: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
b310: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b320: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
b330: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b340: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
b350: 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75  e3_extended_resu
b360: 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74 72 20  lt_codes(IntPtr 
b370: 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d  db, int onoff);.
b380: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
b390: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b3a0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
b3b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
b3c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
b3d0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
b3e0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
b3f0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
b400: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
b410: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
b420: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b430: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
b440: 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64  errcode(IntPtr d
b450: 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
b460: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
b470: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
b480: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b490: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
b4a0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
b4b0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
b4c0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
b4d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b4e0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
b4f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b500: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
b510: 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72  te3_extended_err
b520: 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
b530: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65  ....    // Since
b540: 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74   sqlite3_log() t
b550: 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20  akes a variable 
b560: 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77  argument list, w
b570: 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f  e have to overlo
b580: 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d  ad declarations.
b590: 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20  .    // for all 
b5a0: 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20  possible calls. 
b5b0: 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72 65   For now, we are
b5c0: 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20 61   only exposing a
b5d0: 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20   single string, 
b5e0: 61 6e 64 20 0d 0a 20 20 20 20 2f 2f 20 64 65 70  and ..    // dep
b5f0: 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65  end on the calle
b600: 72 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20  r to format the 
b610: 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c  string...#if !PL
b620: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b630: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
b640: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b650: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
b660: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
b670: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
b680: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
b690: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b6a0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
b6b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b6c0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
b6d0: 71 6c 69 74 65 33 5f 6c 6f 67 28 69 6e 74 20 69  qlite3_log(int i
b6e0: 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d 20  ErrCode, byte[] 
b6f0: 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66  zFormat);....#if
b700: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
b710: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b720: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b730: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
b740: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
b750: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
b760: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
b770: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b780: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
b790: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b7a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
b7b0: 74 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63  t sqlite3_file_c
b7c0: 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62  ontrol(IntPtr db
b7d0: 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65  , byte[] zDbName
b7e0: 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72  , int op, IntPtr
b7f0: 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21   pArg);....#if !
b800: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b810: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b820: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b830: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b840: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b850: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b860: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b870: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b880: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b890: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b8a0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b8b0: 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  tr sqlite3_backu
b8c0: 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65  p_init(IntPtr de
b8d0: 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65  stDb, byte[] zDe
b8e0: 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73  stName, IntPtr s
b8f0: 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20  ourceDb, byte[] 
b900: 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d  zSourceName);...
b910: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b920: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b930: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b940: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b950: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b960: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b970: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b980: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b990: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b9a0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b9b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b9c0: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61  n int sqlite3_ba
b9d0: 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72  ckup_step(IntPtr
b9e0: 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61   backup, int nPa
b9f0: 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ge);....#if !PLA
ba00: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
ba10: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
ba20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ba30: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
ba40: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
ba50: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
ba60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
ba70: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ba80: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
ba90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
baa0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
bab0: 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
bac0: 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  sh(IntPtr backup
bad0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
bae0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
baf0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
bb00: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
bb10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bb20: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
bb30: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
bb40: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
bb50: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
bb60: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
bb70: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
bb80: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
bb90: 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e  e3_backup_remain
bba0: 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ing(IntPtr backu
bbb0: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
bbc0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
bbd0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
bbe0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
bbf0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
bc00: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
bc10: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
bc20: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
bc30: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
bc40: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
bc50: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
bc60: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
bc70: 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63  te3_backup_pagec
bc80: 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b  ount(IntPtr back
bc90: 75 70 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65  up);..    #endre
bca0: 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 23 69 66  gion..  }....#if
bcb0: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
bcc0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e  TFRAMEWORK..  in
bcd0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
bce0: 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c 48 61  class CriticalHa
bcf0: 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73 61 62  ndle : IDisposab
bd00: 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69  le..  {..    pri
bd10: 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f  vate bool _isClo
bd20: 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63  sed;..    protec
bd30: 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e 64 6c  ted IntPtr handl
bd40: 65 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 70 72  e;..    ..    pr
bd50: 6f 74 65 63 74 65 64 20 43 72 69 74 69 63 61 6c  otected Critical
bd60: 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e  Handle(IntPtr in
bd70: 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65  validHandleValue
bd80: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
bd90: 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64  handle = invalid
bda0: 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20  HandleValue;..  
bdb0: 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20      _isClosed = 
bdc0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  false;..    }...
bdd0: 0a 20 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61  .    ~CriticalHa
bde0: 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  ndle()..    {.. 
bdf0: 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c       Dispose(fal
be00: 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  se);..    }.... 
be10: 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
be20: 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b  Cleanup()..    {
be30: 0d 0a 20 20 20 20 20 20 69 66 20 28 21 49 73 43  ..      if (!IsC
be40: 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d  losed)..      {.
be50: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69  .        this._i
be60: 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
be70: 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 49 73  .        if (!Is
be80: 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20  Invalid)..      
be90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52    {..          R
bea0: 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d  eleaseHandle();.
beb0: 0a 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75  .          GC.Su
bec0: 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
bed0: 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  his);..        }
bee0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
bef0: 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
bf00: 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20  oid Close()..   
bf10: 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73   {..      Dispos
bf20: 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d  e(true);..    }.
bf30: 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f  ...    public vo
bf40: 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
bf50: 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f    {..      Dispo
bf60: 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d  se(true);..    }
bf70: 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65  ....    protecte
bf80: 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44  d virtual void D
bf90: 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70  ispose(bool disp
bfa0: 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20  osing)..    {.. 
bfb0: 20 20 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d       Cleanup();.
bfc0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
bfd0: 6f 74 65 63 74 65 64 20 61 62 73 74 72 61 63 74  otected abstract
bfe0: 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
bff0: 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72  dle();....    pr
c000: 6f 74 65 63 74 65 64 20 76 6f 69 64 20 53 65 74  otected void Set
c010: 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61  Handle(IntPtr va
c020: 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lue)..    {..   
c030: 20 20 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75     handle = valu
c040: 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
c050: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
c060: 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
c070: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
c080: 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65  _isClosed = true
c090: 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70  ;..      GC.Supp
c0a0: 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
c0b0: 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  s);..    }....  
c0c0: 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73    public bool Is
c0d0: 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20  Closed..    {.. 
c0e0: 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
c0f0: 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a  n _isClosed; }..
c100: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
c110: 6c 69 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f  lic abstract boo
c120: 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
c130: 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a   {..      get;..
c140: 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a      }....  }....
c150: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 2f 2f 20 48  #endif....  // H
c160: 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e  andles the unman
c170: 61 67 65 64 20 64 61 74 61 62 61 73 65 20 70 6f  aged database po
c180: 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69  inter, and provi
c190: 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
c1a0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e   support for it.
c1b0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 63 6c 61  ..  internal cla
c1c0: 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  ss SQLiteConnect
c1d0: 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  ionHandle : Crit
c1e0: 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 7b 0d  icalHandle..  {.
c1f0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
c200: 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
c210: 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
c220: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
c230: 6c 65 20 64 62 29 0d 0a 20 20 20 20 7b 0d 0a 20  le db)..    {.. 
c240: 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 62 20       return (db 
c250: 21 3d 20 6e 75 6c 6c 29 20 3f 20 64 62 2e 68 61  != null) ? db.ha
c260: 6e 64 6c 65 20 3a 20 49 6e 74 50 74 72 2e 5a 65  ndle : IntPtr.Ze
c270: 72 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ro;..    }....  
c280: 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
c290: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
c2a0: 65 28 49 6e 74 50 74 72 20 64 62 29 0d 0a 20 20  e(IntPtr db)..  
c2b0: 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
c2c0: 20 20 7b 0d 0a 20 20 20 20 20 20 53 65 74 48 61    {..      SetHa
c2d0: 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 7d  ndle(db);..    }
c2e0: 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
c2f0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
c300: 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
c310: 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
c320: 72 6f 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ro)..    {..    
c330: 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  }....    protect
c340: 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
c350: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
c360: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 74  ..    {..      t
c370: 72 79 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66  ry..      {..#if
c380: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
c390: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
c3a0: 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
c3b0: 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
c3c0: 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
c3d0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68  .          ref h
c3e0: 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65  andle, IntPtr.Ze
c3f0: 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ro);....        
c400: 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
c410: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
c420: 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74  .          SQLit
c430: 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
c440: 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
c450: 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66  lHandle);....#if
c460: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
c470: 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
c480: 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20  ..        try.. 
c490: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c4a0: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
c4b0: 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(String.Forma
c4c0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
c4d0: 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69    "CloseConnecti
c4e0: 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48  on: {0}", localH
c4f0: 61 6e 64 6c 65 29 29 3b 0d 0a 20 20 20 20 20 20  andle));..      
c500: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74    }..        cat
c510: 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ch..        {.. 
c520: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
c530: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
c540: 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
c550: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
c560: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c570: 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
c580: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
c590: 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  s, handle);..   
c5a0: 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
c5b0: 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
c5c0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
c5d0: 66 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  f....#if DEBUG..
c5e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
c5f0: 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
c600: 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
c610: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
c620: 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
c630: 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
c640: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
c650: 73 65 0d 0a 20 20 20 20 20 20 63 61 74 63 68 20  se..      catch 
c660: 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
c670: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
c680: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
c690: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
c6a0: 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
c6b0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d   try..        {.
c6c0: 0a 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65  .          Trace
c6d0: 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
c6e0: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
c6f0: 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43           "CloseC
c700: 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20  onnection: {0}, 
c710: 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
c720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c730: 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a 20 20  handle, e));..  
c740: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
c750: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
c760: 7b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  {..        }..#e
c770: 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ndif..      }.. 
c780: 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
c790: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 53      {..        S
c7a0: 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
c7b0: 64 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  d();..      }..#
c7c0: 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
c7d0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
c7e0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 72 65 74 75  else..      retu
c7f0: 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
c800: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
c810: 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
c820: 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
c830: 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20     {..      get 
c840: 7b 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65  { return (handle
c850: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
c860: 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 23 69  ; }..    }....#i
c870: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 70 75 62  f DEBUG..    pub
c880: 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
c890: 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
c8a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
c8b0: 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
c8c0: 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 7d 0d  tring();..    }.
c8d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a 0d 0a  .#endif..  }....
c8e0: 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69    // Provides fi
c8f0: 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f  nalization suppo
c900: 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64  rt for unmanaged
c910: 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d 65 6e   SQLite statemen
c920: 74 73 2e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ts...  internal 
c930: 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61 74  class SQLiteStat
c940: 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72  ementHandle : Cr
c950: 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
c960: 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 53  {..    private S
c970: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
c980: 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
c990: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
c9a0: 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
c9b0: 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53  r IntPtr(SQLiteS
c9c0: 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73  tatementHandle s
c9d0: 74 6d 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  tmt)..    {..   
c9e0: 20 20 20 72 65 74 75 72 6e 20 28 73 74 6d 74 20     return (stmt 
c9f0: 21 3d 20 6e 75 6c 6c 29 20 3f 20 73 74 6d 74 2e  != null) ? stmt.
ca00: 68 61 6e 64 6c 65 20 3a 20 49 6e 74 50 74 72 2e  handle : IntPtr.
ca10: 5a 65 72 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  Zero;..    }....
ca20: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
ca30: 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
ca40: 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  le(SQLiteConnect
ca50: 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49  ionHandle cnn, I
ca60: 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a 20 20 20  ntPtr stmt)..   
ca70: 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
ca80: 20 7b 0d 0a 20 20 20 20 20 20 74 68 69 73 2e 63   {..      this.c
ca90: 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20  nn = cnn;..     
caa0: 20 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29   SetHandle(stmt)
cab0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
cac0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74  private SQLiteSt
cad0: 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d  atementHandle().
cae0: 0a 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e  .      : base(In
caf0: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
cb00: 7b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  {..    }....    
cb10: 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
cb20: 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
cb30: 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  andle()..    {..
cb40: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
cb50: 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
cb60: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
cb70: 52 4b 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  RK..        IntP
cb80: 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d  tr localHandle =
cb90: 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63   Interlocked.Exc
cba0: 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20  hange(..        
cbb0: 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
cbc0: 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
cbd0: 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
cbe0: 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
cbf0: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
cc00: 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
cc10: 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63  alizeStatement(c
cc20: 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  nn, localHandle)
cc30: 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
cc40: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
cc50: 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
cc60: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b    try..        {
cc70: 0d 0a 20 20 20 20 20 20 20 20 20 20 54 72 61 63  ..          Trac
cc80: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
cc90: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
cca0: 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c            "Final
ccb0: 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30  izeStatement: {0
ccc0: 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
ccd0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
cce0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
ccf0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
cd00: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
cd10: 65 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 68  e..        if (h
cd20: 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
cd30: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b  Zero)..        {
cd40: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69  ..          SQLi
cd50: 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
cd60: 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61  tatement(cnn, ha
cd70: 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
cd80: 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
cd90: 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
cda0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
cdb0: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
cdc0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
cdd0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d  .#endif..      }
cde0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
cdf0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
ce00: 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 63 61 74  ANDLE..      cat
ce10: 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
ce20: 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
ce30: 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
ce40: 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65  teException)..#e
ce50: 6e 64 69 66 0d 0a 20 20 20 20 20 20 7b 0d 0a 23  ndif..      {..#
ce60: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
ce70: 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
ce80: 4c 45 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d  LE..        try.
ce90: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
cea0: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
ceb0: 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72  eLine(String.For
cec0: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
ced0: 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61      "FinalizeSta
cee0: 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78 63  tement: {0}, exc
cef0: 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
cf00: 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e               han
cf10: 64 6c 65 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20  dle, e));..     
cf20: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61     }..        ca
cf30: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  tch..        {..
cf40: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
cf50: 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  f..      }..    
cf60: 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
cf70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 53 65 74 48   {..        SetH
cf80: 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29  andleAsInvalid()
cf90: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 69 66 20  ;..      }..#if 
cfa0: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 72 65 74  DEBUG..      ret
cfb0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
cfc0: 65 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  e..      return 
cfd0: 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
cfe0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
cff0: 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
d000: 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
d010: 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72  {..      get { r
d020: 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
d030: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 20 7d   IntPtr.Zero); }
d040: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 44  ..    }....#if D
d050: 45 42 55 47 0d 0a 20 20 20 20 70 75 62 6c 69 63  EBUG..    public
d060: 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67   override string
d070: 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20   ToString()..   
d080: 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
d090: 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
d0a0: 6e 67 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 23 65  ng();..    }..#e
d0b0: 6e 64 69 66 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f  ndif..  }....  /
d0c0: 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
d0d0: 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
d0e0: 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
d0f0: 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65  Lite backup obje
d100: 63 74 73 2e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  cts...  internal
d110: 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63   class SQLiteBac
d120: 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  kupHandle : Crit
d130: 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 7b 0d  icalHandle..  {.
d140: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53  .      private S
d150: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
d160: 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
d170: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
d180: 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
d190: 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
d1a0: 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61  eBackupHandle ba
d1b0: 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ckup)..      {..
d1c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d1d0: 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c   (backup != null
d1e0: 29 20 3f 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c  ) ? backup.handl
d1f0: 65 20 3a 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e : IntPtr.Zero;
d200: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
d210: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
d220: 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53  teBackupHandle(S
d230: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
d240: 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
d250: 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20  r backup)..     
d260: 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
d270: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d280: 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
d290: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 74  ;..          Set
d2a0: 48 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d  Handle(backup);.
d2b0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
d2c0: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
d2d0: 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a  BackupHandle()..
d2e0: 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
d2f0: 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
d300: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 7d 0d       {..      }.
d310: 0a 0d 0a 20 20 20 20 20 20 70 72 6f 74 65 63 74  ...      protect
d320: 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
d330: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
d340: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
d350: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
d360: 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
d370: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
d380: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
d390: 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
d3a0: 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
d3b0: 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
d3c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d3d0: 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
d3e0: 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
d3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
d400: 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
d410: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
d420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d430: 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69   SQLiteBase.Fini
d440: 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f  shBackup(cnn, lo
d450: 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
d460: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
d470: 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
d480: 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
d490: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
d4a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d4b0: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
d4c0: 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
d4d0: 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
d4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d4f0: 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b  "FinishBackup: {
d500: 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
d510: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
d520: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
d530: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
d540: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
d550: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
d560: 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
d570: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
d580: 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
d590: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
d5a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d5b0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
d5c0: 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63  e.FinishBackup(c
d5d0: 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
d5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
d5f0: 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a  tHandle(IntPtr.Z
d600: 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
d610: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
d620: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
d630: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
d640: 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
d650: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
d660: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
d670: 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
d680: 45 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  E..          cat
d690: 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
d6a0: 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
d6b0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
d6c0: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
d6d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
d6e0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
d6f0: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
d700: 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
d710: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
d720: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d740: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
d750: 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
d760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d770: 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42          "FinishB
d780: 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65  ackup: {0}, exce
d790: 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20  ption: {1}",..  
d7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7b0: 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b      handle, e));
d7c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d7d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
d7e0: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
d7f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d800: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
d810: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
d820: 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
d830: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
d840: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
d850: 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
d860: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
d870: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
d880: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
d890: 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  se;..#else..    
d8a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
d8b0: 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
d8c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62    }....      pub
d8d0: 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
d8e0: 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
d8f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d900: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 28 68 61  get { return (ha
d910: 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
d920: 65 72 6f 29 3b 20 7d 0d 0a 20 20 20 20 20 20 7d  ero); }..      }
d930: 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
d940: 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
d950: 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
d960: 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 7b 0d  ring()..      {.
d970: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
d980: 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e  n handle.ToStrin
d990: 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  g();..      }..#
d9a0: 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a 7d 0d 0a     endif..  }..}..