System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact d6e466c5a354fe4fc9a73cd9489f45b5f01ca67b:


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 53  ry>..      /// S
0850: 74 6f 72 65 73 20 74 68 65 20 6d 61 70 70 69 6e  tores the mappin
0860: 67 73 20 62 65 74 77 65 65 6e 20 70 72 6f 63 65  gs between proce
0870: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
0880: 65 20 6e 61 6d 65 73 20 61 6e 64 20 70 6c 61 74  e names and plat
0890: 66 6f 72 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  form..      /// 
08a0: 6e 61 6d 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  names...      //
08b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
08c0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
08d0: 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ic Dictionary<st
08e0: 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 72  ring, string> pr
08f0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
0900: 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b 0d 0a 0d  urePlatforms;...
0910: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0960: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
0970: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
0980: 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49   This is the P/I
0990: 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61  nvoke method tha
09a0: 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69  t wraps the nati
09b0: 76 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62  ve Win32 LoadLib
09c0: 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rary..      /// 
09d0: 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  function.  See t
09e0: 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74  he MSDN document
09f0: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
0a00: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
0a10: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
0a20: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
0a30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0a40: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0a50: 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  "fileName">..   
0a60: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
0a70: 6f 66 20 74 68 65 20 65 78 65 63 75 74 61 62 6c  of the executabl
0a80: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
0a90: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
0aa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
0ab0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
0ac0: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
0ad0: 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63   handle upon suc
0ae0: 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72  cess -OR- IntPtr
0af0: 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65  .Zero on failure
0b00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
0b10: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 5b  eturns>..      [
0b20: 44 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65  DllImport("kerne
0b30: 6c 33 32 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  l32",..         
0b40: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
0b50: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
0b60: 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 2c 20 43  ention.Winapi, C
0b70: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
0b80: 2e 41 75 74 6f 2c 0d 0a 23 69 66 20 21 50 4c 41  .Auto,..#if !PLA
0b90: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
0ba0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
0bb0: 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67    BestFitMapping
0bc0: 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f   = false, ThrowO
0bd0: 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20  nUnmappableChar 
0be0: 3d 20 74 72 75 65 2c 0d 0a 23 65 6e 64 69 66 0d  = true,..#endif.
0bf0: 0a 20 20 20 20 20 20 20 20 20 20 53 65 74 4c 61  .          SetLa
0c00: 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d  stError = true)]
0c10: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
0c20: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
0c30: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
0c40: 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
0c50: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  );....      ////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
0cb0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0cc0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
0cd0: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66   module handle f
0ce0: 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
0cf0: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20  Lite library or 
0d00: 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  the value..     
0d10: 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f   /// IntPtr.Zero
0d20: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
0d30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
0d40: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e  rivate static In
0d50: 74 50 74 72 20 5f 53 51 4c 69 74 65 4d 6f 64 75  tPtr _SQLiteModu
0d60: 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  le = IntPtr.Zero
0d70: 3b 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0dc0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
0dd0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0de0: 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20 74 68   /// For now, th
0df0: 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70 6c 79  is method simply
0e00: 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69 74 69   calls the Initi
0e10: 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d 0a 20  alize method... 
0e20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
0e30: 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61 74 69  ry>..      stati
0e40: 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  c UnsafeNativeMe
0e50: 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20 20 7b  thods()..      {
0e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 69 74  ..          Init
0e70: 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20 20 20  ialize();..     
0e80: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ed0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
0ee0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0ef0: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
0f00: 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 69  o initialize thi
0f10: 73 20 63 6c 61 73 73 20 62 79 20 70 72 65 2d 6c  s class by pre-l
0f20: 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74 69 76  oading the nativ
0f30: 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20  e SQLite..      
0f40: 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f 72 20  /// library for 
0f50: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
0f60: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
0f70: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
0f80: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
0f90: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0fa0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
0fb0: 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 28  void Initialize(
0fc0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  )..      {..#if 
0fd0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
0fe0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
0ff0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1000: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
1010: 74 68 65 20 22 4e 6f 50 72 65 4c 6f 61 64 53 51  the "NoPreLoadSQ
1020: 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  Lite" environmen
1030: 74 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65  t variable is se
1040: 74 2c 20 73 6b 69 70 0d 0a 20 20 20 20 20 20 20  t, skip..       
1050: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6c 6c 20     //       all 
1060: 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65  our special code
1070: 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75   and simply retu
1080: 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  rn...          /
1090: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
10a0: 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74  (Environment.Get
10b0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
10c0: 62 6c 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53  ble("No_PreLoadS
10d0: 51 4c 69 74 65 22 29 20 21 3d 20 6e 75 6c 6c 29  QLite") != null)
10e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10f0: 72 65 74 75 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d  return;..#endif.
1100: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
1110: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 4f  .          // TO
1120: 44 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68  DO: Make sure th
1130: 69 73 20 6c 69 73 74 20 69 73 20 75 70 64 61 74  is list is updat
1140: 65 64 20 69 66 20 74 68 65 20 73 75 70 70 6f 72  ed if the suppor
1150: 74 65 64 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20  ted processor.. 
1160: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1170: 20 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e    architecture n
1180: 61 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74  ames and/or plat
1190: 66 6f 72 6d 20 6e 61 6d 65 73 20 63 68 61 6e 67  form names chang
11a0: 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  es...          /
11b0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
11c0: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
11d0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
11e0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
11f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1200: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
1210: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
1220: 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  rms =..         
1230: 20 20 20 20 20 20 20 20 20 6e 65 77 20 44 69 63           new Dic
1240: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
1250: 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20  string>();....  
1260: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
1270: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
1280: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
1290: 58 38 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d  X86", "Win32");.
12a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
12b0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
12c0: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
12d0: 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36 34 22  d("AMD64", "x64"
12e0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
12f0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
1300: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
1310: 2e 41 64 64 28 22 49 41 36 34 22 2c 20 22 49 74  .Add("IA64", "It
1320: 61 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20  anium");..      
1330: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1340: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1350: 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74   // BUGBUG: What
1360: 20 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70   about other app
1370: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73  lication domains
1380: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ?..          //.
1390: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f  .          if (_
13a0: 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 3d 3d 20  SQLiteModule == 
13b0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
13c0: 20 20 20 20 20 20 20 20 20 20 20 20 5f 53 51 4c              _SQL
13d0: 69 74 65 4d 6f 64 75 6c 65 20 3d 20 50 72 65 4c  iteModule = PreL
13e0: 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 6e 75 6c  oadSQLiteDll(nul
13f0: 6c 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20  l, null);..     
1400: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
1410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1450: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
1460: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1470: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
1480: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 61  d returns the ba
1490: 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20  se directory of 
14a0: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
14b0: 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  ication..      /
14c0: 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  // domain...    
14d0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
14f0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
1500: 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74   The base direct
1510: 6f 72 79 20 66 6f 72 20 74 68 65 20 63 75 72 72  ory for the curr
1520: 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  ent application 
1530: 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c  domain -OR- null
1540: 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f   if it..      //
1550: 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
1560: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
1570: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1580: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1590: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 42 61  tic string GetBa
15a0: 73 65 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20  seDirectory().. 
15b0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
15c0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
15d0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
15e0: 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d 61    return AppDoma
15f0: 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e  in.CurrentDomain
1600: 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b 0d  .BaseDirectory;.
1610: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1620: 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d    Assembly assem
1630: 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47  bly = Assembly.G
1640: 65 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d  etExecutingAssem
1650: 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  bly();....      
1660: 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79      if (assembly
1670: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1680: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1690: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
16a0: 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20     AssemblyName 
16b0: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61  assemblyName = a
16c0: 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28  ssembly.GetName(
16d0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
16e0: 69 66 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65  if (assemblyName
16f0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1700: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1710: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
1720: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1730: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1740: 20 20 20 72 65 74 75 72 6e 20 50 61 74 68 2e 47     return Path.G
1750: 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28  etDirectoryName(
1760: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f 64  assemblyName.Cod
1770: 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  eBase);..       
1780: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1790: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
17a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17b0: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
17c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
17d0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
17e0: 6e 20 6e 75 6c 6c 3b 0d 0a 23 65 6e 64 69 66 0d  n null;..#endif.
17f0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
1800: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
1850: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1860: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65  ..      /// Dete
1870: 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 64 79  rmines if the dy
1880: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
1890: 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 72 65 71  ry file name req
18a0: 75 69 72 65 73 20 61 20 73 75 66 66 69 78 0d 0a  uires a suffix..
18b0: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64        /// and ad
18c0: 64 73 20 69 74 20 69 66 20 6e 65 63 65 73 73 61  ds it if necessa
18d0: 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
18e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
18f0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1900: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
1910: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67      /// The orig
1920: 69 6e 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e  inal dynamic lin
1930: 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
1940: 61 6d 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d  ame to inspect..
1950: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
1960: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
1970: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1980: 2f 2f 2f 20 54 68 65 20 64 79 6e 61 6d 69 63 20  /// The dynamic 
1990: 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c  link library fil
19a0: 65 20 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79  e name, possibly
19b0: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 69 6e 63   modified to inc
19c0: 6c 75 64 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f  lude an..      /
19d0: 2f 2f 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20  // extension... 
19e0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
19f0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
1a00: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
1a10: 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
1a20: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
1a30: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20  ring fileName.. 
1a40: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1a50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
1a60: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
1a70: 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d  lOrEmpty(fileNam
1a80: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
1a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aa0: 50 6c 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66  PlatformID platf
1ab0: 6f 72 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d  ormId = Environm
1ac0: 65 6e 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c  ent.OSVersion.Pl
1ad0: 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20  atform;....     
1ae0: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70 6c           if ((pl
1af0: 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74  atformId == Plat
1b00: 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53 29 20 7c  formID.Win32S) |
1b10: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
1b20: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
1b30: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
1b40: 69 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d  in32Windows) ||.
1b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b60: 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d     (platformId =
1b70: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
1b80: 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20  32NT) ||..      
1b90: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
1ba0: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
1bb0: 6f 72 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20  ormID.WinCE)).. 
1bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be0: 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e    if (!fileName.
1bf0: 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65  EndsWith(DllFile
1c00: 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20  Extension,..    
1c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c20: 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
1c30: 69 73 6f 6e 2e 49 6e 76 61 72 69 61 6e 74 43 75  ison.InvariantCu
1c40: 6c 74 75 72 65 49 67 6e 6f 72 65 43 61 73 65 29  ltureIgnoreCase)
1c50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1c60: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1c80: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20  turn fileName + 
1c90: 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
1ca0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1cb0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1cc0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1cd0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ce0: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
1cf0: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
1d00: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1d60: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
1d70: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
1d80: 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ns the processor
1d90: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
1da0: 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
1db0: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e      /// process.
1dc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1dd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1de0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1df0: 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
1e00: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
1e10: 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
1e20: 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75   process -OR- nu
1e30: 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20  ll if it..      
1e40: 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
1e50: 74 65 72 6d 69 6e 65 64 2e 20 20 41 6c 77 61 79  termined.  Alway
1e60: 73 20 72 65 74 75 72 6e 73 20 61 6e 20 65 6d 70  s returns an emp
1e70: 74 79 20 73 74 72 69 6e 67 20 77 68 65 6e 20 72  ty string when r
1e80: 75 6e 6e 69 6e 67 20 6f 6e 0d 0a 20 20 20 20 20  unning on..     
1e90: 20 2f 2f 2f 20 74 68 65 20 2e 4e 45 54 20 43 6f   /// the .NET Co
1ea0: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e  mpact Framework.
1eb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
1ec0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
1ed0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
1ee0: 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73 6f 72  ing GetProcessor
1ef0: 41 72 63 68 69 74 65 63 74 75 72 65 28 29 0d 0a  Architecture()..
1f00: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
1f10: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f20: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1f30: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1f40: 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69 6c 6c   // BUGBUG: Will
1f50: 20 74 68 69 73 20 61 6c 77 61 79 73 20 62 65 20   this always be 
1f60: 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20 20 20  reliable?..     
1f70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1f80: 20 20 20 72 65 74 75 72 6e 20 45 6e 76 69 72 6f     return Enviro
1f90: 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
1fa0: 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 50 52 4f  mentVariable(PRO
1fb0: 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54  CESSOR_ARCHITECT
1fc0: 55 52 45 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  URE);..#else..  
1fd0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1fe0: 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a        // BUGBUG:
1ff0: 20 4e 6f 20 77 61 79 20 74 6f 20 64 65 74 65 72   No way to deter
2000: 6d 69 6e 65 20 74 68 69 73 20 76 61 6c 75 65 20  mine this value 
2010: 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  on the .NET Comp
2020: 61 63 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  act..          /
2030: 2f 20 20 20 20 20 20 20 20 20 46 72 61 6d 65 77  /         Framew
2040: 6f 72 6b 20 28 72 75 6e 6e 69 6e 67 20 6f 6e 20  ork (running on 
2050: 57 69 6e 64 6f 77 73 20 43 45 2c 20 65 74 63 29  Windows CE, etc)
2060: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
2070: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
2080: 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  n String.Empty;.
2090: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d  .#endif..      }
20a0: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
20d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
2100: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2110: 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72  /// Given the pr
2120: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
2130: 74 75 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68  ture, returns th
2140: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c  e name of the pl
2150: 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f  atform...      /
2160: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2170: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2180: 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41  name="processorA
2190: 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20  rchitecture">.. 
21a0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f       /// The pro
21b0: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
21c0: 75 72 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c  ure to be transl
21d0: 61 74 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f  ated to a platfo
21e0: 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
21f0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2200: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2210: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
2220: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66   platform name f
2230: 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
2240: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
2250: 74 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c  tecture -OR- nul
2260: 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  l..      /// if 
2270: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
2280: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
2290: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
22a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
22b0: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50  atic string GetP
22c0: 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20  latformName(..  
22d0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
22e0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
22f0: 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20  ture..          
2300: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
2310: 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
2320: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70  .IsNullOrEmpty(p
2330: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
2340: 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20 20  ture))..        
2350: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
2360: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
2370: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
2380: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
2390: 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ms == null)..   
23a0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23b0: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
23c0: 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74       string plat
23d0: 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  formName;....   
23e0: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
23f0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
2400: 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74  Platforms.TryGet
2410: 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
2420: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
2430: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
2440: 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d   out platformNam
2450: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
2460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2470: 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e  return platformN
2480: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
2490: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  }....          i
24a0: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
24b0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
24c0: 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d 0a  s.TryGetValue(..
24d0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24e0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2500: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
2510: 74 65 63 74 75 72 65 2e 54 6f 55 70 70 65 72 49  tecture.ToUpperI
2520: 6e 76 61 72 69 61 6e 74 28 29 2c 0d 0a 23 65 6c  nvariant(),..#el
2530: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2540: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
2550: 72 63 68 69 74 65 63 74 75 72 65 2e 54 6f 55 70  rchitecture.ToUp
2560: 70 65 72 28 29 2c 0d 0a 23 65 6e 64 69 66 0d 0a  per(),..#endif..
2570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2580: 20 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61    out platformNa
2590: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
25a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
25b0: 20 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d   return platform
25c0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
25d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
25e0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
25f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
2600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2640: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2650: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2660: 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
2670: 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  s to load the na
2680: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
2690: 61 72 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ary based on the
26a0: 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
26b0: 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20    /// directory 
26c0: 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  and processor ar
26d0: 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20  chitecture...   
26e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
26f0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
2700: 72 61 6d 20 6e 61 6d 65 3d 22 64 69 72 65 63 74  ram name="direct
2710: 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ory">..      ///
2720: 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74   The base direct
2730: 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c  ory to use, null
2740: 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68   for default (th
2750: 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
2760: 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74   of..      /// t
2770: 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
2780: 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20  cation domain). 
2790: 20 54 68 69 73 20 64 69 72 65 63 74 6f 72 79 20   This directory 
27a0: 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74  should contain t
27b0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  he..      /// pr
27c0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
27d0: 74 75 72 65 20 73 70 65 63 69 66 69 63 20 73 75  ture specific su
27e0: 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a  b-directories...
27f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2800: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
2810: 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65  aram name="proce
2820: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
2830: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
2840: 65 20 72 65 71 75 65 73 74 65 64 20 70 72 6f 63  e requested proc
2850: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
2860: 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66  re, null for def
2870: 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20  ault (the..     
2880: 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61   /// processor a
2890: 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
28a0: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
28b0: 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65  ss).  This calle
28c0: 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20  r should..      
28d0: 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79  /// almost alway
28e0: 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66  s specify null f
28f0: 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  or this paramete
2900: 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  r...      /// </
2910: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
2920: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2930: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2940: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
2950: 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 4c  as returned by L
2960: 6f 61 64 4c 69 62 72 61 72 79 20 2d 4f 52 2d 20  oadLibrary -OR- 
2970: 49 6e 74 50 74 72 2e 5a 65 72 6f 0d 0a 20 20 20  IntPtr.Zero..   
2980: 20 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 6c 6f     /// if the lo
2990: 61 64 69 6e 67 20 66 61 69 6c 73 20 66 6f 72 20  ading fails for 
29a0: 61 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20  any reason...   
29b0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
29c0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
29d0: 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 50   static IntPtr P
29e0: 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28  reLoadSQLiteDll(
29f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
2a00: 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  ng directory,.. 
2a10: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
2a20: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
2a30: 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 20  cture..         
2a40: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
2a50: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2a60: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
2a70: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62   the specified b
2a80: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69 73  ase directory is
2a90: 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20 64   null, use the d
2aa0: 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20  efault...       
2ab0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2ac0: 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d   if (directory =
2ad0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2ae0: 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
2af0: 20 3d 20 47 65 74 42 61 73 65 44 69 72 65 63 74   = GetBaseDirect
2b00: 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
2b10: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2b20: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65    // NOTE: If we
2b30: 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79   failed to query
2b40: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
2b50: 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  ory, stop now...
2b60: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2b70: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65          if (dire
2b80: 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ctory == null)..
2b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2ba0: 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
2bb0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
2bc0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
2bd0: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 6e 61 74  NOTE: If the nat
2be0: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
2bf0: 72 79 20 65 78 69 73 74 73 20 69 6e 20 74 68 65  ry exists in the
2c00: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d   base directory.
2c10: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
2c20: 20 20 20 20 69 74 73 65 6c 66 2c 20 73 74 6f 70      itself, stop
2c30: 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
2c40: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
2c50: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d  tring fileName =
2c60: 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
2c70: 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64  e(Path.Combine(d
2c80: 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20  irectory,..     
2c90: 20 20 20 20 20 20 20 20 20 53 51 4c 49 54 45 5f           SQLITE_
2ca0: 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  DLL));....      
2cb0: 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
2cc0: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
2cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2ce0: 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
2cf0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
2d00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
2d10: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65  NOTE: If the spe
2d20: 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72  cified processor
2d30: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69 73   architecture is
2d40: 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a   null, use the..
2d50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2d60: 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20     default...   
2d70: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2d80: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
2d90: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
2da0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2db0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
2dc0: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47  Architecture = G
2dd0: 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  etProcessorArchi
2de0: 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20  tecture();....  
2df0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2e00: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
2e10: 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71  f we failed to q
2e20: 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73 73  uery the process
2e30: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
2e40: 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20   stop now...    
2e50: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2e60: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
2e70: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d  rArchitecture ==
2e80: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2e90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
2ea0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
2eb0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2ec0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75       // NOTE: Bu
2ed0: 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74  ild the full pat
2ee0: 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20  h and file name 
2ef0: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
2f00: 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20  QLite..         
2f10: 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72   //       librar
2f20: 79 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 63  y using the proc
2f30: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
2f40: 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  re name...      
2f50: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2f60: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78    fileName = Fix
2f70: 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61  UpDllFileName(Pa
2f80: 74 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e  th.Combine(Path.
2f90: 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72  Combine(director
2fa0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
2fb0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
2fc0: 74 65 63 74 75 72 65 29 2c 20 53 51 4c 49 54 45  tecture), SQLITE
2fd0: 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  _DLL));....     
2fe0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2ff0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
3000: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61 73  he file name bas
3010: 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65 73  ed on the proces
3020: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
3030: 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20   name..         
3040: 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64   // is not found
3050: 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65 20  , try using the 
3060: 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74 66  associated platf
3070: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
3080: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3090: 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
30a0: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
30b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
30d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
30e0: 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f  NOTE: Attempt to
30f0: 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70   translate the p
3100: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
3110: 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20 20  cture to a..    
3120: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
3130: 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65     platform name
3140: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
3150: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
3160: 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f     string platfo
3170: 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61 74  rmName = GetPlat
3180: 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73  formName(process
3190: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 3b  orArchitecture);
31a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31b0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
31c0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
31d0: 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72 61  we failed to tra
31e0: 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74 66  nslate the platf
31f0: 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e  orm name, stop n
3200: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow...           
3210: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3220: 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f 72       if (platfor
3230: 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  mName == null)..
3240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3250: 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
3260: 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
3270: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
3280: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
3290: 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c  : Build the full
32a0: 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e   path and file n
32b0: 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
32c0: 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
32d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
32e0: 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20    library using 
32f0: 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  the platform nam
3300: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
3310: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3320: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
3330: 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
3340: 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74  Path.Combine(Pat
3350: 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74  h.Combine(direct
3360: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
3370: 20 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d          platform
3380: 4e 61 6d 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c  Name), SQLITE_DL
3390: 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  L));....        
33a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
33b0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
33c0: 20 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65   If the file doe
33d0: 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69  s not exist, ski
33e0: 70 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64  p trying to load
33f0: 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   it...          
3400: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3410: 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e        if (!File.
3420: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
3430: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3440: 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
3450: 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
3460: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
3470: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
3480: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3490: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
34a0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68       // NOTE: Sh
34b0: 6f 77 20 65 78 61 63 74 6c 79 20 77 68 65 72 65  ow exactly where
34c0: 20 77 65 20 61 72 65 20 74 72 79 69 6e 67 20 74   we are trying t
34d0: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
34e0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
34f0: 20 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65   //       SQLite
3500: 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a   library from...
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3530: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
3540: 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
3550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3560: 20 20 22 54 72 79 69 6e 67 20 74 6f 20 6c 6f 61    "Trying to loa
3570: 64 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  d native SQLite 
3580: 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e  library \"{0}\".
3590: 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ..",..          
35a0: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
35b0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
35c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
35d0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
35e0: 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20  Attempt to load 
35f0: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
3600: 72 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65  ry.  This will e
3610: 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20  ither..         
3620: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65       //       re
3630: 74 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61 74  turn a valid nat
3640: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
3650: 65 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72  e, return IntPtr
3660: 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20  .Zero,..        
3670: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
3680: 72 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65 70  r throw an excep
3690: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
36a0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
36b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4c 6f         return Lo
36c0: 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61  adLibrary(fileNa
36d0: 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
36e0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  }..          cat
36f0: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
3700: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
3720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3730: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3740: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3750: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
3760: 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61 62 20  TE: First, grab 
3770: 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32 20 65  the last Win32 e
3780: 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20  rror number...  
3790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37a0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
37b0: 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74 45 72        int lastEr
37c0: 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65  ror = Marshal.Ge
37d0: 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f 72 28  tLastWin32Error(
37e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
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 20 20 20 20 2f 2f                //
3810: 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 72   NOTE: Show wher
3820: 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 6c  e we failed to l
3830: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 53  oad the native S
3840: 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20  QLite..         
3850: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
3860: 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 61    library from a
3870: 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57 69  long with the Wi
3880: 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20 61  n32 error code a
3890: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nd..            
38a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65        //       e
38b0: 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61  xception informa
38c0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
38d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
38e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
38f0: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
3900: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
3910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3920: 20 20 20 20 20 22 46 61 69 6c 65 64 20 74 6f 20       "Failed to 
3930: 6c 6f 61 64 20 6e 61 74 69 76 65 20 53 51 4c 69  load native SQLi
3940: 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d  te library \"{0}
3950: 5c 22 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  \" " +..        
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 28                "(
3970: 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b  getLastError = {
3980: 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20  1}): {2}",..    
3990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39a0: 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74    fileName, last
39b0: 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74  Error, e)); /* t
39c0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
39d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
39e0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
3a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a10: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
3a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3a30: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
3a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
3a50: 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
3a60: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
3a70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
3a80: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3a90: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
3aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3ae0: 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
3af0: 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 55 53  NDARD....#if !US
3b00: 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 0d  E_INTEROP_DLL...
3b10: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
3b20: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
3b30: 0a 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e  .    private con
3b40: 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45  st string SQLITE
3b50: 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44  _DLL = "System.D
3b60: 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b  ata.SQLite.dll";
3b70: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 69 6e 74  ..#else..    int
3b80: 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
3b90: 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
3ba0: 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
3bb0: 30 38 30 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69  080.dll";..#endi
3bc0: 66 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  f // PLATFORM_CO
3bd0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
3be0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 70 72 69  ..#else..    pri
3bf0: 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
3c00: 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
3c10: 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64  SQLite.Interop.d
3c20: 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 20 2f 2f 20  ll";..#endif // 
3c30: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d  USE_INTEROP_DLL.
3c40: 0a 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 70 72  ...#else..    pr
3c50: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
3c60: 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
3c70: 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6e 64  "sqlite3";..#end
3c80: 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69  if....    // Thi
3c90: 73 20 73 65 63 74 69 6f 6e 20 75 73 65 73 20 69  s section uses i
3ca0: 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61  nterop calls tha
3cb0: 74 20 61 6c 73 6f 20 66 65 74 63 68 20 74 65 78  t also fetch tex
3cc0: 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74 69  t length to opti
3cd0: 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e  mize conversion.
3ce0: 20 20 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e 20    ..    // When 
3cf0: 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61  using the standa
3d00: 72 64 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20 72  rd dll, we can r
3d10: 65 70 6c 61 63 65 20 74 68 65 73 65 20 63 61 6c  eplace these cal
3d20: 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20 73  ls with normal s
3d30: 71 6c 69 74 65 20 63 61 6c 6c 73 20 61 6e 64 20  qlite calls and 
3d40: 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e 6f 70  ..    // do unop
3d50: 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72 73 69  timized conversi
3d60: 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66 74 65  ons instead afte
3d70: 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72 65 67  rwards..    #reg
3d80: 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65  ion interop adde
3d90: 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63 61 6c  d textlength cal
3da0: 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54  ls....#if !SQLIT
3db0: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
3dc0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
3dd0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
3de0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
3df0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
3e00: 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
3e10: 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  ter_name_interop
3e20: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
3e30: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
3e40: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
3e50: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
3e60: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
3e70: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
3e80: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
3e90: 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
3ea0: 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
3eb0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
3ec0: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
3ed0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
3ee0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
3ef0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
3f00: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
3f10: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
3f20: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
3f30: 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
3f40: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
3f50: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
3f60: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
3f70: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
3f80: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
3f90: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
3fa0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
3fb0: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74  umn_decltype_int
3fc0: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
3fd0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
3fe0: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
3ff0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
4000: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
4010: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
4020: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
4030: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
4040: 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  type16_interop(I
4050: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
4060: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
4070: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
4080: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
4090: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
40a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
40b0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
40c0: 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72  olumn_name_inter
40d0: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
40e0: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
40f0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
4100: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4110: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
4120: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4130: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
4140: 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36  e3_column_name16
4150: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
4160: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
4170: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
4180: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
4190: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
41a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
41b0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
41c0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
41d0: 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65  origin_name_inte
41e0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
41f0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20   int index, out 
4200: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
4210: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
4220: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
4230: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
4240: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
4250: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
4260: 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  n_name16_interop
4270: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
4280: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
4290: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
42a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
42b0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
42c0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
42d0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
42e0: 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
42f0: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
4300: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
4310: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
4320: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
4330: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
4340: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
4350: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
4360: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
4370: 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69  n_table_name16_i
4380: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
4390: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
43a0: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
43b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
43c0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
43d0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
43e0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
43f0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
4400: 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  xt_interop(IntPt
4410: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
4420: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
4430: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
4440: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
4450: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
4460: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
4470: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
4480: 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70  n_text16_interop
4490: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
44a0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
44b0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
44c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
44d0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
44e0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
44f0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
4500: 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28  _errmsg_interop(
4510: 49 6e 74 50 74 72 20 64 62 2c 20 6f 75 74 20 69  IntPtr db, out i
4520: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
4530: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4540: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
4550: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4560: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
4570: 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28  prepare_interop(
4580: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
4590: 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
45a0: 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73  es, out IntPtr s
45b0: 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  tmt, out IntPtr 
45c0: 70 74 72 52 65 6d 61 69 6e 2c 20 6f 75 74 20 69  ptrRemain, out i
45d0: 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a  nt nRemain);....
45e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
45f0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
4600: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
4610: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
4620: 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e  te3_table_column
4630: 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f  _metadata_intero
4640: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
4650: 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
4660: 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
4670: 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20  [] colName, out 
4680: 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79  IntPtr ptrDataTy
4690: 70 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70  pe, out IntPtr p
46a0: 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75 74 20 69  trCollSeq, out i
46b0: 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20  nt notNull, out 
46c0: 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  int primaryKey, 
46d0: 6f 75 74 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c  out int autoInc,
46e0: 20 6f 75 74 20 69 6e 74 20 64 74 4c 65 6e 2c 20   out int dtLen, 
46f0: 6f 75 74 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d  out int csLen);.
4700: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
4710: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
4720: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
4730: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
4740: 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
4750: 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  text_interop(Int
4760: 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74 20 6c  Ptr p, out int l
4770: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
4780: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
4790: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
47a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
47b0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
47c0: 61 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65  alue_text16_inte
47d0: 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75  rop(IntPtr p, ou
47e0: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 23  t int len);....#
47f0: 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
4800: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
4810: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
4820: 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e      // These fun
4830: 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69 73 74  ctions add exist
4840: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ing functionalit
4850: 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c 69  y on top of SQLi
4860: 74 65 20 61 6e 64 20 72 65 71 75 69 72 65 20 61  te and require a
4870: 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74 20 74   little effort t
4880: 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20 77 6f  o..    // get wo
4890: 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69 6e 67  rking when using
48a0: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
48b0: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
48c0: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
48d0: 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74 69 6f  op added functio
48e0: 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21 53  nality....#if !S
48f0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
4900: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
4910: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
4920: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4930: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
4940: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65  lite3_close_inte
4950: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
4960: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
4970: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
4980: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
4990: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
49a0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
49b0: 6e 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49  nction_interop(I
49c0: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
49d0: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
49e0: 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
49f0: 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
4a00: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
4a10: 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
4a20: 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
4a30: 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
4a40: 69 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f  inal, int needCo
4a50: 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b  llSeq);....    [
4a60: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4a70: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
4a80: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4a90: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 66  rn int sqlite3_f
4aa0: 69 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28  inalize_interop(
4ab0: 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
4ac0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
4ad0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
4ae0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4af0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
4b00: 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f  ite3_open_intero
4b10: 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
4b20: 65 6e 61 6d 65 2c 20 69 6e 74 20 66 6c 61 67 73  ename, int flags
4b30: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29  , out IntPtr db)
4b40: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
4b50: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
4b60: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
4b70: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
4b80: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f   sqlite3_open16_
4b90: 69 6e 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75  interop(byte[] u
4ba0: 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 69 6e 74  tf8Filename, int
4bb0: 20 66 6c 61 67 73 2c 20 6f 75 74 20 49 6e 74 50   flags, out IntP
4bc0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b  tr db);....    [
4bd0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4be0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
4bf0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
4c00: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 72  rn int sqlite3_r
4c10: 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  eset_interop(Int
4c20: 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 65  Ptr stmt);....#e
4c30: 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45  ndif..// !SQLITE
4c40: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
4c50: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
4c60: 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e 64 61     // The standa
4c70: 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71 75 69  rd api call equi
4c80: 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65 20 61  valents of the a
4c90: 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63 61 6c  bove interop cal
4ca0: 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ls..    #region 
4cb0: 73 74 61 6e 64 61 72 64 20 76 65 72 73 69 6f 6e  standard version
4cc0: 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66 75 6e  s of interop fun
4cd0: 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20 53 51  ctions....#if SQ
4ce0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
4cf0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
4d00: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
4d10: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
4d20: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
4d30: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
4d40: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
4d50: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
4d60: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
4d70: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
4d80: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
4d90: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
4da0: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6c  n int sqlite3_cl
4db0: 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ose(IntPtr db);.
4dc0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
4dd0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
4de0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
4df0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
4e00: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
4e10: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
4e20: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
4e30: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
4e40: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
4e50: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
4e60: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4e70: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
4e80: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28  create_function(
4e90: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
4ea0: 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
4eb0: 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c  Args, int nType,
4ec0: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20   IntPtr pvUser, 
4ed0: 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66  SQLiteCallback f
4ee0: 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62  unc, SQLiteCallb
4ef0: 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74  ack fstep, SQLit
4f00: 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66  eFinalCallback f
4f10: 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21  final);....#if !
4f20: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
4f30: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
4f40: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
4f50: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
4f60: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
4f70: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
4f80: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
4f90: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4fa0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
4fb0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
4fc0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
4fd0: 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
4fe0: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
4ff0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
5000: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
5010: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5020: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
5030: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
5040: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5050: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
5060: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
5070: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
5080: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
5090: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
50a0: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f  rn int sqlite3_o
50b0: 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75 74  pen_v2(byte[] ut
50c0: 66 38 46 69 6c 65 6e 61 6d 65 2c 20 6f 75 74 20  f8Filename, out 
50d0: 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 66  IntPtr db, int f
50e0: 6c 61 67 73 2c 20 49 6e 74 50 74 72 20 76 66 73  lags, IntPtr vfs
50f0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
5100: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5110: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
5120: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
5130: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5140: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
5150: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
5160: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
5170: 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
5180: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5190: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
51a0: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
51b0: 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
51c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
51d0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
51e0: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28   sqlite3_open16(
51f0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
5200: 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b   out IntPtr db);
5210: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
5220: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
5230: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
5240: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
5250: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
5260: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
5270: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
5280: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
5290: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
52a0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
52b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
52c0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
52d0: 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20 73 74  _reset(IntPtr st
52e0: 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
52f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5300: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
5310: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5320: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
5330: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
5340: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
5350: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
5360: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5370: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
5380: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5390: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
53a0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
53b0: 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50  ameter_name(IntP
53c0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
53d0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
53e0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
53f0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
5400: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5410: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
5420: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
5430: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
5440: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
5450: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5460: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
5470: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5480: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
5490: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
54a0: 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74  atabase_name(Int
54b0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
54c0: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
54d0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
54e0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
54f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5500: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
5510: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
5520: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
5530: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
5540: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5550: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
5560: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5570: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
5580: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
5590: 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28  database_name16(
55a0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
55b0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
55c0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
55d0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
55e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
55f0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
5600: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
5610: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
5620: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
5630: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5640: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
5650: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5660: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5670: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
5680: 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50  mn_decltype(IntP
5690: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
56a0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
56b0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
56c0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
56d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
56e0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
56f0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
5700: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
5710: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
5720: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5730: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
5740: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5750: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
5760: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
5770: 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72  ecltype16(IntPtr
5780: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
5790: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
57a0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
57b0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
57c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
57d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
57e0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
57f0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
5800: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
5810: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5820: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
5830: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5840: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
5850: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
5860: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
5870: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
5880: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
5890: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
58a0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
58b0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
58c0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
58d0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
58e0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
58f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5900: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
5910: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
5920: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
5930: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
5940: 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50  lumn_name16(IntP
5950: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
5960: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
5970: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5980: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
5990: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
59a0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
59b0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
59c0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
59d0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
59e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
59f0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
5a00: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5a10: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
5a20: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
5a30: 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74  rigin_name(IntPt
5a40: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
5a50: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
5a60: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
5a70: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
5a80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5a90: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
5aa0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
5ab0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
5ac0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
5ad0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5ae0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
5af0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5b00: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
5b10: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
5b20: 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50  igin_name16(IntP
5b30: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
5b40: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
5b50: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5b60: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
5b70: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5b80: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
5b90: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
5ba0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
5bb0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
5bc0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5bd0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
5be0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5bf0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
5c00: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
5c10: 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72  able_name(IntPtr
5c20: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
5c30: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
5c40: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5c50: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
5c60: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
5c70: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5c80: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
5c90: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
5ca0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
5cb0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5cc0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
5cd0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5ce0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
5cf0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
5d00: 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72  le_name16(IntPtr
5d10: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
5d20: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
5d30: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5d40: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
5d50: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
5d60: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5d70: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
5d80: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
5d90: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
5da0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5db0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
5dc0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5dd0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
5de0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
5df0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
5e00: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
5e10: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
5e20: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
5e30: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5e40: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
5e50: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
5e60: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
5e70: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
5e80: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5e90: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
5ea0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
5eb0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
5ec0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
5ed0: 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50  lumn_text16(IntP
5ee0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
5ef0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
5f00: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5f10: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
5f20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5f30: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
5f40: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
5f50: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
5f60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
5f70: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5f80: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
5f90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5fa0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
5fb0: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49  sqlite3_errmsg(I
5fc0: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
5fd0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
5fe0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
5ff0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6000: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
6010: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
6020: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
6030: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
6040: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6050: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
6060: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
6070: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
6080: 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nt sqlite3_prepa
6090: 72 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  re(IntPtr db, In
60a0: 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
60b0: 42 79 74 65 73 2c 20 6f 75 74 20 49 6e 74 50 74  Bytes, out IntPt
60c0: 72 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50  r stmt, out IntP
60d0: 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a  tr ptrRemain);..
60e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
60f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
6100: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6110: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
6120: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
6130: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6140: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
6150: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
6160: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
6170: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
6180: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
6190: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74  rn int sqlite3_t
61a0: 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61  able_column_meta
61b0: 64 61 74 61 28 49 6e 74 50 74 72 20 64 62 2c 20  data(IntPtr db, 
61c0: 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62  byte[] dbName, b
61d0: 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62  yte[] tblName, b
61e0: 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f  yte[] colName, o
61f0: 75 74 20 49 6e 74 50 74 72 20 70 74 72 44 61 74  ut IntPtr ptrDat
6200: 61 54 79 70 65 2c 20 6f 75 74 20 49 6e 74 50 74  aType, out IntPt
6210: 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75  r ptrCollSeq, ou
6220: 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f  t int notNull, o
6230: 75 74 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65  ut int primaryKe
6240: 79 2c 20 6f 75 74 20 69 6e 74 20 61 75 74 6f 49  y, out int autoI
6250: 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  nc);....#if !PLA
6260: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6270: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
6280: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6290: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
62a0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
62b0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
62c0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
62d0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
62e0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
62f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6300: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
6310: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
6320: 78 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  xt(IntPtr p);...
6330: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
6340: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6350: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6360: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
6370: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
6380: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
6390: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
63a0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
63b0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
63c0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
63d0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
63e0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
63f0: 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 28 49 6e  _value_text16(In
6400: 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64  tPtr p);....#end
6410: 69 66 0d 0a 2f 2f 20 53 51 4c 49 54 45 5f 53 54  if..// SQLITE_ST
6420: 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65  ANDARD....    #e
6430: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
6440: 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f  // These functio
6450: 6e 73 20 61 72 65 20 63 75 73 74 6f 6d 20 61 6e  ns are custom an
6460: 64 20 68 61 76 65 20 6e 6f 20 65 71 75 69 76 61  d have no equiva
6470: 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6c 69  lent standard li
6480: 62 72 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a 20  brary method... 
6490: 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65     // All of the
64a0: 6d 20 61 72 65 20 22 6e 69 63 65 20 74 6f 20 68  m are "nice to h
64b0: 61 76 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65  aves" and not ne
64c0: 63 65 73 73 61 72 69 6c 79 20 22 6e 65 65 64 20  cessarily "need 
64d0: 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20 20 20 20  to haves"...    
64e0: 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76  #region no equiv
64f0: 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6d  alent standard m
6500: 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53 51  ethod....#if !SQ
6510: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
6520: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6530: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
6540: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6550: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
6560: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f  sqlite3_context_
6570: 63 6f 6c 6c 73 65 71 28 49 6e 74 50 74 72 20 63  collseq(IntPtr c
6580: 6f 6e 74 65 78 74 2c 20 6f 75 74 20 69 6e 74 20  ontext, out int 
6590: 74 79 70 65 2c 20 6f 75 74 20 69 6e 74 20 65 6e  type, out int en
65a0: 63 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  c, out int len);
65b0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
65c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
65d0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
65e0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
65f0: 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f  sqlite3_context_
6600: 63 6f 6c 6c 63 6f 6d 70 61 72 65 28 49 6e 74 50  collcompare(IntP
6610: 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65  tr context, byte
6620: 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e  [] p1, int p1len
6630: 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74  , byte[] p2, int
6640: 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20   p2len);....    
6650: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6660: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6670: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6680: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
6690: 63 75 72 73 6f 72 5f 72 6f 77 69 64 28 49 6e 74  cursor_rowid(Int
66a0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75  Ptr stmt, int cu
66b0: 72 73 6f 72 2c 20 6f 75 74 20 6c 6f 6e 67 20 72  rsor, out long r
66c0: 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  owid);....    [D
66d0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
66e0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
66f0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6700: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 69 6e  n int sqlite3_in
6710: 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f  dex_column_info_
6720: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
6730: 62 2c 20 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f  b, byte[] catalo
6740: 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e  g, byte[] IndexN
6750: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75  ame, byte[] Colu
6760: 6d 6e 4e 61 6d 65 2c 20 6f 75 74 20 69 6e 74 20  mnName, out int 
6770: 73 6f 72 74 4f 72 64 65 72 2c 20 6f 75 74 20 69  sortOrder, out i
6780: 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 6f 75 74 20  nt onError, out 
6790: 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e  IntPtr Collation
67a0: 2c 20 6f 75 74 20 69 6e 74 20 63 6f 6c 6c 6c 65  , out int collle
67b0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
67c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
67d0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
67e0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
67f0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 65  oid sqlite3_rese
6800: 74 61 6c 6c 5f 69 6e 74 65 72 6f 70 28 49 6e 74  tall_interop(Int
6810: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
6820: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6830: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
6840: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6850: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
6860: 74 61 62 6c 65 5f 63 75 72 73 6f 72 28 49 6e 74  table_cursor(Int
6870: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64 62  Ptr stmt, int db
6880: 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50  , int tableRootP
6890: 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d  age);....#endif.
68a0: 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  .// !SQLITE_STAN
68b0: 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
68c0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
68d0: 20 53 74 61 6e 64 61 72 64 20 41 50 49 20 63 61   Standard API ca
68e0: 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73  lls global acros
68f0: 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65  s versions.  The
6900: 72 65 20 61 72 65 20 61 20 66 65 77 20 69 6e 73  re are a few ins
6910: 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72 6f  tances of intero
6920: 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20  p calls..    // 
6930: 73 63 61 74 74 65 72 65 64 20 69 6e 20 68 65 72  scattered in her
6940: 65 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20  e, but they are 
6950: 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65 6e  only active when
6960: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
6970: 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64 65  TFRAMEWORK is de
6980: 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72 65  clared...    #re
6990: 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71  gion standard sq
69a0: 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a  lite api calls..
69b0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
69c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
69d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
69e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
69f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
6a00: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6a10: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
6a20: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
6a30: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
6a40: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
6a50: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
6a60: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
6a70: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d  3_libversion();.
6a80: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
6a90: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6aa0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6ab0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6ac0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6ad0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6ae0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6af0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6b00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6b10: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
6b20: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6b30: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6b40: 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  e3_sourceid();..
6b50: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
6b60: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
6b70: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6b80: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
6b90: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
6ba0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6bb0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
6bc0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
6bd0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
6be0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
6bf0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
6c00: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
6c10: 69 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74 72  interrupt(IntPtr
6c20: 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
6c30: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
6c40: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
6c50: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6c60: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
6c70: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
6c80: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
6c90: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
6ca0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6cb0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
6cc0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6cd0: 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
6ce0: 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
6cf0: 72 74 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20  rt_rowid(IntPtr 
6d00: 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
6d10: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6d20: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
6d30: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6d40: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
6d50: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
6d60: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
6d70: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
6d80: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6d90: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
6da0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6db0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
6dc0: 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74  ite3_changes(Int
6dd0: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
6de0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
6df0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
6e00: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6e10: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
6e20: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
6e30: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
6e40: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
6e50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6e60: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
6e70: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6e80: 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
6e90: 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  g sqlite3_memory
6ea0: 5f 75 73 65 64 28 29 3b 0d 0a 0d 0a 23 69 66 20  _used();....#if 
6eb0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
6ec0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
6ed0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6ee0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
6ef0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
6f00: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
6f10: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
6f20: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6f30: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
6f40: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6f50: 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
6f60: 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  g sqlite3_memory
6f70: 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72  _highwater(int r
6f80: 65 73 65 74 46 6c 61 67 29 3b 0d 0a 0d 0a 23 69  esetFlag);....#i
6f90: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
6fa0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
6fb0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6fc0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
6fd0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
6fe0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
6ff0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7000: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7010: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7020: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7030: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
7040: 6e 74 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  nt sqlite3_shutd
7050: 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  own();....#if !P
7060: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7070: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7080: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7090: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
70a0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
70b0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
70c0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
70d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
70e0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
70f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
7100: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
7110: 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65  qlite3_busy_time
7120: 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69  out(IntPtr db, i
7130: 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  nt ms);....#if !
7140: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7150: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
7160: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7170: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
7180: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
7190: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
71a0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
71b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
71c0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
71d0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
71e0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
71f0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
7200: 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
7210: 6e 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d  nt index, Byte[]
7220: 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a   value, int nSiz
7230: 65 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73  e, IntPtr nTrans
7240: 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ient);....#if !P
7250: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7260: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7270: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7280: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7290: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
72a0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
72b0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
72c0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
72d0: 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
72e0: 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
72f0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64  mt, int index, d
7300: 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
7310: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
7320: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
7330: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
7340: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
7350: 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  t sqlite3_bind_d
7360: 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
7370: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
7380: 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65  ndex, ref double
7390: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
73a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
73b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
73c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
73d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
73e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
73f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7400: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7410: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7420: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7430: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7440: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7450: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
7460: 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72  _bind_int(IntPtr
7470: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
7480: 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d  , int value);...
7490: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
74a0: 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c  NOTE: This reall
74b0: 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71  y just calls "sq
74c0: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b  lite3_bind_int";
74d0: 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73   however, it has
74e0: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20   the..    //    
74f0: 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20     correct type 
7500: 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e  signature for an
7510: 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62 69   unsigned (32-bi
7520: 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20  t) integer...   
7530: 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f   //..#if !PLATFO
7540: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7550: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
7560: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
7570: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
7580: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c  lite3_bind_int",
7590: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
75a0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
75b0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
75c0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
75d0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
75e0: 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
75f0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
7600: 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
7610: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7620: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
7630: 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e  te3_bind_uint(In
7640: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
7650: 6e 64 65 78 2c 20 75 69 6e 74 20 76 61 6c 75 65  ndex, uint value
7660: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
7670: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
7680: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
7690: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
76a0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
76b0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
76c0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
76d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
76e0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
76f0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
7700: 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
7710: 6e 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76  nt index, long v
7720: 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  alue);..#else.. 
7730: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7740: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
7750: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
7760: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
7770: 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e  e3_bind_int64_in
7780: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
7790: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
77a0: 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  f long value);..
77b0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
77c0: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54  ..    // NOTE: T
77d0: 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20  his really just 
77e0: 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62  calls "sqlite3_b
77f0: 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65  ind_int64"; howe
7800: 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d  ver, it has the.
7810: 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f  .    //       co
7820: 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e 61  rrect type signa
7830: 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69  ture for an unsi
7840: 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69  gned long (64-bi
7850: 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20  t) integer...   
7860: 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f   //..#if !PLATFO
7870: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7880: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
7890: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
78a0: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
78b0: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
78c0: 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
78d0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
78e0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
78f0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7900: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
7910: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69   sqlite3_bind_ui
7920: 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
7930: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f  , int index, ulo
7940: 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73  ng value);..#els
7950: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7960: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
7970: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
7980: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69  te3_bind_int64_i
7990: 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69  nterop")]..    i
79a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
79b0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
79c0: 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e  3_bind_uint64_in
79d0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
79e0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
79f0: 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  f ulong value);.
7a00: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
7a10: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7a20: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
7a30: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7a40: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
7a50: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
7a60: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
7a70: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
7a80: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7a90: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
7aa0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
7ab0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
7ac0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c  sqlite3_bind_nul
7ad0: 6c 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  l(IntPtr stmt, i
7ae0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
7af0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7b00: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
7b10: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7b20: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
7b30: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
7b40: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
7b50: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
7b60: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7b70: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7b80: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7b90: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
7ba0: 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
7bb0: 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74  text(IntPtr stmt
7bc0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74  , int index, byt
7bd0: 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
7be0: 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
7bf0: 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
7c00: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7c10: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7c20: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7c30: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7c40: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7c50: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7c60: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7c70: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7c80: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7c90: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7ca0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
7cb0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
7cc0: 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e  rameter_count(In
7cd0: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
7ce0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7cf0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7d00: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7d10: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7d20: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7d30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7d40: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7d50: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7d60: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7d70: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
7d80: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7d90: 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
7da0: 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78  _parameter_index
7db0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79  (IntPtr stmt, by
7dc0: 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a  te[] strName);..
7dd0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7de0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7df0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7e00: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7e10: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7e20: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7e30: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7e40: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7e50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7e60: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7e70: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7e80: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
7e90: 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50  olumn_count(IntP
7ea0: 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
7eb0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7ec0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7ed0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7ee0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
7ef0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
7f00: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
7f10: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
7f20: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7f30: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
7f40: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
7f50: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
7f60: 74 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49  t sqlite3_step(I
7f70: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
7f80: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7f90: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7fa0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7fb0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7fc0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7fd0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7fe0: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
7ff0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8000: 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
8010: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c  te3_column_doubl
8020: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
8030: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6c 73  nt index);..#els
8040: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
8050: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8060: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8070: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
8080: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
8090: 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
80a0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
80b0: 6e 64 65 78 2c 20 6f 75 74 20 64 6f 75 62 6c 65  ndex, out double
80c0: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
80d0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
80e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
80f0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8100: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8110: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8120: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8130: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8140: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8150: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8160: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8170: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8180: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
8190: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50  _column_int(IntP
81a0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
81b0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
81c0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
81d0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
81e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
81f0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8200: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8210: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
8220: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
8230: 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
8240: 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  g sqlite3_column
8250: 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
8260: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
8270: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
8280: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8290: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
82a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
82b0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c  void sqlite3_col
82c0: 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  umn_int64_intero
82d0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
82e0: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 6c 6f  nt index, out lo
82f0: 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ng value);..#end
8300: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
8310: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8320: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
8330: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8340: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8350: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8360: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8370: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
8380: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8390: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
83a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
83b0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
83c0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f  lite3_column_blo
83d0: 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
83e0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
83f0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8400: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8410: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8420: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8430: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8440: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8450: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
8460: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8470: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
8480: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8490: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
84a0: 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
84b0: 6e 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 73  n_bytes(IntPtr s
84c0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
84d0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
84e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
84f0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8500: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8510: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8520: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8530: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8540: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8550: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8560: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8570: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8580: 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  tern TypeAffinit
8590: 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  y sqlite3_column
85a0: 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d  _type(IntPtr stm
85b0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
85c0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
85d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
85e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
85f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
8600: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
8610: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8620: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
8630: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
8640: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8650: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
8660: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
8670: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
8680: 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28  reate_collation(
8690: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
86a0: 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
86b0: 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
86c0: 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61  ser, SQLiteColla
86d0: 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23  tion func);....#
86e0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
86f0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8700: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8710: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8720: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8730: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
8740: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
8750: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8760: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
8770: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
8780: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8790: 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72  int sqlite3_aggr
87a0: 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50  egate_count(IntP
87b0: 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
87c0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
87d0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
87e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
87f0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
8800: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
8810: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8820: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
8830: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8840: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
8850: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
8860: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8870: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
8880: 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74  value_blob(IntPt
8890: 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
88a0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
88b0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
88c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
88d0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
88e0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
88f0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8900: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8910: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8920: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
8930: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8940: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
8950: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
8960: 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  s(IntPtr p);....
8970: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
8980: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8990: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
89a0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
89b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
89c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
89d0: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
89e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
89f0: 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
8a00: 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
8a10: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6c  (IntPtr p);..#el
8a20: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8a30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8a40: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
8a50: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
8a60: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
8a70: 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
8a80: 74 50 74 72 20 70 2c 20 6f 75 74 20 64 6f 75 62  tPtr p, out doub
8a90: 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  le value);..#end
8aa0: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
8ab0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8ac0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
8ad0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8ae0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8af0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8b00: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8b10: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
8b20: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8b30: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
8b40: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8b50: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
8b60: 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74  e3_value_int(Int
8b70: 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
8b80: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8b90: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
8ba0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8bb0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
8bc0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
8bd0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
8be0: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
8bf0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8c00: 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61 6c  long sqlite3_val
8c10: 75 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  ue_int64(IntPtr 
8c20: 70 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  p);..#else..    
8c30: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8c40: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
8c50: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8c60: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
8c70: 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74  _value_int64_int
8c80: 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f  erop(IntPtr p, o
8c90: 75 74 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  ut Int64 value);
8ca0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
8cb0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
8cc0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
8cd0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8ce0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
8cf0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
8d00: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
8d10: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
8d20: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8d30: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
8d40: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
8d50: 74 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70  tatic extern Typ
8d60: 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65  eAffinity sqlite
8d70: 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 49 6e 74  3_value_type(Int
8d80: 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
8d90: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8da0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
8db0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8dc0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
8dd0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
8de0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
8df0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
8e00: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8e10: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
8e20: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
8e30: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
8e40: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
8e50: 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74  blob(IntPtr cont
8e60: 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75  ext, byte[] valu
8e70: 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e  e, int nSize, In
8e80: 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
8e90: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
8ea0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8eb0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8ec0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8ed0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8ee0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8ef0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
8f00: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8f10: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
8f20: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f  qlite3_result_do
8f30: 75 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  uble(IntPtr cont
8f40: 65 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75  ext, double valu
8f50: 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
8f60: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8f70: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
8f80: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8f90: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
8fa0: 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69  _result_double_i
8fb0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
8fc0: 6e 74 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c  ntext, ref doubl
8fd0: 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
8fe0: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
8ff0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9000: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9010: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9020: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9030: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9040: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9050: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9060: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9070: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9080: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9090: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
90a0: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28  e3_result_error(
90b0: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
90c0: 62 79 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69  byte[] strErr, i
90d0: 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66  nt nLen);....#if
90e0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
90f0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9100: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9110: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9120: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9130: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9140: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9150: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9160: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9170: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9180: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
9190: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
91a0: 74 5f 69 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e  t_int(IntPtr con
91b0: 74 65 78 74 2c 20 69 6e 74 20 76 61 6c 75 65 29  text, int value)
91c0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
91d0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
91e0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
91f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9200: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9210: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9220: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
9230: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9240: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
9250: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
9260: 74 36 34 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  t64(IntPtr conte
9270: 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  xt, long value);
9280: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
9290: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
92a0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
92b0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
92c0: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
92d0: 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72  sult_int64_inter
92e0: 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
92f0: 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c  t, ref Int64 val
9300: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
9310: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9320: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9330: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9340: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
9350: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
9360: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9370: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
9380: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9390: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
93a0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
93b0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
93c0: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
93d0: 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72  sult_null(IntPtr
93e0: 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
93f0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
9400: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9410: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9420: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9430: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9440: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
9450: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
9460: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9470: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
9480: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
9490: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
94a0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
94b0: 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63  lt_text(IntPtr c
94c0: 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76  ontext, byte[] v
94d0: 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20  alue, int nLen, 
94e0: 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
94f0: 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
9500: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9510: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9520: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9530: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9540: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9550: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9560: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9570: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9580: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9590: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
95a0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
95b0: 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
95c0: 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20  _context(IntPtr 
95d0: 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79  context, int nBy
95e0: 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tes);....#if !PL
95f0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9600: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9610: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9620: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9630: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9640: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
9650: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
9660: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
9670: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9680: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9690: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
96a0: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
96b0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
96c0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
96d0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
96e0: 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
96f0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
9700: 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e  string value, in
9710: 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70  t nlen, IntPtr p
9720: 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
9730: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9740: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9750: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9760: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9770: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
9780: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
9790: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
97a0: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
97b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
97c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
97d0: 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
97e0: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
97f0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9800: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9810: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
9820: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31  e3_result_error1
9830: 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  6(IntPtr context
9840: 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65  , string strName
9850: 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
9860: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9870: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9880: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9890: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
98a0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
98b0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
98c0: 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
98d0: 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
98e0: 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
98f0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9900: 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
9910: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
9920: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
9930: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9940: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
9950: 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31  te3_result_text1
9960: 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  6(IntPtr context
9970: 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65  , string strName
9980: 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50  , int nLen, IntP
9990: 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
99a0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
99b0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
99c0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
99d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
99e0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
99f0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9a00: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
9a10: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9a20: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9a30: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
9a40: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9a50: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
9a60: 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62  key(IntPtr db, b
9a70: 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b  yte[] key, int k
9a80: 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  eylen);....#if !
9a90: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
9aa0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
9ab0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9ac0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
9ad0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9ae0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
9af0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
9b00: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9b10: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
9b20: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
9b30: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
9b40: 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 49 6e  sqlite3_rekey(In
9b50: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
9b60: 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
9b70: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
9b80: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9b90: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9ba0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9bb0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9bc0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9bd0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9be0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9bf0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9c00: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9c10: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9c20: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
9c30: 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b  ite3_update_hook
9c40: 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
9c50: 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b  teUpdateCallback
9c60: 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
9c70: 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
9c80: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9c90: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9ca0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9cb0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9cc0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9cd0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9ce0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9cf0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9d00: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
9d10: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
9d20: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
9d30: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74  r sqlite3_commit
9d40: 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
9d50: 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c   SQLiteCommitCal
9d60: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
9d70: 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
9d80: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9d90: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9da0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9db0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9dc0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
9dd0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
9de0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
9df0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9e00: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
9e10: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
9e20: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9e30: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 74  IntPtr sqlite3_t
9e40: 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c 20  race(IntPtr db, 
9e50: 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62  SQLiteTraceCallb
9e60: 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
9e70: 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20   pvUser);....   
9e80: 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65   // Since sqlite
9e90: 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73  3_config() takes
9ea0: 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75   a variable argu
9eb0: 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61  ment list, we ha
9ec0: 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64  ve to overload d
9ed0: 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20  eclarations..   
9ee0: 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73   // for all poss
9ef0: 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72  ible calls.  For
9f00: 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c   now, we are onl
9f10: 79 20 65 78 70 6f 73 69 6e 67 20 74 68 65 20 53  y exposing the S
9f20: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47  QLITE_CONFIG_LOG
9f30: 20 63 61 6c 6c 2e 0d 0a 23 69 66 20 21 50 4c 41   call...#if !PLA
9f40: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9f50: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9f60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9f70: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9f80: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9f90: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9fa0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
9fb0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9fc0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
9fd0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9fe0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
9ff0: 69 74 65 33 5f 63 6f 6e 66 69 67 28 69 6e 74 20  ite3_config(int 
a000: 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c  op, SQLiteLogCal
a010: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
a020: 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
a030: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
a040: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
a050: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a060: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
a070: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
a080: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
a090: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
a0a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a0b0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
a0c0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
a0d0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
a0e0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72  IntPtr sqlite3_r
a0f0: 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74  ollback_hook(Int
a100: 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52 6f  Ptr db, SQLiteRo
a110: 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66  llbackCallback f
a120: 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
a130: 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
a140: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
a150: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
a160: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a170: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
a180: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
a190: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
a1a0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
a1b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a1c0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
a1d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a1e0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
a1f0: 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c  sqlite3_db_handl
a200: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  e(IntPtr stmt);.
a210: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
a220: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
a230: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
a240: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
a250: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a260: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a270: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
a280: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
a290: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
a2a0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
a2b0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
a2c0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
a2d0: 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74  e3_next_stmt(Int
a2e0: 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73  Ptr db, IntPtr s
a2f0: 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
a300: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
a310: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
a320: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a330: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
a340: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
a350: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
a360: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
a370: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a380: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
a390: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
a3a0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
a3b0: 6c 69 74 65 33 5f 65 78 65 63 28 49 6e 74 50 74  lite3_exec(IntPt
a3c0: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
a3d0: 53 71 6c 2c 20 49 6e 74 50 74 72 20 70 76 43 61  Sql, IntPtr pvCa
a3e0: 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74 72 20 70  llback, IntPtr p
a3f0: 76 50 61 72 61 6d 2c 20 6f 75 74 20 49 6e 74 50  vParam, out IntP
a400: 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23  tr errMsg);....#
a410: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
a420: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
a430: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a440: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
a450: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
a460: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
a470: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
a480: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a490: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
a4a0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
a4b0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
a4c0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f  int sqlite3_get_
a4d0: 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50 74  autocommit(IntPt
a4e0: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
a4f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
a500: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
a510: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a520: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
a530: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
a540: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
a550: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
a560: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a570: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
a580: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a590: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
a5a0: 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
a5b0: 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74  result_codes(Int
a5c0: 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66  Ptr db, int onof
a5d0: 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  f);....#if !PLAT
a5e0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a5f0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a600: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a610: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a620: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a630: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a640: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a650: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a660: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
a670: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a680: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
a690: 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50  te3_errcode(IntP
a6a0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
a6b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a6c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a6d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a6e0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
a6f0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
a700: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
a710: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
a720: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a730: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
a740: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a750: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
a760: 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
a770: 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
a780: 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53  db);....    // S
a790: 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67  ince sqlite3_log
a7a0: 28 29 20 74 61 6b 65 73 20 61 20 76 61 72 69 61  () takes a varia
a7b0: 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73  ble argument lis
a7c0: 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76  t, we have to ov
a7d0: 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69  erload declarati
a7e0: 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20  ons..    // for 
a7f0: 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c  all possible cal
a800: 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65  ls.  For now, we
a810: 20 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69   are only exposi
a820: 6e 67 20 61 20 73 69 6e 67 6c 65 20 73 74 72 69  ng a single stri
a830: 6e 67 2c 20 61 6e 64 20 0d 0a 20 20 20 20 2f 2f  ng, and ..    //
a840: 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 63   depend on the c
a850: 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74 20  aller to format 
a860: 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69 66  the string...#if
a870: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a880: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a890: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a8a0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a8b0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a8c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a8d0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a8e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a8f0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a900: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a910: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
a920: 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 69  id sqlite3_log(i
a930: 6e 74 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74  nt iErrCode, byt
a940: 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d  e[] zFormat);...
a950: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
a960: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
a970: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a980: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
a990: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
a9a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a9b0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
a9c0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a9d0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
a9e0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
a9f0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
aa00: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 66 69  n int sqlite3_fi
aa10: 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74  le_control(IntPt
aa20: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62  r db, byte[] zDb
aa30: 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e  Name, int op, In
aa40: 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 20  tPtr pArg);.... 
aa50: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
aa60: 20 7d 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f   }....#if PLATFO
aa70: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
aa80: 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ORK..  internal 
aa90: 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 43  abstract class C
aaa0: 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20  riticalHandle : 
aab0: 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b  IDisposable..  {
aac0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62 6f  ..    private bo
aad0: 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20  ol _isClosed;.. 
aae0: 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74     protected Int
aaf0: 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  Ptr handle;..   
ab00: 20 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64   ..    protected
ab10: 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28   CriticalHandle(
ab20: 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61  IntPtr invalidHa
ab30: 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20  ndleValue)..    
ab40: 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20  {..      handle 
ab50: 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56  = invalidHandleV
ab60: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73  alue;..      _is
ab70: 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d  Closed = false;.
ab80: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43  .    }....    ~C
ab90: 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d  riticalHandle().
aba0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
abb0: 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
abc0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
abd0: 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70  ate void Cleanup
abe0: 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
abf0: 20 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d   if (!IsClosed).
ac00: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
ac10: 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64    this._isClosed
ac20: 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
ac30: 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64    if (!IsInvalid
ac40: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
ac50: 20 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48          ReleaseH
ac60: 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20  andle();..      
ac70: 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
ac80: 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
ac90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
aca0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
acb0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f   public void Clo
acc0: 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  se()..    {..   
acd0: 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
ace0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
acf0: 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
ad00: 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ose()..    {..  
ad10: 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
ad20: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
ad30: 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
ad40: 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  al void Dispose(
ad50: 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d  bool disposing).
ad60: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c  .    {..      Cl
ad70: 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d  eanup();..    }.
ad80: 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
ad90: 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52   abstract bool R
ada0: 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d  eleaseHandle();.
adb0: 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
adc0: 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28   void SetHandle(
add0: 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20  IntPtr value).. 
ade0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64     {..      hand
adf0: 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20  le = value;..   
ae00: 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
ae10: 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41   void SetHandleA
ae20: 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20  sInvalid()..    
ae30: 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  {..      _isClos
ae40: 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
ae50: 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
ae60: 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
ae70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
ae80: 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d  c bool IsClosed.
ae90: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
aea0: 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c  t { return _isCl
aeb0: 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a  osed; }..    }..
aec0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73  ..    public abs
aed0: 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76  tract bool IsInv
aee0: 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  alid..    {..   
aef0: 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a     get;..    }..
af00: 0d 0a 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d  ..  }....#endif.
af10: 0a 0d 0a 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20  ...  // Handles 
af20: 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61  the unmanaged da
af30: 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20  tabase pointer, 
af40: 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e  and provides fin
af50: 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72  alization suppor
af60: 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20 69 6e 74  t for it...  int
af70: 65 72 6e 61 6c 20 63 6c 61 73 73 20 53 51 4c 69  ernal class SQLi
af80: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
af90: 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
afa0: 64 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 75  dle..  {..    pu
afb0: 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
afc0: 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
afd0: 74 50 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65  tPtr(SQLiteConne
afe0: 63 74 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d  ctionHandle db).
aff0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65  .    {..      re
b000: 74 75 72 6e 20 28 64 62 20 21 3d 20 6e 75 6c 6c  turn (db != null
b010: 29 20 3f 20 64 62 2e 68 61 6e 64 6c 65 20 3a 20  ) ? db.handle : 
b020: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
b030: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
b040: 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
b050: 74 20 6f 70 65 72 61 74 6f 72 20 53 51 4c 69 74  t operator SQLit
b060: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
b070: 65 28 49 6e 74 50 74 72 20 64 62 29 0d 0a 20 20  e(IntPtr db)..  
b080: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
b090: 6e 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e  n new SQLiteConn
b0a0: 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 64 62 29  ectionHandle(db)
b0b0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
b0c0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
b0d0: 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49  nnectionHandle(I
b0e0: 6e 74 50 74 72 20 64 62 29 0d 0a 20 20 20 20 20  ntPtr db)..     
b0f0: 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 7b   : this()..    {
b100: 0d 0a 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c  ..      SetHandl
b110: 65 28 64 62 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  e(db);..    }...
b120: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51  .    internal SQ
b130: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
b140: 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 3a 20  ndle()..      : 
b150: 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
b160: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 7d 0d  )..    {..    }.
b170: 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
b180: 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52   override bool R
b190: 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a  eleaseHandle()..
b1a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 74 72 79      {..      try
b1b0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
b1c0: 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
b1d0: 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
b1e0: 69 73 29 3b 0d 0a 0d 0a 23 69 66 20 44 45 42 55  is);....#if DEBU
b1f0: 47 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  G..        try..
b200: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b210: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
b220: 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
b230: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
b240: 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74     "CloseConnect
b250: 69 6f 6e 3a 20 7b 30 7d 22 2c 20 68 61 6e 64 6c  ion: {0}", handl
b260: 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e));..        }.
b270: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a  .        catch..
b280: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b290: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
b2a0: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
b2b0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
b2c0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d  .#endif..      }
b2d0: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
b2e0: 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
b2f0: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
b300: 6c 73 65 0d 0a 20 20 20 20 20 20 63 61 74 63 68  lse..      catch
b310: 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
b320: 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
b330: 20 20 7b 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    {..#if DEBUG..
b340: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
b350: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b360: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
b370: 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
b380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b390: 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
b3a0: 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
b3b0: 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
b3c0: 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
b3d0: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ));..        }..
b3e0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
b3f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b400: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
b410: 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
b420: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61  .      return fa
b430: 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
b440: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
b450: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
b460: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65  ..    public ove
b470: 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
b480: 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  alid..    {..   
b490: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
b4a0: 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
b4b0: 72 2e 5a 65 72 6f 29 3b 20 7d 0d 0a 20 20 20 20  r.Zero); }..    
b4c0: 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 20 50  }..  }....  // P
b4d0: 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
b4e0: 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
b4f0: 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
b500: 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20  e statements... 
b510: 20 69 6e 74 65 72 6e 61 6c 20 63 6c 61 73 73 20   internal class 
b520: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
b530: 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
b540: 48 61 6e 64 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20  Handle..  {..   
b550: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
b560: 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
b570: 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74   IntPtr(SQLiteSt
b580: 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74  atementHandle st
b590: 6d 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  mt)..    {..    
b5a0: 20 20 72 65 74 75 72 6e 20 28 73 74 6d 74 20 21    return (stmt !
b5b0: 3d 20 6e 75 6c 6c 29 20 3f 20 73 74 6d 74 2e 68  = null) ? stmt.h
b5c0: 61 6e 64 6c 65 20 3a 20 49 6e 74 50 74 72 2e 5a  andle : IntPtr.Z
b5d0: 65 72 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ero;..    }.... 
b5e0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
b5f0: 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74   implicit operat
b600: 6f 72 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  or SQLiteStateme
b610: 6e 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20  ntHandle(IntPtr 
b620: 73 74 6d 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  stmt)..    {..  
b630: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53      return new S
b640: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
b650: 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20  ndle(stmt);..   
b660: 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74   }....    privat
b670: 65 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  e SQLiteStatemen
b680: 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73  tHandle(IntPtr s
b690: 74 6d 74 29 0d 0a 20 20 20 20 20 20 3a 20 74 68  tmt)..      : th
b6a0: 69 73 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  is()..    {..   
b6b0: 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73 74 6d     SetHandle(stm
b6c0: 74 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  t);..    }....  
b6d0: 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
b6e0: 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
b6f0: 28 29 0d 0a 20 20 20 20 20 20 3a 20 62 61 73 65  ()..      : base
b700: 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
b710: 20 20 20 7b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     {..    }.... 
b720: 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
b730: 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
b740: 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
b750: 7b 0d 0a 20 20 20 20 20 20 74 72 79 0d 0a 20 20  {..      try..  
b760: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 53      {..        S
b770: 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69  QLiteBase.Finali
b780: 7a 65 53 74 61 74 65 6d 65 6e 74 28 74 68 69 73  zeStatement(this
b790: 29 3b 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d  );....#if DEBUG.
b7a0: 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
b7b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b7c0: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
b7d0: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
b7e0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
b7f0: 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d   "FinalizeStatem
b800: 65 6e 74 3a 20 7b 30 7d 22 2c 20 68 61 6e 64 6c  ent: {0}", handl
b810: 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e));..        }.
b820: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a  .        catch..
b830: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b840: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
b850: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
b860: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
b870: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d  .#endif..      }
b880: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
b890: 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
b8a0: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
b8b0: 6c 73 65 0d 0a 20 20 20 20 20 20 63 61 74 63 68  lse..      catch
b8c0: 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
b8d0: 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
b8e0: 20 20 7b 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    {..#if DEBUG..
b8f0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
b900: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b910: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
b920: 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
b930: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b940: 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  "FinalizeStateme
b950: 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  nt: {0}, excepti
b960: 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
b970: 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
b980: 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d   e));..        }
b990: 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d  ..        catch.
b9a0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
b9b0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
b9c0: 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55       }..#if DEBU
b9d0: 47 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  G..      return 
b9e0: 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
b9f0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
ba00: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  ;..#endif..    }
ba10: 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6f  ....    public o
ba20: 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
ba30: 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20  nvalid..    {.. 
ba40: 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
ba50: 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  n (handle == Int
ba60: 50 74 72 2e 5a 65 72 6f 29 3b 20 7d 0d 0a 20 20  Ptr.Zero); }..  
ba70: 20 20 7d 0d 0a 20 20 7d 0d 0a 7d 0d 0a             }..  }..}..