System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact d7ae887602df102c391a5896085d40332495166e:


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 23 69 66 20  ng System;..#if 
0160: 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c  PRELOAD_NATIVE_L
0170: 49 42 52 41 52 59 20 7c 7c 20 44 45 42 55 47 0d  IBRARY || DEBUG.
0180: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0190: 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65  Diagnostics;..#e
01a0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 50 52 45 4c  ndif....#if PREL
01b0: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
01c0: 52 59 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  RY..  using Syst
01d0: 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47  em.Collections.G
01e0: 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69 6e 67  eneric;..  using
01f0: 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20 20 75   System.IO;..  u
0200: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65 66 6c  sing System.Refl
0210: 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
0220: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
0230: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0240: 4b 20 26 26 20 21 44 45 42 55 47 0d 0a 20 20 75  K && !DEBUG..  u
0250: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0260: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
0270: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0280: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
0290: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02a0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
02b0: 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 44  TFRAMEWORK && !D
02c0: 45 42 55 47 0d 0a 20 20 5b 53 75 70 70 72 65 73  EBUG..  [Suppres
02d0: 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65  sUnmanagedCodeSe
02e0: 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d  curity]..#endif.
02f0: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
0300: 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e  ic class UnsafeN
0310: 61 74 69 76 65 4d 65 74 68 6f 64 73 0d 0a 20 20  ativeMethods..  
0320: 7b 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  {..      #region
0330: 20 4f 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65   Optional Native
0340: 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20   SQLite Library 
0350: 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65  Pre-Loading Code
0360: 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ..      //..    
0370: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65    // NOTE: If we
0380: 20 61 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72   are looking for
0390: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
03a0: 4c 69 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74  Lite DLL ("sqlit
03b0: 65 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20  e3.dll"),..     
03c0: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e   //       the in
03d0: 74 65 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69  terop DLL ("SQLi
03e0: 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29  te.Interop.dll")
03f0: 2c 20 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e  , or we are runn
0400: 69 6e 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20  ing on the..    
0410: 20 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20    //       .NET 
0420: 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
0430: 6b 2c 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63  k, we should inc
0440: 6c 75 64 65 20 74 68 69 73 20 63 6f 64 65 20 28  lude this code (
0450: 6f 6e 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20  only if the..   
0460: 20 20 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74     //       feat
0470: 75 72 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79  ure has actually
0480: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20   been enabled). 
0490: 20 54 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64   This code would
04a0: 20 62 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20   be totally..   
04b0: 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75     //       redu
04c0: 6e 64 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f  ndant if this mo
04d0: 64 75 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75  dule has been bu
04e0: 6e 64 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d  ndled into the m
04f0: 69 78 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20  ixed-mode..     
0500: 20 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62   //       assemb
0510: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23  ly...      //..#
0520: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
0530: 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
0540: 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
0550: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
0560: 52 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  RK....      //..
0570: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f        // NOTE: O
0580: 6e 6c 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74  nly compile in t
0590: 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
05a0: 79 20 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20  y pre-load code 
05b0: 69 66 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a  if the feature..
05c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68        //       h
05d0: 61 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  as been enabled 
05e0: 66 6f 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d  for this build..
05f0: 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50  .      //..#if P
0600: 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49  RELOAD_NATIVE_LI
0610: 42 52 41 52 59 0d 0a 23 69 66 20 21 50 4c 41 54  BRARY..#if !PLAT
0620: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
0630: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
0640: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0650: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
0660: 66 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e  f the environmen
0670: 74 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61  t variable conta
0680: 69 6e 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73  ining the proces
0690: 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  sor..      /// a
06a0: 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
06b0: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
06c0: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
06d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
06e0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
06f0: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
0700: 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
0710: 45 43 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20  ECTURE =..      
0720: 20 20 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41      "PROCESSOR_A
0730: 52 43 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 23  RCHITECTURE";..#
0740: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
0750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
07a0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
07b0: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
07c0: 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f   DllFileExtensio
07d0: 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20  n = ".dll";.... 
07e0: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
0830: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0840: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
0850: 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76  his is the P/Inv
0860: 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20  oke method that 
0870: 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65  wraps the native
0880: 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61   Win32 LoadLibra
0890: 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75  ry..      /// fu
08a0: 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65  nction.  See the
08b0: 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74   MSDN documentat
08c0: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
08d0: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
08e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
08f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0900: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
0910: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
0920: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
0930: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
0940: 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20   the executable 
0950: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
0960: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
0970: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
0980: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
0990: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
09a0: 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65  andle upon succe
09b0: 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ss -OR- IntPtr.Z
09c0: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
09d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
09e0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 5b 44 6c  urns>..      [Dl
09f0: 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33  lImport("kernel3
0a00: 32 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43  2",..          C
0a10: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
0a20: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
0a30: 74 69 6f 6e 2e 57 69 6e 61 70 69 2c 20 43 68 61  tion.Winapi, Cha
0a40: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41  rSet = CharSet.A
0a50: 75 74 6f 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46  uto,..#if !PLATF
0a60: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
0a70: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
0a80: 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20 3d  BestFitMapping =
0a90: 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55   false, ThrowOnU
0aa0: 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d 20  nmappableChar = 
0ab0: 74 72 75 65 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20  true,..#endif.. 
0ac0: 20 20 20 20 20 20 20 20 20 53 65 74 4c 61 73 74           SetLast
0ad0: 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a  Error = true)]..
0ae0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
0af0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
0b00: 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 73  tr LoadLibrary(s
0b10: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 29 3b  tring fileName);
0b20: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
0b30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0b40: 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20  // This lock is 
0b50: 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20  used to protect 
0b60: 74 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c 69  the static _SQLi
0b70: 74 65 4d 6f 64 75 6c 65 20 61 6e 64 0d 0a 20 20  teModule and..  
0b80: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f      /// processo
0b90: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
0ba0: 74 66 6f 72 6d 73 20 66 69 65 6c 64 73 2c 20 62  tforms fields, b
0bb0: 65 6c 6f 77 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  elow...      ///
0bc0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0bd0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
0be0: 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  c readonly objec
0bf0: 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74  t staticSyncRoot
0c00: 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
0c10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
0c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
0c70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0c80: 2f 2f 2f 20 53 74 6f 72 65 73 20 74 68 65 20 6d  /// Stores the m
0c90: 61 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20  appings between 
0ca0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
0cb0: 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61 6e 64  ecture names and
0cc0: 20 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20   platform..     
0cd0: 20 2f 2f 2f 20 6e 61 6d 65 73 2e 0d 0a 20 20 20   /// names...   
0ce0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0cf0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0d00: 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61   static Dictiona
0d10: 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e  ry<string, strin
0d20: 67 3e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  g> processorArch
0d30: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
0d40: 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  s;....      ////
0d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d90: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
0da0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0db0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
0dc0: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66   module handle f
0dd0: 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
0de0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20  Lite library or 
0df0: 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  the value..     
0e00: 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f   /// IntPtr.Zero
0e10: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
0e20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
0e30: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e  rivate static In
0e40: 74 50 74 72 20 5f 53 51 4c 69 74 65 4d 6f 64 75  tPtr _SQLiteModu
0e50: 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  le = IntPtr.Zero
0e60: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
0ec0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0ed0: 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20 74 68   /// For now, th
0ee0: 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70 6c 79  is method simply
0ef0: 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69 74 69   calls the Initi
0f00: 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d 0a 20  alize method... 
0f10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
0f20: 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61 74 69  ry>..      stati
0f30: 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  c UnsafeNativeMe
0f40: 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20 20 7b  thods()..      {
0f50: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 69 74  ..          Init
0f60: 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20 20 20  ialize();..     
0f70: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
0f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fc0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
0fd0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0fe0: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
0ff0: 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 69  o initialize thi
1000: 73 20 63 6c 61 73 73 20 62 79 20 70 72 65 2d 6c  s class by pre-l
1010: 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74 69 76  oading the nativ
1020: 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20  e SQLite..      
1030: 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f 72 20  /// library for 
1040: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
1050: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
1060: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
1070: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
1080: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1090: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10a0: 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 28  void Initialize(
10b0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  )..      {..#if 
10c0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10d0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10e0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
10f0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
1100: 74 68 65 20 22 4e 6f 50 72 65 4c 6f 61 64 53 51  the "NoPreLoadSQ
1110: 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  Lite" environmen
1120: 74 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65  t variable is se
1130: 74 2c 20 73 6b 69 70 0d 0a 20 20 20 20 20 20 20  t, skip..       
1140: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6c 6c 20     //       all 
1150: 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65  our special code
1160: 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75   and simply retu
1170: 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  rn...          /
1180: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
1190: 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74  (Environment.Get
11a0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
11b0: 62 6c 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53  ble("No_PreLoadS
11c0: 51 4c 69 74 65 22 29 20 21 3d 20 6e 75 6c 6c 29  QLite") != null)
11d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11e0: 72 65 74 75 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d  return;..#endif.
11f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
1200: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
1210: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
1220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1230: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1240: 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73   // TODO: Make s
1250: 75 72 65 20 74 68 69 73 20 6c 69 73 74 20 69 73  ure this list is
1260: 20 75 70 64 61 74 65 64 20 69 66 20 74 68 65 20   updated if the 
1270: 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20  supported..     
1280: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1290: 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68    processor arch
12a0: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61  itecture names a
12b0: 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20 6e  nd/or platform n
12c0: 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ames..          
12d0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61      //       cha
12e0: 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  nges...         
12f0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1300: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
1310: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1320: 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c  Platforms == nul
1330: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1340: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1350: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
1360: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
1370: 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20  forms =..       
1380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
1390: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
13a0: 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 29 3b  ring, string>();
13b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13c0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
13d0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
13e0: 6f 72 6d 73 2e 41 64 64 28 22 58 38 36 22 2c 20  orms.Add("X86", 
13f0: 22 57 69 6e 33 32 22 29 3b 0d 0a 20 20 20 20 20  "Win32");..     
1400: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
1410: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1420: 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28  rePlatforms.Add(
1430: 22 41 4d 44 36 34 22 2c 20 22 78 36 34 22 29 3b  "AMD64", "x64");
1440: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1450: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
1460: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
1470: 6d 73 2e 41 64 64 28 22 49 41 36 34 22 2c 20 22  ms.Add("IA64", "
1480: 49 74 61 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20  Itanium");..    
1490: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
14a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
14b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
14c0: 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74 20 61  / BUGBUG: What a
14d0: 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c 69  bout other appli
14e0: 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d  cation domains?.
14f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1500: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1510: 20 69 66 20 28 5f 53 51 4c 69 74 65 4d 6f 64 75   if (_SQLiteModu
1520: 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
1530: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1540: 20 20 20 20 20 20 5f 53 51 4c 69 74 65 4d 6f 64        _SQLiteMod
1550: 75 6c 65 20 3d 20 50 72 65 4c 6f 61 64 53 51 4c  ule = PreLoadSQL
1560: 69 74 65 44 6c 6c 28 6e 75 6c 6c 2c 20 6e 75 6c  iteDll(null, nul
1570: 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  l);..          }
1580: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
1590: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
15e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15f0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
1600: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
1610: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
1620: 6f 72 79 20 6f 66 20 74 68 65 20 63 75 72 72 65  ory of the curre
1630: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a  nt application..
1640: 20 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e        /// domain
1650: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1660: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
1670: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1680: 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65      /// The base
1690: 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74   directory for t
16a0: 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
16b0: 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f  cation domain -O
16c0: 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20  R- null if it.. 
16d0: 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20       /// cannot 
16e0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
16f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1700: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
1710: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
1720: 67 20 47 65 74 42 61 73 65 44 69 72 65 63 74 6f  g GetBaseDirecto
1730: 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23  ry()..      {..#
1740: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1750: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1760: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1770: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1780: 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53  If the "PreLoadS
1790: 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74  QLite_BaseDirect
17a0: 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  ory" environment
17b0: 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20   variable..     
17c0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73       //       is
17d0: 20 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72   set, use it ver
17e0: 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61  batim for the ba
17f0: 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  se directory... 
1800: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1810: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
1820: 72 65 63 74 6f 72 79 20 3d 20 45 6e 76 69 72 6f  rectory = Enviro
1830: 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
1840: 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20  mentVariable(.. 
1850: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72               "Pr
1860: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65  eLoadSQLite_Base
1870: 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 0d 0a  Directory");....
1880: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
1890: 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29  rectory != null)
18a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18b0: 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
18c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
18d0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
18e0: 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
18f0: 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69   fallback on usi
1900: 6e 67 20 74 68 65 20 62 61 73 65 20 64 69 72 65  ng the base dire
1910: 63 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20  ctory of the..  
1920: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1930: 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
1940: 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20  tion domain...  
1950: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1960: 20 20 20 20 20 20 72 65 74 75 72 6e 20 41 70 70        return App
1970: 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
1980: 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
1990: 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ry;..#else..    
19a0: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
19b0: 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
19c0: 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
19d0: 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
19e0: 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65          if (asse
19f0: 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  mbly == null).. 
1a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1a10: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
1a20: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e         AssemblyN
1a30: 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65  ame assemblyName
1a40: 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e   = assembly.GetN
1a50: 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ame();....      
1a60: 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79      if (assembly
1a70: 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Name == null).. 
1a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1a90: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
1aa0: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
1ab0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ac0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50 61         return Pa
1ad0: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
1ae0: 61 6d 65 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65  ame(assemblyName
1af0: 2e 43 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20  .CodeBase);..   
1b00: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1b10: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
1b20: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b30: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
1b40: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
1b50: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
1b60: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 23 65 6e  eturn null;..#en
1b70: 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  dif..      }....
1b80: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1bd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
1be0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1bf0: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
1c00: 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  e dynamic link l
1c10: 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
1c20: 20 72 65 71 75 69 72 65 73 20 61 20 73 75 66 66   requires a suff
1c30: 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e  ix..      /// an
1c40: 64 20 61 64 64 73 20 69 74 20 69 66 20 6e 65 63  d adds it if nec
1c50: 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  essary...      /
1c60: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1c70: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1c80: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
1c90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
1ca0: 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63  original dynamic
1cb0: 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69   link library fi
1cc0: 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65  le name to inspe
1cd0: 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ct...      /// <
1ce0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
1cf0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1d00: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61      /// The dyna
1d10: 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79  mic link library
1d20: 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73   file name, poss
1d30: 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f  ibly modified to
1d40: 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20   include an..   
1d50: 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e     /// extension
1d60: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
1d70: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
1d80: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
1d90: 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46 69 6c  ring FixUpDllFil
1da0: 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eName(..        
1db0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
1dc0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
1dd0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1de0: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
1df0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
1e00: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
1e10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1e20: 20 20 20 20 50 6c 61 74 66 6f 72 6d 49 44 20 70      PlatformID p
1e30: 6c 61 74 66 6f 72 6d 49 64 20 3d 20 45 6e 76 69  latformId = Envi
1e40: 72 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72 73 69 6f  ronment.OSVersio
1e50: 6e 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20  n.Platform;.... 
1e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1e70: 28 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20  ((platformId == 
1e80: 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32  PlatformID.Win32
1e90: 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  S) ||..         
1ea0: 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f           (platfo
1eb0: 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d  rmId == Platform
1ec0: 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29  ID.Win32Windows)
1ed0: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
1ee0: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
1ef0: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
1f00: 2e 57 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20  .Win32NT) ||..  
1f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f20: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
1f30: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 43 45 29  latformID.WinCE)
1f40: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1f60: 20 20 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e        if (!fileN
1f70: 61 6d 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c  ame.EndsWith(Dll
1f80: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a  FileExtension,..
1f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa0: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
1fb0: 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
1fc0: 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a  alIgnoreCase))..
1fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1ff0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2000: 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c  n fileName + Dll
2010: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a  FileExtension;..
2020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2030: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2040: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2050: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
2060: 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d  eturn fileName;.
2070: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
2080: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
20d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
20e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
20f0: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
2100: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
2110: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
2120: 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20  e current..     
2130: 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20   /// process... 
2140: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2150: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
2160: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2170: 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f  /// The processo
2180: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f  r architecture o
2190: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
21a0: 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20  ocess -OR- null 
21b0: 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  if it..      ///
21c0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
21d0: 6d 69 6e 65 64 2e 20 20 41 6c 77 61 79 73 20 72  mined.  Always r
21e0: 65 74 75 72 6e 73 20 61 6e 20 65 6d 70 74 79 20  eturns an empty 
21f0: 73 74 72 69 6e 67 20 77 68 65 6e 20 72 75 6e 6e  string when runn
2200: 69 6e 67 20 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f  ing on..      //
2210: 2f 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61  / the .NET Compa
2220: 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20  ct Framework... 
2230: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2240: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
2250: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
2260: 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
2270: 68 69 74 65 63 74 75 72 65 28 29 0d 0a 20 20 20  hitecture()..   
2280: 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
2290: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22a0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
22b0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
22c0: 20 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74 68   BUGBUG: Will th
22d0: 69 73 20 61 6c 77 61 79 73 20 62 65 20 72 65 6c  is always be rel
22e0: 69 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20  iable?..        
22f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2300: 72 65 74 75 72 6e 20 45 6e 76 69 72 6f 6e 6d 65  return Environme
2310: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
2320: 74 56 61 72 69 61 62 6c 65 28 50 52 4f 43 45 53  tVariable(PROCES
2330: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
2340: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
2350: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2360: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 4e 6f     // BUGBUG: No
2370: 20 77 61 79 20 74 6f 20 64 65 74 65 72 6d 69 6e   way to determin
2380: 65 20 74 68 69 73 20 76 61 6c 75 65 20 6f 6e 20  e this value on 
2390: 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
23a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
23b0: 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b         Framework
23c0: 20 28 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e   (running on Win
23d0: 64 6f 77 73 20 43 45 2c 20 65 74 63 29 2e 0d 0a  dows CE, etc)...
23e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
23f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
2400: 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 23 65  tring.Empty;..#e
2410: 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ndif..      }...
2420: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
2430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2470: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
2480: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2490: 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f 63 65   Given the proce
24a0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
24b0: 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  e, returns the n
24c0: 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61 74 66  ame of the platf
24d0: 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  orm...      /// 
24e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
24f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2500: 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
2510: 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
2520: 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73    /// The proces
2530: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
2540: 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61 74 65   to be translate
2550: 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d 20  d to a platform 
2560: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
2570: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2580: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2590: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 6c        /// The pl
25a0: 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72 20  atform name for 
25b0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70 72  the specified pr
25c0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
25d0: 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a  ture -OR- null..
25e0: 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69 74 20        /// if it 
25f0: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
2600: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
2610: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2620: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2630: 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c 61 74  c string GetPlat
2640: 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20 20  formName(..     
2650: 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63       string proc
2660: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
2670: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
2680: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2690: 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
26a0: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63  NullOrEmpty(proc
26b0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
26c0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
26d0: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
26e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
26f0: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
2700: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
2710: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
2720: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
2730: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
2740: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
2750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2760: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
2770: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
2780: 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b  ng platformName;
2790: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27a0: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
27b0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
27c0: 6f 72 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65  orms.TryGetValue
27d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
27e0: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
27f0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20  orArchitecture, 
2800: 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  out platformName
2810: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
2820: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2830: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c         return pl
2840: 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20  atformName;..   
2850: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2870: 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
2880: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
2890: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d 0a 23  .TryGetValue(..#
28a0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
28b0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
28c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d0: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
28e0: 63 68 69 74 65 63 74 75 72 65 2e 54 6f 55 70 70  chitecture.ToUpp
28f0: 65 72 49 6e 76 61 72 69 61 6e 74 28 29 2c 0d 0a  erInvariant(),..
2900: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2910: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
2920: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
2930: 72 65 2e 54 6f 55 70 70 65 72 28 29 2c 0d 0a 23  re.ToUpper(),..#
2940: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2950: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
2960: 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d   platformName)).
2970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
2980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2990: 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61 74 66      return platf
29a0: 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ormName;..      
29b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
29c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
29d0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
29e0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
29f0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
2a40: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2a50: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  >..      /// Att
2a60: 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68  empts to load th
2a70: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
2a80: 6c 69 62 72 61 72 79 20 62 61 73 65 64 20 6f 6e  library based on
2a90: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
2aa0: 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74        /// direct
2ab0: 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73 73 6f  ory and processo
2ac0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d  r architecture..
2ad0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
2ae0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2af0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69   <param name="di
2b00: 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20  rectory">..     
2b10: 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69   /// The base di
2b20: 72 65 63 74 6f 72 79 20 74 6f 20 75 73 65 2c 20  rectory to use, 
2b30: 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74  null for default
2b40: 20 28 74 68 65 20 62 61 73 65 20 64 69 72 65 63   (the base direc
2b50: 74 6f 72 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f  tory of..      /
2b60: 2f 2f 20 74 68 65 20 63 75 72 72 65 6e 74 20 61  // the current a
2b70: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
2b80: 6e 29 2e 20 20 54 68 69 73 20 64 69 72 65 63 74  n).  This direct
2b90: 6f 72 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61  ory should conta
2ba0: 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  in the..      //
2bb0: 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  / processor arch
2bc0: 69 74 65 63 74 75 72 65 20 73 70 65 63 69 66 69  itecture specifi
2bd0: 63 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65  c sub-directorie
2be0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
2bf0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
2c00: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2c10: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
2c20: 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ture">..      //
2c30: 2f 20 54 68 65 20 72 65 71 75 65 73 74 65 64 20  / The requested 
2c40: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
2c50: 65 63 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72  ecture, null for
2c60: 20 64 65 66 61 75 6c 74 20 28 74 68 65 0d 0a 20   default (the.. 
2c70: 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73       /// process
2c80: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
2c90: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
2ca0: 72 6f 63 65 73 73 29 2e 20 20 54 68 69 73 20 63  rocess).  This c
2cb0: 61 6c 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20  aller should..  
2cc0: 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61      /// almost a
2cd0: 6c 77 61 79 73 20 73 70 65 63 69 66 79 20 6e 75  lways specify nu
2ce0: 6c 6c 20 66 6f 72 20 74 68 69 73 20 70 61 72 61  ll for this para
2cf0: 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f  meter...      //
2d00: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2d10: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2d20: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
2d30: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
2d40: 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65 64 20  dle as returned 
2d50: 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 2d  by LoadLibrary -
2d60: 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 0d  OR- IntPtr.Zero.
2d70: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 74 68  .      /// if th
2d80: 65 20 6c 6f 61 64 69 6e 67 20 66 61 69 6c 73 20  e loading fails 
2d90: 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d  for any reason..
2da0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
2db0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
2dc0: 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74 50  vate static IntP
2dd0: 74 72 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  tr PreLoadSQLite
2de0: 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Dll(..          
2df0: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
2e00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  ,..          str
2e10: 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
2e20: 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20  hitecture..     
2e30: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
2e40: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
2e50: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
2e60: 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69  : If the specifi
2e70: 65 64 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  ed base director
2e80: 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74  y is null, use t
2e90: 68 65 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20  he default...   
2ea0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2eb0: 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f       if (directo
2ec0: 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
2ed0: 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63             direc
2ee0: 74 6f 72 79 20 3d 20 47 65 74 42 61 73 65 44 69  tory = GetBaseDi
2ef0: 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20  rectory();....  
2f00: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2f10: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
2f20: 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71  f we failed to q
2f30: 75 65 72 79 20 74 68 65 20 62 61 73 65 20 64 69  uery the base di
2f40: 72 65 63 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f  rectory, stop no
2f50: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
2f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
2f70: 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c  directory == nul
2f80: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2f90: 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
2fa0: 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
2fb0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2fc0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
2fd0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
2fe0: 69 62 72 61 72 79 20 65 78 69 73 74 73 20 69 6e  ibrary exists in
2ff0: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
3000: 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ory..          /
3010: 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20  /       itself, 
3020: 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
3030: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3040: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
3050: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
3060: 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69  eName(Path.Combi
3070: 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  ne(directory,.. 
3080: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
3090: 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20  ITE_DLL));....  
30a0: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
30b0: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
30c0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
30d0: 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
30e0: 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
30f0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3100: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
3110: 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63 65   specified proce
3120: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
3130: 65 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74  e is null, use t
3140: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
3150: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 2e 0d         default..
3160: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
3170: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
3180: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
3190: 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re == null)..   
31a0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
31b0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
31c0: 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41   = GetProcessorA
31d0: 72 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a  rchitecture();..
31e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
31f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
3200: 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
3210: 74 6f 20 71 75 65 72 79 20 74 68 65 20 70 72 6f  to query the pro
3220: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
3230: 75 72 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  ure, stop now...
3240: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3250: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3260: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
3270: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
3280: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3290: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
32a0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
32b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
32c0: 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c  : Build the full
32d0: 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e   path and file n
32e0: 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
32f0: 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
3300: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
3310: 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20  brary using the 
3320: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
3330: 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20  ecture name...  
3340: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3350: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
3360: 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
3370: 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 50  e(Path.Combine(P
3380: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65  ath.Combine(dire
3390: 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
33a0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
33b0: 72 63 68 69 74 65 63 74 75 72 65 29 2c 20 53 51  rchitecture), SQ
33c0: 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20  LITE_DLL));.... 
33d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
33e0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
33f0: 49 66 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65  If the file name
3400: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72   based on the pr
3410: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
3420: 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ture name..     
3430: 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66       // is not f
3440: 6f 75 6e 64 2c 20 74 72 79 20 75 73 69 6e 67 20  ound, try using 
3450: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 70  the associated p
3460: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
3470: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
3480: 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
3490: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
34a0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
34b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
34c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
34d0: 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
34e0: 74 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74  t to translate t
34f0: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
3500: 68 69 74 65 63 74 75 72 65 20 74 6f 20 61 0d 0a  hitecture to a..
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3520: 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 20         platform 
3530: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
3540: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3550: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c         string pl
3560: 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74  atformName = Get
3570: 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f  PlatformName(pro
3580: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
3590: 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  re);....        
35a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
35b0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
35c0: 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f   If we failed to
35d0: 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70   translate the p
35e0: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74  latform name, st
35f0: 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
3600: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
3610: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 6c 61           if (pla
3620: 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c  tformName == nul
3630: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
3640: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
3650: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
3660: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
3670: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
3680: 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
3690: 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
36a0: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
36b0: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
36c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
36d0: 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73        library us
36e0: 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ing the platform
36f0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
3700: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
3710: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
3720: 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e   = FixUpDllFileN
3730: 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65  ame(Path.Combine
3740: 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69  (Path.Combine(di
3750: 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
3760: 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 61 74              plat
3770: 66 6f 72 6d 4e 61 6d 65 29 2c 20 53 51 4c 49 54  formName), SQLIT
3780: 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20  E_DLL));....    
3790: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
37a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
37b0: 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65  OTE: If the file
37c0: 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2c   does not exist,
37d0: 20 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f 20   skip trying to 
37e0: 6c 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20 20  load it...      
37f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3800: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46            if (!F
3810: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
3820: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
3830: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3840: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
3850: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
3860: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
3870: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3880: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
3890: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
38a0: 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79 20 77  : Show exactly w
38b0: 68 65 72 65 20 77 65 20 61 72 65 20 74 72 79 69  here we are tryi
38c0: 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e  ng to load the n
38d0: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20  ative..         
38e0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51       //       SQ
38f0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 66 72 6f  Lite library fro
3900: 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m...            
3910: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3920: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
3930: 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(String.Forma
3940: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
3950: 20 20 20 20 20 20 22 54 72 79 69 6e 67 20 74 6f        "Trying to
3960: 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 53 51 4c   load native SQL
3970: 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30  ite library \"{0
3980: 7d 5c 22 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20  }\"...",..      
3990: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
39a0: 4e 61 6d 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Name));....     
39b0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
39c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
39d0: 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 6c  TE: Attempt to l
39e0: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c  oad the native l
39f0: 69 62 72 61 72 79 2e 20 20 54 68 69 73 20 77 69  ibrary.  This wi
3a00: 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20  ll either..     
3a10: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
3a20: 20 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69 64    return a valid
3a30: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
3a40: 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e  andle, return In
3a50: 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20  tPtr.Zero,..    
3a60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
3a70: 20 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20 65     or throw an e
3a80: 78 63 65 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  xception...     
3a90: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
3aa0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3ab0: 6e 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69  n LoadLibrary(fi
3ac0: 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  leName);..      
3ad0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
3ae0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
3af0: 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  n e)..          
3b00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3b10: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
3b20: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3b30: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
3b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
3b50: 2f 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20 67  / NOTE: First, g
3b60: 72 61 62 20 74 68 65 20 6c 61 73 74 20 57 69 6e  rab the last Win
3b70: 33 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e  32 error number.
3b80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b90: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3ba0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 61            int la
3bb0: 73 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68 61  stError = Marsha
3bc0: 6c 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45 72  l.GetLastWin32Er
3bd0: 72 6f 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ror();....      
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
3bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c00: 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20    // NOTE: Show 
3c10: 77 68 65 72 65 20 77 65 20 66 61 69 6c 65 64 20  where we failed 
3c20: 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69  to load the nati
3c30: 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
3c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
3c50: 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 66 72        library fr
3c60: 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68  om along with th
3c70: 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20 63 6f  e Win32 error co
3c80: 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  de and..        
3c90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
3ca0: 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 66     exception inf
3cb0: 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  ormation...     
3cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
3cd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3ce0: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
3cf0: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
3d00: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
3d10: 20 20 20 20 20 20 20 20 20 22 46 61 69 6c 65 64           "Failed
3d20: 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20   to load native 
3d30: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c  SQLite library \
3d40: 22 7b 30 7d 5c 22 20 22 20 2b 0d 0a 20 20 20 20  "{0}\" " +..    
3d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d60: 20 20 22 28 67 65 74 4c 61 73 74 45 72 72 6f 72    "(getLastError
3d70: 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a   = {1}): {2}",..
3d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d90: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20        fileName, 
3da0: 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b 20  lastError, e)); 
3db0: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
3dc0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
3dd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
3de0: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
3df0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3e00: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
3e10: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
3e20: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
3e30: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
3e40: 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
3e50: 72 6f 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  ro;..      }..#e
3e60: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ndif..#endif..  
3e70: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
3e80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
3e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ed0: 2f 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45  /....#if !SQLITE
3ee0: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66  _STANDARD....#if
3ef0: 20 21 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c   !USE_INTEROP_DL
3f00: 4c 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  L....#if !PLATFO
3f10: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
3f20: 4f 52 4b 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ORK..    private
3f30: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
3f40: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74  LITE_DLL = "Syst
3f50: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
3f60: 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ll";..#else..   
3f70: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
3f80: 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
3f90: 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65  L = "SQLite.Inte
3fa0: 72 6f 70 2e 30 38 30 2e 64 6c 6c 22 3b 0d 0a 23  rop.080.dll";..#
3fb0: 65 6e 64 69 66 20 2f 2f 20 50 4c 41 54 46 4f 52  endif // PLATFOR
3fc0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
3fd0: 52 4b 0d 0a 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  RK....#else..   
3fe0: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
3ff0: 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c  tring SQLITE_DLL
4000: 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72   = "SQLite.Inter
4010: 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66  op.dll";..#endif
4020: 20 2f 2f 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f   // USE_INTEROP_
4030: 44 4c 4c 0d 0a 0d 0a 23 65 6c 73 65 0d 0a 20 20  DLL....#else..  
4040: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
4050: 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
4060: 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a  L = "sqlite3";..
4070: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
4080: 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75 73   This section us
4090: 65 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73  es interop calls
40a0: 20 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63 68   that also fetch
40b0: 20 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f 20   text length to 
40c0: 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73  optimize convers
40d0: 69 6f 6e 2e 20 20 0d 0a 20 20 20 20 2f 2f 20 57  ion.  ..    // W
40e0: 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74  hen using the st
40f0: 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20 63  andard dll, we c
4100: 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73 65  an replace these
4110: 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d   calls with norm
4120: 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73 20  al sqlite calls 
4130: 61 6e 64 20 0d 0a 20 20 20 20 2f 2f 20 64 6f 20  and ..    // do 
4140: 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76  unoptimized conv
4150: 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20  ersions instead 
4160: 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20  afterwards..    
4170: 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20  #region interop 
4180: 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68  added textlength
4190: 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53   calls....#if !S
41a0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
41b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
41c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
41d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
41e0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
41f0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
4200: 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74  rameter_name_int
4210: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
4220: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
4230: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
4240: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
4250: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
4260: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
4270: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
4280: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
4290: 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  base_name_intero
42a0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
42b0: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
42c0: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
42d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
42e0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
42f0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4300: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
4310: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
4320: 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
4330: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
4340: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
4350: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
4360: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
4370: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
4380: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
4390: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
43a0: 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
43b0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
43c0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
43d0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
43e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
43f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
4400: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4410: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
4420: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
4430: 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72  decltype16_inter
4440: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
4450: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
4460: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
4470: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4480: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
4490: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
44a0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
44b0: 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69  e3_column_name_i
44c0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
44d0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
44e0: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
44f0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
4500: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
4510: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
4520: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
4530: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
4540: 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
4550: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
4560: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
4570: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
4580: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
4590: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
45a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
45b0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
45c0: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f  umn_origin_name_
45d0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
45e0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
45f0: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
4600: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
4610: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
4620: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4630: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
4640: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
4650: 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74  rigin_name16_int
4660: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
4670: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
4680: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
4690: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
46a0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
46b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
46c0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
46d0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
46e0: 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  e_name_interop(I
46f0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
4700: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
4710: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
4720: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
4730: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
4740: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4750: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
4760: 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
4770: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
4780: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
4790: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
47a0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
47b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
47c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
47d0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
47e0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
47f0: 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  n_text_interop(I
4800: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
4810: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
4820: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
4830: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
4840: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
4850: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4860: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
4870: 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74  olumn_text16_int
4880: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
4890: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
48a0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
48b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
48c0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
48d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
48e0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
48f0: 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65  ite3_errmsg_inte
4900: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 6f  rop(IntPtr db, o
4910: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
4920: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
4930: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
4940: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
4950: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
4960: 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65  te3_prepare_inte
4970: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49  rop(IntPtr db, I
4980: 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20  ntPtr pSql, int 
4990: 6e 42 79 74 65 73 2c 20 6f 75 74 20 49 6e 74 50  nBytes, out IntP
49a0: 74 72 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74  tr stmt, out Int
49b0: 50 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 6f  Ptr ptrRemain, o
49c0: 75 74 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b  ut int nRemain);
49d0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
49e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
49f0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
4a00: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
4a10: 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f  sqlite3_table_co
4a20: 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e  lumn_metadata_in
4a30: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
4a40: 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20   byte[] dbName, 
4a50: 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20  byte[] tblName, 
4a60: 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20  byte[] colName, 
4a70: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 44 61  out IntPtr ptrDa
4a80: 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e 74 50  taType, out IntP
4a90: 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 6f  tr ptrCollSeq, o
4aa0: 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20  ut int notNull, 
4ab0: 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72 79 4b  out int primaryK
4ac0: 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75 74 6f  ey, out int auto
4ad0: 49 6e 63 2c 20 6f 75 74 20 69 6e 74 20 64 74 4c  Inc, out int dtL
4ae0: 65 6e 2c 20 6f 75 74 20 69 6e 74 20 63 73 4c 65  en, out int csLe
4af0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
4b00: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
4b10: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
4b20: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
4b30: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
4b40: 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70  lue_text_interop
4b50: 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 69  (IntPtr p, out i
4b60: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
4b70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4b80: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
4b90: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4ba0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
4bb0: 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f  e3_value_text16_
4bc0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70  interop(IntPtr p
4bd0: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
4be0: 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ...#endif..// !S
4bf0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
4c00: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
4c10: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65  ....    // These
4c20: 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65   functions add e
4c30: 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  xisting function
4c40: 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20  ality on top of 
4c50: 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69  SQLite and requi
4c60: 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f  re a little effo
4c70: 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65  rt to..    // ge
4c80: 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75  t working when u
4c90: 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72  sing the standar
4ca0: 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  d SQLite library
4cb0: 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69  ...    #region i
4cc0: 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e  nterop added fun
4cd0: 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69  ctionality....#i
4ce0: 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
4cf0: 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  RD....    [DllIm
4d00: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
4d10: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
4d20: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
4d30: 74 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f  t sqlite3_close_
4d40: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
4d50: 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  b);....    [DllI
4d60: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
4d70: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
4d80: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
4d90: 6e 74 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  nt sqlite3_creat
4da0: 65 5f 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72  e_function_inter
4db0: 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  op(IntPtr db, by
4dc0: 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e  te[] strName, in
4dd0: 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79  t nArgs, int nTy
4de0: 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  pe, IntPtr pvUse
4df0: 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  r, SQLiteCallbac
4e00: 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61  k func, SQLiteCa
4e10: 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51  llback fstep, SQ
4e20: 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63  LiteFinalCallbac
4e30: 6b 20 66 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65  k ffinal, int ne
4e40: 65 64 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20  edCollSeq);.... 
4e50: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
4e60: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
4e70: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4e80: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
4e90: 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65  e3_finalize_inte
4ea0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
4eb0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
4ec0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
4ed0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
4ee0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
4ef0: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e   sqlite3_open_in
4f00: 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66  terop(byte[] utf
4f10: 38 46 69 6c 65 6e 61 6d 65 2c 20 69 6e 74 20 66  8Filename, int f
4f20: 6c 61 67 73 2c 20 6f 75 74 20 49 6e 74 50 74 72  lags, out IntPtr
4f30: 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c   db);....    [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 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 70 65   int sqlite3_ope
4f80: 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74 65  n16_interop(byte
4f90: 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c  [] utf8Filename,
4fa0: 20 69 6e 74 20 66 6c 61 67 73 2c 20 6f 75 74 20   int flags, out 
4fb0: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
4fc0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
4fd0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
4fe0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4ff0: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
5000: 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70  e3_reset_interop
5010: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
5020: 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
5030: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
5040: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
5050: 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74  ...    // The st
5060: 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20  andard api call 
5070: 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74  equivalents of t
5080: 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70  he above interop
5090: 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67   calls..    #reg
50a0: 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72  ion standard ver
50b0: 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70  sions of interop
50c0: 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69   functions....#i
50d0: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
50e0: 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  D....#if !PLATFO
50f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
5100: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
5110: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
5120: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
5130: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
5140: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
5150: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
5160: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5170: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
5180: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5190: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
51a0: 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 64  3_close(IntPtr d
51b0: 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
51c0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
51d0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
51e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
51f0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
5200: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
5210: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
5220: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
5230: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5240: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
5250: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5260: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
5270: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
5280: 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ion(IntPtr db, b
5290: 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69  yte[] strName, i
52a0: 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54  nt nArgs, int nT
52b0: 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73  ype, IntPtr pvUs
52c0: 65 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  er, SQLiteCallba
52d0: 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43  ck func, SQLiteC
52e0: 61 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53  allback fstep, S
52f0: 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61  QLiteFinalCallba
5300: 63 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23  ck ffinal);....#
5310: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
5320: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
5330: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5340: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
5350: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
5360: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
5370: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
5380: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5390: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
53a0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
53b0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
53c0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 66 69 6e 61  int sqlite3_fina
53d0: 6c 69 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74  lize(IntPtr stmt
53e0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
53f0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5400: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
5410: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
5420: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5430: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
5440: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
5450: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
5460: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5470: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
5480: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5490: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
54a0: 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b  e3_open_v2(byte[
54b0: 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
54c0: 6f 75 74 20 49 6e 74 50 74 72 20 64 62 2c 20 69  out IntPtr db, i
54d0: 6e 74 20 66 6c 61 67 73 2c 20 49 6e 74 50 74 72  nt flags, IntPtr
54e0: 20 76 66 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50   vfs);....#if !P
54f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
5500: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
5510: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5520: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
5530: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
5540: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
5550: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
5560: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
5570: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
5580: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
5590: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
55a0: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
55b0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
55c0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
55d0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 70 65   int sqlite3_ope
55e0: 6e 31 36 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  n16(string fileN
55f0: 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ame, out IntPtr 
5600: 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
5610: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5620: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
5630: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5640: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
5650: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
5660: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
5670: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
5680: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5690: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
56a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
56b0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
56c0: 69 74 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74  ite3_reset(IntPt
56d0: 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
56e0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
56f0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
5700: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5710: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
5720: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
5730: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
5740: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
5750: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5760: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
5770: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5780: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5790: 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  Ptr sqlite3_bind
57a0: 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28  _parameter_name(
57b0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
57c0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
57d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
57e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
57f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5800: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
5810: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
5820: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
5830: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
5840: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5850: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
5860: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5870: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5880: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
5890: 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
58a0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
58b0: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
58c0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
58d0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
58e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
58f0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
5900: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
5910: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
5920: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
5930: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5940: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
5950: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
5960: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
5970: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
5980: 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
5990: 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
59a0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
59b0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
59c0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
59d0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
59e0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
59f0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
5a00: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
5a10: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
5a20: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
5a30: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
5a40: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
5a50: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5a60: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
5a70: 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28  column_decltype(
5a80: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
5a90: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
5aa0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
5ab0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
5ac0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5ad0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
5ae0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
5af0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
5b00: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
5b10: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5b20: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
5b30: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5b40: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5b50: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
5b60: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 49 6e  mn_decltype16(In
5b70: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
5b80: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
5b90: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
5ba0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
5bb0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5bc0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
5bd0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
5be0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
5bf0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
5c00: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5c10: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
5c20: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5c30: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
5c40: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
5c50: 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
5c60: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
5c70: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
5c80: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
5c90: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5ca0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
5cb0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
5cc0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5cd0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
5ce0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
5cf0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
5d00: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
5d10: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5d20: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
5d30: 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28  3_column_name16(
5d40: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
5d50: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
5d60: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
5d70: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
5d80: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5d90: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
5da0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
5db0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
5dc0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
5dd0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5de0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
5df0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5e00: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5e10: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
5e20: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49  mn_origin_name(I
5e30: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
5e40: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
5e50: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
5e60: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
5e70: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5e80: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
5e90: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
5ea0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
5eb0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
5ec0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5ed0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
5ee0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
5ef0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
5f00: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
5f10: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28  n_origin_name16(
5f20: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
5f30: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
5f40: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
5f50: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
5f60: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5f70: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
5f80: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
5f90: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
5fa0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
5fb0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5fc0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
5fd0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5fe0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5ff0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
6000: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e  mn_table_name(In
6010: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
6020: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
6030: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6040: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6050: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6060: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6070: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6080: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6090: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
60a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
60b0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
60c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
60d0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
60e0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
60f0: 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e  _table_name16(In
6100: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
6110: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
6120: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6130: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6140: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6150: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6160: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6170: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6180: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6190: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
61a0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
61b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
61c0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
61d0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
61e0: 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d  _text(IntPtr stm
61f0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
6200: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
6210: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
6220: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6230: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
6240: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
6250: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6260: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
6270: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
6280: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
6290: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
62a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
62b0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
62c0: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28  3_column_text16(
62d0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
62e0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
62f0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
6300: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
6310: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6320: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
6330: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
6340: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
6350: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
6360: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6370: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
6380: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6390: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
63a0: 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d  Ptr sqlite3_errm
63b0: 73 67 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  sg(IntPtr db);..
63c0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
63d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
63e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
63f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
6400: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
6410: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6420: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
6430: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
6440: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
6450: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
6460: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
6470: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70  rn int sqlite3_p
6480: 72 65 70 61 72 65 28 49 6e 74 50 74 72 20 64 62  repare(IntPtr db
6490: 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
64a0: 6e 74 20 6e 42 79 74 65 73 2c 20 6f 75 74 20 49  nt nBytes, out I
64b0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 6f 75 74 20  ntPtr stmt, out 
64c0: 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
64d0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
64e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
64f0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
6500: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
6510: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6520: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
6530: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
6540: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
6550: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6560: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
6570: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6580: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
6590: 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
65a0: 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20  metadata(IntPtr 
65b0: 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
65c0: 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
65d0: 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d  e, byte[] colNam
65e0: 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74  e, out IntPtr pt
65f0: 72 44 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49  rDataType, out I
6600: 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71  ntPtr ptrCollSeq
6610: 2c 20 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c  , out int notNul
6620: 6c 2c 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61  l, out int prima
6630: 72 79 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61  ryKey, out int a
6640: 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20  utoInc);....#if 
6650: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
6660: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
6670: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6680: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
6690: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
66a0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
66b0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
66c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
66d0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
66e0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
66f0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
6700: 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
6710: 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29  e_text(IntPtr p)
6720: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
6730: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
6740: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
6750: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
6760: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
6770: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
6780: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
6790: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
67a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
67b0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
67c0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
67d0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
67e0: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
67f0: 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
6800: 23 65 6e 64 69 66 0d 0a 2f 2f 20 53 51 4c 49 54  #endif..// SQLIT
6810: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
6820: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6830: 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e      // These fun
6840: 63 74 69 6f 6e 73 20 61 72 65 20 63 75 73 74 6f  ctions are custo
6850: 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f 20 65 71  m and have no eq
6860: 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72  uivalent standar
6870: 64 20 6c 69 62 72 61 72 79 20 6d 65 74 68 6f 64  d library method
6880: 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66  ...    // All of
6890: 20 74 68 65 6d 20 61 72 65 20 22 6e 69 63 65 20   them are "nice 
68a0: 74 6f 20 68 61 76 65 73 22 20 61 6e 64 20 6e 6f  to haves" and no
68b0: 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20 22 6e  t necessarily "n
68c0: 65 65 64 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a  eed to haves"...
68d0: 20 20 20 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65      #region no e
68e0: 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61  quivalent standa
68f0: 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66  rd method....#if
6900: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
6910: 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
6920: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
6930: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6940: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
6950: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74  Ptr sqlite3_cont
6960: 65 78 74 5f 63 6f 6c 6c 73 65 71 28 49 6e 74 50  ext_collseq(IntP
6970: 74 72 20 63 6f 6e 74 65 78 74 2c 20 6f 75 74 20  tr context, out 
6980: 69 6e 74 20 74 79 70 65 2c 20 6f 75 74 20 69 6e  int type, out in
6990: 74 20 65 6e 63 2c 20 6f 75 74 20 69 6e 74 20 6c  t enc, out int l
69a0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
69b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
69c0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
69d0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
69e0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74  int sqlite3_cont
69f0: 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 28  ext_collcompare(
6a00: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
6a10: 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70  byte[] p1, int p
6a20: 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c  1len, byte[] p2,
6a30: 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a   int p2len);....
6a40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6a50: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
6a60: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6a70: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
6a80: 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64  te3_cursor_rowid
6a90: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
6aa0: 74 20 63 75 72 73 6f 72 2c 20 6f 75 74 20 6c 6f  t cursor, out lo
6ab0: 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20  ng rowid);....  
6ac0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6ad0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
6ae0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
6af0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
6b00: 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69  3_index_column_i
6b10: 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  nfo_interop(IntP
6b20: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 63 61  tr db, byte[] ca
6b30: 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e  talog, byte[] In
6b40: 64 65 78 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  dexName, byte[] 
6b50: 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 6f 75 74 20  ColumnName, out 
6b60: 69 6e 74 20 73 6f 72 74 4f 72 64 65 72 2c 20 6f  int sortOrder, o
6b70: 75 74 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20  ut int onError, 
6b80: 6f 75 74 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61  out IntPtr Colla
6b90: 74 69 6f 6e 2c 20 6f 75 74 20 69 6e 74 20 63 6f  tion, out int co
6ba0: 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  lllen);....    [
6bb0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6bc0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
6bd0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
6be0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
6bf0: 72 65 73 65 74 61 6c 6c 5f 69 6e 74 65 72 6f 70  resetall_interop
6c00: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
6c10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6c20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
6c30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6c40: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
6c50: 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72  te3_table_cursor
6c60: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
6c70: 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52  t db, int tableR
6c80: 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e  ootPage);....#en
6c90: 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f  dif..// !SQLITE_
6ca0: 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
6cb0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
6cc0: 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50    // Standard AP
6cd0: 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61  I calls global a
6ce0: 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20  cross versions. 
6cf0: 20 54 68 65 72 65 20 61 72 65 20 61 20 66 65 77   There are a few
6d00: 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e   instances of in
6d10: 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20  terop calls..   
6d20: 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e   // scattered in
6d30: 20 68 65 72 65 2c 20 62 75 74 20 74 68 65 79 20   here, but they 
6d40: 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20  are only active 
6d50: 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  when PLATFORM_CO
6d60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69  MPACTFRAMEWORK i
6d70: 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20  s declared...   
6d80: 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72   #region standar
6d90: 64 20 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c  d sqlite api cal
6da0: 6c 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  ls....#if !PLATF
6db0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
6dc0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
6dd0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
6de0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6df0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
6e00: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
6e10: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
6e20: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6e30: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
6e40: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6e50: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
6e60: 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
6e70: 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
6e80: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
6e90: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
6ea0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6eb0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
6ec0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
6ed0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
6ee0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
6ef0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6f00: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
6f10: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6f20: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
6f30: 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28  qlite3_sourceid(
6f40: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
6f50: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
6f60: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
6f70: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
6f80: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6f90: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
6fa0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
6fb0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
6fc0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6fd0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
6fe0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
6ff0: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
7000: 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e  te3_interrupt(In
7010: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
7020: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7030: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7040: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7050: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
7060: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
7070: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
7080: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
7090: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
70a0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
70b0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
70c0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
70d0: 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  ng sqlite3_last_
70e0: 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74  insert_rowid(Int
70f0: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
7100: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7110: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7120: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7130: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7140: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7150: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7160: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7170: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7180: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7190: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
71a0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
71b0: 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
71c0: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
71d0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
71e0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
71f0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7200: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7210: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7220: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7230: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
7240: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7250: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
7260: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
7270: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
7280: 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65   long sqlite3_me
7290: 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 0d 0a  mory_used();....
72a0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
72b0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
72c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
72d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
72e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
72f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7300: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
7310: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7320: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
7330: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
7340: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
7350: 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65   long sqlite3_me
7360: 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28 69  mory_highwater(i
7370: 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a  nt resetFlag);..
7380: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7390: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
73a0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
73b0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
73c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
73d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
73e0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
73f0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7400: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7410: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7420: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7430: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73  rn int sqlite3_s
7440: 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69  hutdown();....#i
7450: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7460: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7470: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7480: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7490: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
74a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
74b0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
74c0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
74d0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
74e0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
74f0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
7500: 6e 74 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  nt sqlite3_busy_
7510: 74 69 6d 65 6f 75 74 28 49 6e 74 50 74 72 20 64  timeout(IntPtr d
7520: 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23  b, int ms);....#
7530: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7540: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7550: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7560: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7570: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7580: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7590: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
75a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
75b0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
75c0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
75d0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
75e0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
75f0: 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d  _blob(IntPtr stm
7600: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79  t, int index, By
7610: 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
7620: 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54  nSize, IntPtr nT
7630: 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69  ransient);....#i
7640: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7650: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7660: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7670: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7680: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7690: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
76a0: 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
76b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
76c0: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
76d0: 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  ind_double(IntPt
76e0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
76f0: 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  x, double value)
7700: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
7710: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7720: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
7730: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7740: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  n int sqlite3_bi
7750: 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  nd_double_intero
7760: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
7770: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f  nt index, ref do
7780: 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
7790: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
77a0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
77b0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
77c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
77d0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
77e0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
77f0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
7800: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
7810: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7820: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
7830: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
7840: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
7850: 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e  ite3_bind_int(In
7860: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
7870: 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c 75 65 29  ndex, int value)
7880: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ;....    //..   
7890: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72   // NOTE: This r
78a0: 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73  eally just calls
78b0: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
78c0: 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74  nt"; however, it
78d0: 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f   has the..    //
78e0: 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74         correct t
78f0: 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f  ype signature fo
7900: 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 28 33  r an unsigned (3
7910: 32 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d  2-bit) integer..
7920: 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c  .    //..#if !PL
7930: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7940: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7950: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7960: 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
7970: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
7980: 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  nt", CallingConv
7990: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
79a0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
79b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
79c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
79d0: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
79e0: 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
79f0: 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  _int")]..#endif.
7a00: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
7a10: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
7a20: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
7a30: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
7a40: 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76  nt index, uint v
7a50: 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
7a60: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7a70: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7a80: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7a90: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7aa0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7ab0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7ac0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
7ad0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
7ae0: 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
7af0: 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d  int64(IntPtr stm
7b00: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c 6f  t, int index, lo
7b10: 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73  ng value);..#els
7b20: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7b30: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7b40: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
7b50: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
7b60: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
7b70: 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
7b80: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
7b90: 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
7ba0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
7bb0: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
7bc0: 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a  E: This really j
7bd0: 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74  ust calls "sqlit
7be0: 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20  e3_bind_int64"; 
7bf0: 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20  however, it has 
7c00: 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
7c10: 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73    correct type s
7c20: 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20  ignature for an 
7c30: 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36  unsigned long (6
7c40: 34 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d  4-bit) integer..
7c50: 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c  .    //..#if !PL
7c60: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7c70: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7c80: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7c90: 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
7ca0: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
7cb0: 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nt64", CallingCo
7cc0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7cd0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7ce0: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
7cf0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
7d00: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
7d10: 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20  d_uint64(IntPtr 
7d20: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
7d30: 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
7d40: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
7d50: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7d60: 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
7d70: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
7d80: 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20  64_interop")].. 
7d90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7da0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
7db0: 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
7dc0: 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
7dd0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
7de0: 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75  , ref ulong valu
7df0: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
7e00: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7e10: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7e20: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7e30: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7e40: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7e50: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7e60: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7e70: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7e80: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7e90: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
7ea0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7eb0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
7ec0: 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d  _null(IntPtr stm
7ed0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
7ee0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7ef0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7f00: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7f10: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7f20: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7f30: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7f40: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7f50: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7f60: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7f70: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7f80: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7f90: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
7fa0: 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74 72 20  ind_text(IntPtr 
7fb0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
7fc0: 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
7fd0: 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nlen, IntPtr 
7fe0: 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
7ff0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
8000: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8010: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8020: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
8030: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
8040: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8050: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
8060: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8070: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
8080: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
8090: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
80a0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
80b0: 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e  d_parameter_coun
80c0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  t(IntPtr stmt);.
80d0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
80e0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
80f0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8100: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8110: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8120: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8130: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8140: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8150: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8160: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8170: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8180: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
8190: 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
81a0: 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74 6d 74  ndex(IntPtr stmt
81b0: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
81c0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
81d0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
81e0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
81f0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8200: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8210: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8220: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8230: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
8240: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8250: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
8260: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8270: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
8280: 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28  e3_column_count(
8290: 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
82a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
82b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
82c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
82d0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
82e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
82f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8300: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
8310: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8320: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
8330: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
8340: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
8350: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 74  n int sqlite3_st
8360: 65 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ep(IntPtr stmt);
8370: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8380: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8390: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
83a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
83b0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
83c0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
83d0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
83e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
83f0: 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
8400: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
8410: 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  ouble(IntPtr stm
8420: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
8430: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
8440: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8450: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
8460: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
8470: 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  oid sqlite3_colu
8480: 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  mn_double_intero
8490: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
84a0: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 64 6f  nt index, out do
84b0: 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
84c0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
84d0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
84e0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
84f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8500: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8510: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8520: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
8530: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
8540: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8550: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
8560: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8570: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
8580: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28  ite3_column_int(
8590: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
85a0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
85b0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
85c0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
85d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
85e0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
85f0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
8600: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
8610: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
8620: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8630: 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f   long sqlite3_co
8640: 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74  lumn_int64(IntPt
8650: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
8660: 78 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  x);..#else..    
8670: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8680: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
8690: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
86a0: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
86b0: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e  _column_int64_in
86c0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
86d0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
86e0: 74 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  t long value);..
86f0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
8700: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
8710: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
8720: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8730: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
8740: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
8750: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
8760: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
8770: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8780: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
8790: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
87a0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
87b0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
87c0: 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d  _blob(IntPtr stm
87d0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
87e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
87f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
8800: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8810: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
8820: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
8830: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8840: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
8850: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
8860: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8870: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
8880: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
8890: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
88a0: 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50  olumn_bytes(IntP
88b0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
88c0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
88d0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
88e0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
88f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8900: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8910: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8920: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
8930: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
8940: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8950: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
8960: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8970: 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
8980: 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f  inity sqlite3_co
8990: 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72  lumn_type(IntPtr
89a0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
89b0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
89c0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
89d0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
89e0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
89f0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8a00: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8a10: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8a20: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
8a30: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8a40: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
8a50: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8a60: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
8a70: 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
8a80: 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ion(IntPtr db, b
8a90: 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69  yte[] strName, i
8aa0: 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72  nt nType, IntPtr
8ab0: 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43   pvUser, SQLiteC
8ac0: 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d  ollation func);.
8ad0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
8ae0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8af0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8b00: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8b10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8b20: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8b30: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8b40: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8b50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8b60: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8b70: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8b80: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
8b90: 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
8ba0: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
8bb0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8bc0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8bd0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8be0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8bf0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8c00: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8c10: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8c20: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8c30: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8c40: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8c50: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8c60: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
8c70: 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49  te3_value_blob(I
8c80: 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
8c90: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8ca0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8cb0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8cc0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
8cd0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
8ce0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
8cf0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
8d00: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8d10: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
8d20: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
8d30: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
8d40: 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
8d50: 62 79 74 65 73 28 49 6e 74 50 74 72 20 70 29 3b  bytes(IntPtr p);
8d60: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8d70: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8d80: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8d90: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8da0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8db0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8dc0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
8dd0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8de0: 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
8df0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
8e00: 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  uble(IntPtr p);.
8e10: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
8e20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8e30: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
8e40: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8e50: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
8e60: 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  ue_double_intero
8e70: 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20  p(IntPtr p, out 
8e80: 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
8e90: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
8ea0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
8eb0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
8ec0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8ed0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
8ee0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
8ef0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
8f00: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
8f10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8f20: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
8f30: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8f40: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
8f50: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
8f60: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
8f70: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
8f80: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8f90: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8fa0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8fb0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8fc0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
8fd0: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
8fe0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8ff0: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
9000: 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74  _value_int64(Int
9010: 50 74 72 20 70 29 3b 0d 0a 23 65 6c 73 65 0d 0a  Ptr p);..#else..
9020: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9030: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
9040: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9050: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
9060: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
9070: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
9080: 70 2c 20 6f 75 74 20 49 6e 74 36 34 20 76 61 6c  p, out Int64 val
9090: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
90a0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
90b0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
90c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
90d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
90e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
90f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9100: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
9110: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9120: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
9130: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
9140: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
9150: 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
9160: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
9170: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
9180: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9190: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
91a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
91b0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
91c0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
91d0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
91e0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
91f0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9200: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
9210: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
9220: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9230: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
9240: 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ult_blob(IntPtr 
9250: 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
9260: 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
9270: 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
9280: 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
9290: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
92a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
92b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
92c0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
92d0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
92e0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
92f0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
9300: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
9310: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
9320: 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  t_double(IntPtr 
9330: 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20  context, double 
9340: 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
9350: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9360: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
9370: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9380: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
9390: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
93a0: 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
93b0: 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64  r context, ref d
93c0: 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
93d0: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
93e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
93f0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9400: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9410: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9420: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9430: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
9440: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
9450: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9460: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
9470: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9480: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
9490: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
94a0: 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ror(IntPtr conte
94b0: 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72  xt, byte[] strEr
94c0: 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d  r, int nLen);...
94d0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
94e0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
94f0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9500: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
9510: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
9520: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9530: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
9540: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9550: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
9560: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
9570: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9580: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
9590: 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72  esult_int(IntPtr
95a0: 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61   context, int va
95b0: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
95c0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
95d0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
95e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
95f0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9600: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9610: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
9620: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
9630: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
9640: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
9650: 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63  t_int64(IntPtr c
9660: 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c  ontext, long val
9670: 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ue);..#else..   
9680: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9690: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
96a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
96b0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
96c0: 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69  3_result_int64_i
96d0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
96e0: 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34  ntext, ref Int64
96f0: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
9700: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
9710: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9720: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
9730: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9740: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9750: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9760: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
9770: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9780: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9790: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
97a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
97b0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
97c0: 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e  3_result_null(In
97d0: 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
97e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
97f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9800: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9810: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9820: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9830: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9840: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
9850: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9860: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
9870: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
9880: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9890: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
98a0: 72 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50  result_text(IntP
98b0: 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65  tr context, byte
98c0: 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c  [] value, int nL
98d0: 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  en, IntPtr pvRes
98e0: 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
98f0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
9900: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
9910: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9920: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
9930: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9940: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
9950: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
9960: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9970: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
9980: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
9990: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
99a0: 74 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65  tr sqlite3_aggre
99b0: 67 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74  gate_context(Int
99c0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
99d0: 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66   nBytes);....#if
99e0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
99f0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9a00: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9a10: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9a20: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9a30: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9a40: 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
9a50: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
9a60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
9a70: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9a80: 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
9a90: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
9aa0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
9ab0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9ac0: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
9ad0: 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74 50  bind_text16(IntP
9ae0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
9af0: 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65  ex, string value
9b00: 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
9b10: 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
9b20: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
9b30: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9b40: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9b50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9b60: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9b70: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9b80: 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
9b90: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
9ba0: 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
9bb0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9bc0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
9bd0: 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
9be0: 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
9bf0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9c00: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
9c10: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
9c20: 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63 6f 6e  ror16(IntPtr con
9c30: 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72  text, string str
9c40: 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  Name, int nLen);
9c50: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
9c60: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9c70: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
9c80: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9c90: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9ca0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9cb0: 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
9cc0: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
9cd0: 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
9ce0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9cf0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
9d00: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
9d10: 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
9d20: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
9d30: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
9d40: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74  sqlite3_result_t
9d50: 65 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f 6e  ext16(IntPtr con
9d60: 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72  text, string str
9d70: 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20  Name, int nLen, 
9d80: 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
9d90: 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
9da0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9db0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9dc0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9dd0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9de0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9df0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9e00: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9e10: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9e20: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9e30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9e40: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
9e50: 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64  te3_key(IntPtr d
9e60: 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
9e70: 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23  nt keylen);....#
9e80: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9e90: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9ea0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9eb0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9ec0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
9ed0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
9ee0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
9ef0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9f00: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
9f10: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
9f20: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9f30: 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6b 65  int sqlite3_reke
9f40: 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
9f50: 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
9f60: 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  len);....#if !PL
9f70: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9f80: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9f90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9fa0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9fb0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9fc0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
9fd0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
9fe0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9ff0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
a000: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
a010: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
a020: 20 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f   sqlite3_update_
a030: 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20  hook(IntPtr db, 
a040: 53 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c  SQLiteUpdateCall
a050: 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
a060: 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
a070: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
a080: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
a090: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a0a0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
a0b0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
a0c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
a0d0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
a0e0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a0f0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
a100: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
a110: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
a120: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
a130: 6d 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  mmit_hook(IntPtr
a140: 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69   db, SQLiteCommi
a150: 74 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  tCallback func, 
a160: 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
a170: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
a180: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
a190: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
a1a0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
a1b0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a1c0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a1d0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
a1e0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
a1f0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
a200: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
a210: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
a220: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
a230: 65 33 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20  e3_trace(IntPtr 
a240: 64 62 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43  db, SQLiteTraceC
a250: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
a260: 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
a270: 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71  .    // Since sq
a280: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74  lite3_config() t
a290: 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20  akes a variable 
a2a0: 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77  argument list, w
a2b0: 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f  e have to overlo
a2c0: 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d  ad declarations.
a2d0: 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20  .    // for all 
a2e0: 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20  possible calls. 
a2f0: 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72 65   For now, we are
a300: 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20 74   only exposing t
a310: 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
a320: 5f 4c 4f 47 20 63 61 6c 6c 2e 0d 0a 23 69 66 20  _LOG call...#if 
a330: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a340: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a350: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a360: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a370: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a380: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a390: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
a3a0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a3b0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
a3c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a3d0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
a3e0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28   sqlite3_config(
a3f0: 69 6e 74 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f  int op, SQLiteLo
a400: 67 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  gCallback func, 
a410: 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
a420: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
a430: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
a440: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
a450: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
a460: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a470: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a480: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
a490: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
a4a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
a4b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
a4c0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
a4d0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
a4e0: 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b  e3_rollback_hook
a4f0: 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
a500: 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61  teRollbackCallba
a510: 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
a520: 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
a530: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a540: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a550: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a560: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a570: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a580: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a590: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
a5a0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a5b0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
a5c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a5d0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
a5e0: 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 68  Ptr sqlite3_db_h
a5f0: 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  andle(IntPtr stm
a600: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
a610: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a620: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a630: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a640: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a650: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a660: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a670: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a680: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a690: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
a6a0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a6b0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
a6c0: 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74  qlite3_next_stmt
a6d0: 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
a6e0: 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
a6f0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a700: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a710: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a720: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a730: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a740: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a750: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a760: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a770: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a780: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a790: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
a7a0: 74 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 49  t sqlite3_exec(I
a7b0: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
a7c0: 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72 20   strSql, IntPtr 
a7d0: 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74 50  pvCallback, IntP
a7e0: 74 72 20 70 76 50 61 72 61 6d 2c 20 6f 75 74 20  tr pvParam, out 
a7f0: 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0d  IntPtr errMsg);.
a800: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
a810: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
a820: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
a830: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
a840: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a850: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a860: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
a870: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
a880: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
a890: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
a8a0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
a8b0: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
a8c0: 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49  get_autocommit(I
a8d0: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
a8e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
a8f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
a900: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a910: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
a920: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
a930: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
a940: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
a950: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a960: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
a970: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
a980: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
a990: 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  nt sqlite3_exten
a9a0: 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
a9b0: 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
a9c0: 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21  onoff);....#if !
a9d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a9e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a9f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
aa00: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
aa10: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
aa20: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
aa30: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
aa40: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
aa50: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
aa60: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
aa70: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
aa80: 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28  sqlite3_errcode(
aa90: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
aaa0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
aab0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
aac0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
aad0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
aae0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
aaf0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
ab00: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
ab10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ab20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
ab30: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
ab40: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
ab50: 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 74 65  int sqlite3_exte
ab60: 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49 6e 74  nded_errcode(Int
ab70: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
ab80: 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33  // Since sqlite3
ab90: 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20 76  _log() takes a v
aba0: 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74  ariable argument
abb0: 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74   list, we have t
abc0: 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61  o overload decla
abd0: 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20  rations..    // 
abe0: 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65  for all possible
abf0: 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77   calls.  For now
ac00: 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65 78  , we are only ex
ac10: 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65 20  posing a single 
ac20: 73 74 72 69 6e 67 2c 20 61 6e 64 20 0d 0a 20 20  string, and ..  
ac30: 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74    // depend on t
ac40: 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72  he caller to for
ac50: 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d  mat the string..
ac60: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ac70: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ac80: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ac90: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
aca0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
acb0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
acc0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
acd0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ace0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
acf0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
ad00: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
ad10: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c  n void sqlite3_l
ad20: 6f 67 28 69 6e 74 20 69 45 72 72 43 6f 64 65 2c  og(int iErrCode,
ad30: 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29   byte[] zFormat)
ad40: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
ad50: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ad60: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ad70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
ad80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ad90: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
ada0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
adb0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
adc0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
add0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
ade0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
adf0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
ae00: 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49  3_file_control(I
ae10: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
ae20: 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70   zDbName, int op
ae30: 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b 0d  , IntPtr pArg);.
ae40: 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
ae50: 6e 0d 0a 20 20 7d 0d 0a 0d 0a 23 69 66 20 50 4c  n..  }....#if PL
ae60: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ae70: 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72  AMEWORK..  inter
ae80: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61  nal abstract cla
ae90: 73 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  ss CriticalHandl
aea0: 65 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d  e : IDisposable.
aeb0: 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74  .  {..    privat
aec0: 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64  e bool _isClosed
aed0: 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ;..    protected
aee0: 20 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d   IntPtr handle;.
aef0: 0a 20 20 20 20 0d 0a 20 20 20 20 70 72 6f 74 65  .    ..    prote
af00: 63 74 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e  cted CriticalHan
af10: 64 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c  dle(IntPtr inval
af20: 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a  idHandleValue)..
af30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e      {..      han
af40: 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e  dle = invalidHan
af50: 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20  dleValue;..     
af60: 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c   _isClosed = fal
af70: 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  se;..    }....  
af80: 20 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c    ~CriticalHandl
af90: 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
afa0: 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29    Dispose(false)
afb0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
afc0: 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65  private void Cle
afd0: 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  anup()..    {.. 
afe0: 20 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73       if (!IsClos
aff0: 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  ed)..      {..  
b000: 20 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c        this._isCl
b010: 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
b020: 20 20 20 20 20 20 69 66 20 28 21 49 73 49 6e 76        if (!IsInv
b030: 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b  alid)..        {
b040: 0d 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c 65  ..          Rele
b050: 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20  aseHandle();..  
b060: 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72          GC.Suppr
b070: 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73  essFinalize(this
b080: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
b090: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
b0a0: 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
b0b0: 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d   Close()..    {.
b0c0: 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74  .      Dispose(t
b0d0: 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rue);..    }....
b0e0: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
b0f0: 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b  Dispose()..    {
b100: 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
b110: 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  true);..    }...
b120: 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76  .    protected v
b130: 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70  irtual void Disp
b140: 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69  ose(bool disposi
b150: 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ng)..    {..    
b160: 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20    Cleanup();..  
b170: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65    }....    prote
b180: 63 74 65 64 20 61 62 73 74 72 61 63 74 20 62 6f  cted abstract bo
b190: 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
b1a0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65  ();....    prote
b1b0: 63 74 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e  cted void SetHan
b1c0: 64 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65  dle(IntPtr value
b1d0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
b1e0: 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d  handle = value;.
b1f0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
b200: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e  blic void SetHan
b210: 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a  dleAsInvalid()..
b220: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73      {..      _is
b230: 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a  Closed = true;..
b240: 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
b250: 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
b260: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
b270: 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f  ublic bool IsClo
b280: 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  sed..    {..    
b290: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f    get { return _
b2a0: 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20  isClosed; }..   
b2b0: 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
b2c0: 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49   abstract bool I
b2d0: 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d  sInvalid..    {.
b2e0: 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20  .      get;..   
b2f0: 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65 6e   }....  }....#en
b300: 64 69 66 0d 0a 0d 0a 20 20 2f 2f 20 48 61 6e 64  dif....  // Hand
b310: 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65  les the unmanage
b320: 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74  d database point
b330: 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73  er, and provides
b340: 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75   finalization su
b350: 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20  pport for it... 
b360: 20 69 6e 74 65 72 6e 61 6c 20 63 6c 61 73 73 20   internal class 
b370: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
b380: 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61  Handle : Critica
b390: 6c 48 61 6e 64 6c 65 0d 0a 20 20 7b 0d 0a 20 20  lHandle..  {..  
b3a0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
b3b0: 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
b3c0: 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43  r IntPtr(SQLiteC
b3d0: 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
b3e0: 64 62 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  db)..    {..    
b3f0: 20 20 72 65 74 75 72 6e 20 28 64 62 20 21 3d 20    return (db != 
b400: 6e 75 6c 6c 29 20 3f 20 64 62 2e 68 61 6e 64 6c  null) ? db.handl
b410: 65 20 3a 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e : IntPtr.Zero;
b420: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
b430: 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
b440: 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 53  licit operator S
b450: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
b460: 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 29  andle(IntPtr db)
b470: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72  ..    {..      r
b480: 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65  eturn new SQLite
b490: 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
b4a0: 28 64 62 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  (db);..    }....
b4b0: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
b4c0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
b4d0: 6c 65 28 49 6e 74 50 74 72 20 64 62 29 0d 0a 20  le(IntPtr db).. 
b4e0: 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
b4f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 53 65 74 48     {..      SetH
b500: 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20  andle(db);..    
b510: 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  }....    interna
b520: 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  l SQLiteConnecti
b530: 6f 6e 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  onHandle()..    
b540: 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e    : base(IntPtr.
b550: 5a 65 72 6f 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  Zero)..    {..  
b560: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65    }....    prote
b570: 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
b580: 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
b590: 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
b5a0: 20 74 72 79 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   try..      {.. 
b5b0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
b5c0: 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  e.CloseConnectio
b5d0: 6e 28 74 68 69 73 29 3b 0d 0a 0d 0a 23 69 66 20  n(this);....#if 
b5e0: 44 45 42 55 47 20 26 26 20 21 4e 45 54 5f 43 4f  DEBUG && !NET_CO
b5f0: 4d 50 41 43 54 5f 32 30 0d 0a 20 20 20 20 20 20  MPACT_20..      
b600: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b    try..        {
b610: 0d 0a 20 20 20 20 20 20 20 20 20 20 54 72 61 63  ..          Trac
b620: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
b630: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
b640: 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
b650: 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22  Connection: {0}"
b660: 2c 20 68 61 6e 64 6c 65 29 29 3b 0d 0a 20 20 20  , handle));..   
b670: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b680: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b  catch..        {
b690: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
b6a0: 64 69 66 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47  dif....#if DEBUG
b6b0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
b6c0: 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
b6d0: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
b6e0: 55 47 20 26 26 20 21 4e 45 54 5f 43 4f 4d 50 41  UG && !NET_COMPA
b6f0: 43 54 5f 32 30 0d 0a 20 20 20 20 20 20 63 61 74  CT_20..      cat
b700: 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
b710: 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
b720: 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
b730: 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65  teException)..#e
b740: 6e 64 69 66 0d 0a 20 20 20 20 20 20 7b 0d 0a 23  ndif..      {..#
b750: 69 66 20 44 45 42 55 47 20 26 26 20 21 4e 45 54  if DEBUG && !NET
b760: 5f 43 4f 4d 50 41 43 54 5f 32 30 0d 0a 20 20 20  _COMPACT_20..   
b770: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
b780: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 54    {..          T
b790: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
b7a0: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
b7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c               "Cl
b7c0: 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b  oseConnection: {
b7d0: 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
b7e0: 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
b7f0: 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b      handle, e));
b800: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
b810: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
b820: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 7d      {..        }
b830: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
b840: 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  }..#if DEBUG..  
b850: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
b860: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
b870: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
b880: 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ndif..    }.... 
b890: 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
b8a0: 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
b8b0: 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  d..    {..      
b8c0: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 28 68 61  get { return (ha
b8d0: 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
b8e0: 65 72 6f 29 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a  ero); }..    }..
b8f0: 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 20 50 72 6f 76    }....  // Prov
b900: 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f  ides finalizatio
b910: 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e  n support for un
b920: 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73  managed SQLite s
b930: 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 69 6e  tatements...  in
b940: 74 65 72 6e 61 6c 20 63 6c 61 73 73 20 53 51 4c  ternal class SQL
b950: 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
b960: 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
b970: 64 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 75  dle..  {..    pu
b980: 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
b990: 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
b9a0: 74 50 74 72 28 53 51 4c 69 74 65 53 74 61 74 65  tPtr(SQLiteState
b9b0: 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74 29  mentHandle stmt)
b9c0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72  ..    {..      r
b9d0: 65 74 75 72 6e 20 28 73 74 6d 74 20 21 3d 20 6e  eturn (stmt != n
b9e0: 75 6c 6c 29 20 3f 20 73 74 6d 74 2e 68 61 6e 64  ull) ? stmt.hand
b9f0: 6c 65 20 3a 20 49 6e 74 50 74 72 2e 5a 65 72 6f  le : IntPtr.Zero
ba00: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
ba10: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
ba20: 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
ba30: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
ba40: 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  andle(IntPtr stm
ba50: 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  t)..    {..     
ba60: 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69   return new SQLi
ba70: 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
ba80: 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 7d 0d  e(stmt);..    }.
ba90: 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 53  ...    private S
baa0: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
bab0: 6e 64 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74  ndle(IntPtr stmt
bac0: 29 0d 0a 20 20 20 20 20 20 3a 20 74 68 69 73 28  )..      : this(
bad0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
bae0: 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b  SetHandle(stmt);
baf0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69  ..    }....    i
bb00: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74  nternal SQLiteSt
bb10: 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d  atementHandle().
bb20: 0a 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e  .      : base(In
bb30: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
bb40: 7b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  {..    }....    
bb50: 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
bb60: 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
bb70: 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  andle()..    {..
bb80: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
bb90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69   {..        SQLi
bba0: 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
bbb0: 74 61 74 65 6d 65 6e 74 28 74 68 69 73 29 3b 0d  tatement(this);.
bbc0: 0a 0d 0a 23 69 66 20 44 45 42 55 47 20 26 26 20  ...#if DEBUG && 
bbd0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 0d  !NET_COMPACT_20.
bbe0: 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
bbf0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bc00: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
bc10: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
bc20: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
bc30: 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d   "FinalizeStatem
bc40: 65 6e 74 3a 20 7b 30 7d 22 2c 20 68 61 6e 64 6c  ent: {0}", handl
bc50: 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e));..        }.
bc60: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a  .        catch..
bc70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
bc80: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
bc90: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
bca0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
bcb0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d  .#endif..      }
bcc0: 0d 0a 23 69 66 20 44 45 42 55 47 20 26 26 20 21  ..#if DEBUG && !
bcd0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 0d 0a  NET_COMPACT_20..
bce0: 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
bcf0: 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
bd00: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 63 61  .#else..      ca
bd10: 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
bd20: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
bd30: 20 20 20 20 20 7b 0d 0a 23 69 66 20 44 45 42 55       {..#if DEBU
bd40: 47 20 26 26 20 21 4e 45 54 5f 43 4f 4d 50 41 43  G && !NET_COMPAC
bd50: 54 5f 32 30 0d 0a 20 20 20 20 20 20 20 20 74 72  T_20..        tr
bd60: 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
bd70: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
bd80: 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
bd90: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
bda0: 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53        "FinalizeS
bdb0: 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65  tatement: {0}, e
bdc0: 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
bdd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68  .              h
bde0: 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a 20 20 20  andle, e));..   
bdf0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
be00: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b  catch..        {
be10: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
be20: 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 69  dif..      }..#i
be30: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 72  f DEBUG..      r
be40: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65  eturn false;..#e
be50: 6c 73 65 0d 0a 20 20 20 20 20 20 72 65 74 75 72  lse..      retur
be60: 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
be70: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
be80: 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
be90: 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
bea0: 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b    {..      get {
beb0: 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
bec0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
bed0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a   }..    }..  }..
bee0: 7d 0d 0a                                         }..