System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact d839528e16fdd79e981b9e69c5a323ca15fe94b3:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 20 0d 0a  soft.com).. * ..
00b0: 20 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74   * Released to t
00c0: 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e  he public domain
00d0: 2c 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77  , use at your ow
00e0: 6e 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a  n 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 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65  **/....namespace
0130: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
0140: 69 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20  ite..{..  using 
0150: 53 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67  System;..  using
0160: 20 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a   System.Globaliz
0170: 61 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ation;....#if !N
0180: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
0190: 20 28 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20   (TRACE_PRELOAD 
01a0: 7c 7c 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 29  || TRACE_HANDLE)
01b0: 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ..  using System
01c0: 2e 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23  .Diagnostics;..#
01d0: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 50 52 45  endif....#if PRE
01e0: 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
01f0: 41 52 59 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  ARY..  using Sys
0200: 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e  tem.Collections.
0210: 47 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69 6e  Generic;..  usin
0220: 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20 20  g System.IO;..  
0230: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65 66  using System.Ref
0240: 6c 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66  lection;..#endif
0250: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
0260: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
0270: 52 4b 20 26 26 20 21 44 45 42 55 47 0d 0a 20 20  RK && !DEBUG..  
0280: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63  using System.Sec
0290: 75 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a  urity;..#endif..
02a0: 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ..  using System
02b0: 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70  .Runtime.Interop
02c0: 53 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66  Services;....#if
02d0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
02e0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
02f0: 73 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65  sing System.Thre
0300: 61 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ading;..#endif..
0310: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
0320: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
0330: 20 26 26 20 21 44 45 42 55 47 0d 0a 20 20 5b 53   && !DEBUG..  [S
0340: 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64  uppressUnmanaged
0350: 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23  CodeSecurity]..#
0360: 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61  endif..  interna
0370: 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55  l static class U
0380: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
0390: 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23  ds..  {..      #
03a0: 72 65 67 69 6f 6e 20 43 72 69 74 69 63 61 6c 20  region Critical 
03b0: 48 61 6e 64 6c 65 20 43 6f 75 6e 74 73 20 28 44  Handle Counts (D
03c0: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 29  ebug Build Only)
03d0: 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
03e0: 4c 45 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  LE..      //..  
03f0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
0400: 73 65 20 63 6f 75 6e 74 73 20 72 65 70 72 65 73  se counts repres
0410: 65 6e 74 20 74 68 65 20 74 6f 74 61 6c 20 6e 75  ent the total nu
0420: 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64  mber of outstand
0430: 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ing..      //   
0440: 20 20 20 20 28 6e 6f 6e 2d 64 69 73 70 6f 73 65      (non-dispose
0450: 64 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  d) CriticalHandl
0460: 65 20 64 65 72 69 76 65 64 20 6f 62 6a 65 63 74  e derived object
0470: 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20   instances..    
0480: 20 20 2f 2f 20 20 20 20 20 20 20 63 72 65 61 74    //       creat
0490: 65 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61  ed by this libra
04a0: 72 79 20 61 6e 64 20 61 72 65 20 70 72 69 6d 61  ry and are prima
04b0: 72 69 6c 79 20 66 6f 72 20 75 73 65 20 62 79 0d  rily for use by.
04c0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
04d0: 74 68 65 20 74 65 73 74 20 73 75 69 74 65 2e 20  the test suite. 
04e0: 20 54 68 65 73 65 20 63 6f 75 6e 74 73 20 61 72   These counts ar
04f0: 65 20 69 6e 63 72 65 6d 65 6e 74 65 64 20 62 79  e incremented by
0500: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
0510: 20 20 20 20 20 61 73 73 6f 63 69 61 74 65 64 20       associated 
0520: 63 6f 6e 73 74 72 75 63 74 6f 72 73 20 61 6e 64  constructors and
0530: 20 61 72 65 20 64 65 63 72 65 6d 65 6e 74 65 64   are decremented
0540: 20 75 70 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20   upon the..     
0550: 20 2f 2f 20 20 20 20 20 20 20 73 75 63 63 65 73   //       succes
0560: 73 66 75 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 20  sful completion 
0570: 6f 66 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  of the associate
0580: 64 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 0d  d ReleaseHandle.
0590: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
05a0: 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20  methods...      
05b0: 2f 2f 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  //..      intern
05c0: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 63 6f  al static int co
05d0: 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a  nnectionCount;..
05e0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
05f0: 74 61 74 69 63 20 69 6e 74 20 73 74 61 74 65 6d  tatic int statem
0600: 65 6e 74 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20  entCount;..     
0610: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
0620: 20 69 6e 74 20 62 61 63 6b 75 70 43 6f 75 6e 74   int backupCount
0630: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
0640: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
0650: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
0660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
06a0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
06b0: 4f 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20  Optional Native 
06c0: 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50  SQLite Library P
06d0: 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d  re-Loading Code.
06e0: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
06f0: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
0700: 61 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20  are looking for 
0710: 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c  the standard SQL
0720: 69 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65  ite DLL ("sqlite
0730: 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20  3.dll"),..      
0740: 2f 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74  //       the int
0750: 65 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74  erop DLL ("SQLit
0760: 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c  e.Interop.dll"),
0770: 20 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69   or we are runni
0780: 6e 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20  ng on the..     
0790: 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43   //       .NET C
07a0: 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
07b0: 2c 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c  , we should incl
07c0: 75 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f  ude this code (o
07d0: 6e 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20  nly if the..    
07e0: 20 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75    //       featu
07f0: 72 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20  re has actually 
0800: 62 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20  been enabled).  
0810: 54 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20  This code would 
0820: 62 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20  be totally..    
0830: 20 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e    //       redun
0840: 64 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64  dant if this mod
0850: 75 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e  ule has been bun
0860: 64 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69  dled into the mi
0870: 78 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20  xed-mode..      
0880: 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c  //       assembl
0890: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69  y...      //..#i
08a0: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
08b0: 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
08c0: 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
08d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
08e0: 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  K....      //.. 
08f0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e       // NOTE: On
0900: 6c 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68  ly compile in th
0910: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
0920: 20 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69   pre-load code i
0930: 66 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20  f the feature.. 
0940: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
0950: 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66  s been enabled f
0960: 6f 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a  or this build...
0970: 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52        //..#if PR
0980: 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42  ELOAD_NATIVE_LIB
0990: 52 41 52 59 0d 0a 23 69 66 20 21 50 4c 41 54 46  RARY..#if !PLATF
09a0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
09b0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  WORK..      /// 
09c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
09d0: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
09e0: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
09f0: 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69   variable contai
0a00: 6e 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  ning the process
0a10: 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  or..      /// ar
0a20: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
0a30: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
0a40: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
0a50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0a60: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
0a70: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50  eadonly string P
0a80: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
0a90: 43 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20  CTURE =..       
0aa0: 20 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52     "PROCESSOR_AR
0ab0: 43 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 23 65  CHITECTURE";..#e
0ac0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
0ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
0b20: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0b30: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
0b40: 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
0b50: 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20   = ".dll";....  
0b60: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
0bb0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
0bc0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
0bd0: 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f  is is the P/Invo
0be0: 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77  ke method that w
0bf0: 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20  raps the native 
0c00: 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72  Win32 LoadLibrar
0c10: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  y..      /// fun
0c20: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
0c30: 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69  MSDN documentati
0c40: 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61  on for full deta
0c50: 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a  ils on what it..
0c60: 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d        /// does..
0c70: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
0c80: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
0c90: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69   <param name="fi
0ca0: 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  leName">..      
0cb0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
0cc0: 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c  the executable l
0cd0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
0ce0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
0cf0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
0d00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
0d10: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
0d20: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
0d30: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
0d40: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
0d50: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
0d60: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 5b 44 6c 6c  rns>..      [Dll
0d70: 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32  Import("kernel32
0d80: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61  ",..          Ca
0d90: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
0da0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
0db0: 69 6f 6e 2e 57 69 6e 61 70 69 2c 20 43 68 61 72  ion.Winapi, Char
0dc0: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75  Set = CharSet.Au
0dd0: 74 6f 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  to,..#if !PLATFO
0de0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
0df0: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 42  ORK..          B
0e00: 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20  estFitMapping = 
0e10: 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e  false, ThrowOnUn
0e20: 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74  mappableChar = t
0e30: 72 75 65 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue,..#endif..  
0e40: 20 20 20 20 20 20 20 20 53 65 74 4c 61 73 74 45          SetLastE
0e50: 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20  rror = true)].. 
0e60: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
0e70: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
0e80: 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 73 74  r LoadLibrary(st
0e90: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 29 3b 0d  ring fileName);.
0ea0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
0eb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
0ec0: 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75  / This lock is u
0ed0: 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74  sed to protect t
0ee0: 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c 69 74  he static _SQLit
0ef0: 65 4d 6f 64 75 6c 65 20 61 6e 64 0d 0a 20 20 20  eModule and..   
0f00: 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72     /// processor
0f10: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
0f20: 66 6f 72 6d 73 20 66 69 65 6c 64 73 2c 20 62 65  forms fields, be
0f30: 6c 6f 77 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  low...      /// 
0f40: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0f50: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0f60: 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
0f70: 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 20   staticSyncRoot 
0f80: 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
0f90: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
0fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fe0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
0ff0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
1000: 2f 2f 20 53 74 6f 72 65 73 20 74 68 65 20 6d 61  // Stores the ma
1010: 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20 70  ppings between p
1020: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
1030: 63 74 75 72 65 20 6e 61 6d 65 73 20 61 6e 64 20  cture names and 
1040: 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20 20  platform..      
1050: 2f 2f 2f 20 6e 61 6d 65 73 2e 0d 0a 20 20 20 20  /// names...    
1060: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1070: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1080: 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72  static Dictionar
1090: 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  y<string, string
10a0: 3e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  > processorArchi
10b0: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
10c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
10d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1110: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1120: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1130: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1140: 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f  module handle fo
1150: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
1160: 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 74  ite library or t
1170: 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  he value..      
1180: 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e  /// IntPtr.Zero.
1190: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
11a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
11b0: 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
11c0: 50 74 72 20 5f 53 51 4c 69 74 65 4d 6f 64 75 6c  Ptr _SQLiteModul
11d0: 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e = IntPtr.Zero;
11e0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
11f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1230: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
1240: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1250: 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20 74 68 69  /// For now, thi
1260: 73 20 6d 65 74 68 6f 64 20 73 69 6d 70 6c 79 20  s method simply 
1270: 63 61 6c 6c 73 20 74 68 65 20 49 6e 69 74 69 61  calls the Initia
1280: 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  lize method...  
1290: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12a0: 79 3e 0d 0a 20 20 20 20 20 20 73 74 61 74 69 63  y>..      static
12b0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
12c0: 68 6f 64 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d  hods()..      {.
12d0: 0a 20 20 20 20 20 20 20 20 20 20 49 6e 69 74 69  .          Initi
12e0: 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20 20 20 20  alize();..      
12f0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
1300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1340: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1350: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1360: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
1370: 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 69 73   initialize this
1380: 20 63 6c 61 73 73 20 62 79 20 70 72 65 2d 6c 6f   class by pre-lo
1390: 61 64 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65  ading the native
13a0: 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f   SQLite..      /
13b0: 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f 72 20 74  // library for t
13c0: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
13d0: 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
13e0: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
13f0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1400: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
1410: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
1420: 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 28 29  oid Initialize()
1430: 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21  ..      {..#if !
1440: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1450: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1460: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1470: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
1480: 68 65 20 22 4e 6f 50 72 65 4c 6f 61 64 53 51 4c  he "NoPreLoadSQL
1490: 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  ite" environment
14a0: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
14b0: 2c 20 73 6b 69 70 0d 0a 20 20 20 20 20 20 20 20  , skip..        
14c0: 20 20 2f 2f 20 20 20 20 20 20 20 61 6c 6c 20 6f    //       all o
14d0: 75 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65 20  ur special code 
14e0: 61 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75 72  and simply retur
14f0: 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  n...          //
1500: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
1510: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
1520: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
1530: 6c 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51  le("No_PreLoadSQ
1540: 4c 69 74 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d  Lite") != null).
1550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
1560: 65 74 75 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a  eturn;..#endif..
1570: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
1580: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
1590: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
15a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15c0: 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73 75  // TODO: Make su
15d0: 72 65 20 74 68 69 73 20 6c 69 73 74 20 69 73 20  re this list is 
15e0: 75 70 64 61 74 65 64 20 69 66 20 74 68 65 20 73  updated if the s
15f0: 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20  upported..      
1600: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1610: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
1620: 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61 6e  tecture names an
1630: 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20 6e 61  d/or platform na
1640: 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mes..           
1650: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61 6e     //       chan
1660: 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ges...          
1670: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1680: 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
1690: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
16a0: 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c  latforms == null
16b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
16c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
16d0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
16e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
16f0: 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20  OTE: Create the 
1700: 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73 6f 72  map of processor
1710: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
1720: 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mes..           
1730: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1740: 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  to platform name
1750: 73 20 75 73 69 6e 67 20 61 20 63 61 73 65 2d 69  s using a case-i
1760: 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72 69 6e  nsensitive strin
1770: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
1780: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f       //       co
1790: 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20 20 20  mparer...       
17a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17c0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
17d0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
17e0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
17f0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 44 69 63           new Dic
1800: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
1810: 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20 20 20  string>(..      
1820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1830: 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
1840: 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65  er.OrdinalIgnore
1850: 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Case);....      
1860: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1880: 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 75 70    // NOTE: Setup
1890: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70 6c 61   the list of pla
18a0: 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73 73 6f  tform names asso
18b0: 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
18c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
18d0: 2f 20 20 20 20 20 20 20 74 68 65 20 73 75 70 70  /       the supp
18e0: 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20  orted processor 
18f0: 61 72 63 68 69 74 65 63 74 75 72 65 73 2e 0d 0a  architectures...
1900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1910: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1920: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
1930: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
1940: 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38 36 22  tforms.Add("x86"
1950: 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20 20 20  , "Win32");..   
1960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
1970: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
1980: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
1990: 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36 34 22  d("AMD64", "x64"
19a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
19b0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
19c0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
19d0: 6f 72 6d 73 2e 41 64 64 28 22 49 41 36 34 22 2c  orms.Add("IA64",
19e0: 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a 20 20   "Itanium");..  
19f0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1a00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1a10: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1a20: 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74   // BUGBUG: What
1a30: 20 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70   about other app
1a40: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73  lication domains
1a50: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
1a60: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1a70: 20 20 20 69 66 20 28 5f 53 51 4c 69 74 65 4d 6f     if (_SQLiteMo
1a80: 64 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  dule == IntPtr.Z
1a90: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1aa0: 20 20 20 20 20 20 20 20 5f 53 51 4c 69 74 65 4d          _SQLiteM
1ab0: 6f 64 75 6c 65 20 3d 20 50 72 65 4c 6f 61 64 53  odule = PreLoadS
1ac0: 51 4c 69 74 65 44 6c 6c 28 6e 75 6c 6c 2c 20 6e  QLiteDll(null, n
1ad0: 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ull);..         
1ae0: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
1af0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b40: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1b50: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
1b60: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
1b70: 6e 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65  ns the base dire
1b80: 63 74 6f 72 79 20 6f 66 20 74 68 65 20 63 75 72  ctory of the cur
1b90: 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
1ba0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61  ..      /// doma
1bb0: 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  in...      /// <
1bc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1bd0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1be0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61        /// The ba
1bf0: 73 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  se directory for
1c00: 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
1c10: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20  lication domain 
1c20: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d  -OR- null if it.
1c30: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f  .      /// canno
1c40: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
1c50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
1c60: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
1c70: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
1c80: 69 6e 67 20 47 65 74 42 61 73 65 44 69 72 65 63  ing GetBaseDirec
1c90: 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
1ca0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1cb0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1cc0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1cd0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1ce0: 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61  : If the "PreLoa
1cf0: 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65  dSQLite_BaseDire
1d00: 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65  ctory" environme
1d10: 6e 74 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20  nt variable..   
1d20: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1d30: 69 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76  is set, use it v
1d40: 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20  erbatim for the 
1d50: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d  base directory..
1d60: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1d70: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1d80: 64 69 72 65 63 74 6f 72 79 20 3d 20 45 6e 76 69  directory = Envi
1d90: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
1da0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d  onmentVariable(.
1db0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  .              "
1dc0: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61  PreLoadSQLite_Ba
1dd0: 73 65 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a  seDirectory");..
1de0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
1df0: 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c  directory != nul
1e00: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1e10: 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f    return directo
1e20: 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ry;....         
1e30: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
1e40: 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73  / NOTE: Otherwis
1e50: 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75  e, fallback on u
1e60: 73 69 6e 67 20 74 68 65 20 62 61 73 65 20 64 69  sing the base di
1e70: 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a  rectory of the..
1e80: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1e90: 20 20 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69     current appli
1ea0: 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a  cation domain...
1eb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1ec0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 41          return A
1ed0: 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74  ppDomain.Current
1ee0: 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63  Domain.BaseDirec
1ef0: 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  tory;..#else..  
1f00: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
1f10: 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65   assembly = Asse
1f20: 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e  mbly.GetExecutin
1f30: 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a  gAssembly();....
1f40: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
1f50: 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d  sembly == null).
1f60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
1f70: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
1f80: 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
1f90: 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e 61  yName assemblyNa
1fa0: 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47 65  me = assembly.Ge
1fb0: 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  tName();....    
1fc0: 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
1fd0: 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  lyName == null).
1fe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
1ff0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
2000: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2010: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2020: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2030: 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
2040: 79 4e 61 6d 65 28 61 73 73 65 6d 62 6c 79 4e 61  yName(assemblyNa
2050: 6d 65 2e 43 6f 64 65 42 61 73 65 29 3b 0d 0a 20  me.CodeBase);.. 
2060: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2070: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
2080: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2090: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
20a0: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
20b0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
20c0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 23   return null;..#
20d0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a  endif..      }..
20e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
20f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
2140: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2150: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
2160: 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  the dynamic link
2170: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
2180: 6d 65 20 72 65 71 75 69 72 65 73 20 61 20 73 75  me requires a su
2190: 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ffix..      /// 
21a0: 61 6e 64 20 61 64 64 73 20 69 74 20 69 66 20 6e  and adds it if n
21b0: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
21c0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
21d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
21e0: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
21f0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
2200: 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d  e original dynam
2210: 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
2220: 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73  file name to ins
2230: 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  pect...      ///
2240: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2250: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2260: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79        /// The dy
2270: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
2280: 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f  ry file name, po
2290: 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20  ssibly modified 
22a0: 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20  to include an.. 
22b0: 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69       /// extensi
22c0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
22d0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
22e0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
22f0: 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46  string FixUpDllF
2300: 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  ileName(..      
2310: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
2320: 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ame..          )
2330: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
2340: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
2350: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
2360: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
2370: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2380: 20 20 20 20 20 20 50 6c 61 74 66 6f 72 6d 49 44        PlatformID
2390: 20 70 6c 61 74 66 6f 72 6d 49 64 20 3d 20 45 6e   platformId = En
23a0: 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72 73  vironment.OSVers
23b0: 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d  ion.Platform;...
23c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
23d0: 66 20 28 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d  f ((platformId =
23e0: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
23f0: 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  32S) ||..       
2400: 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74             (plat
2410: 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f  formId == Platfo
2420: 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77  rmID.Win32Window
2430: 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  s) ||..         
2440: 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f           (platfo
2450: 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d  rmId == Platform
2460: 49 44 2e 57 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a  ID.Win32NT) ||..
2470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2480: 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d    (platformId ==
2490: 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 43   PlatformID.WinC
24a0: 45 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  E))..           
24b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24c0: 20 20 20 20 20 20 20 20 69 66 20 28 21 66 69 6c          if (!fil
24d0: 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28 44  eName.EndsWith(D
24e0: 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 2c  llFileExtension,
24f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2500: 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
2510: 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
2520: 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29  inalIgnoreCase))
2530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2540: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2550: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2560: 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20 44  urn fileName + D
2570: 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b  llFileExtension;
2580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2590: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
25a0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
25b0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
25c0: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
25d0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
25e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
25f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20  /////////////.. 
2630: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2640: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
2650: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
2660: 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  s the processor 
2670: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
2680: 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20  the current..   
2690: 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e 0d     /// process..
26a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
26b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
26c0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
26d0: 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73    /// The proces
26e0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
26f0: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
2700: 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c  process -OR- nul
2710: 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f  l if it..      /
2720: 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
2730: 65 72 6d 69 6e 65 64 2e 20 20 41 6c 77 61 79 73  ermined.  Always
2740: 20 72 65 74 75 72 6e 73 20 61 6e 20 65 6d 70 74   returns an empt
2750: 79 20 73 74 72 69 6e 67 20 77 68 65 6e 20 72 75  y string when ru
2760: 6e 6e 69 6e 67 20 6f 6e 0d 0a 20 20 20 20 20 20  nning on..      
2770: 2f 2f 2f 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d  /// the .NET Com
2780: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d  pact Framework..
2790: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
27a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
27b0: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
27c0: 6e 67 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41  ng GetProcessorA
27d0: 72 63 68 69 74 65 63 74 75 72 65 28 29 0d 0a 20  rchitecture().. 
27e0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
27f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2800: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2810: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2820: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
2830: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50  "PreLoadSQLite_P
2840: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
2850: 74 75 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  ture" environmen
2860: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
2870: 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 69        variable i
2880: 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76 65  s set, use it ve
2890: 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20 63  rbatim for the c
28a0: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 6f 72  urrent processor
28b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
28c0: 20 20 20 20 20 61 72 63 68 69 74 65 63 74 75 72       architectur
28d0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
28e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
28f0: 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
2900: 69 74 65 63 74 75 72 65 20 3d 20 45 6e 76 69 72  itecture = Envir
2910: 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f  onment.GetEnviro
2920: 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a  nmentVariable(..
2930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
2940: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
2950: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
2960: 72 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  re");....       
2970: 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
2980: 41 72 63 68 69 74 65 63 74 75 72 65 20 21 3d 20  Architecture != 
2990: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
29a0: 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63       return proc
29b0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
29c0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
29d0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
29e0: 20 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74 68   BUGBUG: Will th
29f0: 69 73 20 61 6c 77 61 79 73 20 62 65 20 72 65 6c  is always be rel
2a00: 69 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20  iable?..        
2a10: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2a20: 72 65 74 75 72 6e 20 45 6e 76 69 72 6f 6e 6d 65  return Environme
2a30: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
2a40: 74 56 61 72 69 61 62 6c 65 28 50 52 4f 43 45 53  tVariable(PROCES
2a50: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
2a60: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
2a70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2a80: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 4e 6f     // BUGBUG: No
2a90: 20 77 61 79 20 74 6f 20 64 65 74 65 72 6d 69 6e   way to determin
2aa0: 65 20 74 68 69 73 20 76 61 6c 75 65 20 6f 6e 20  e this value on 
2ab0: 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
2ac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
2ad0: 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b         Framework
2ae0: 20 28 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e   (running on Win
2af0: 64 6f 77 73 20 43 45 2c 20 65 74 63 29 2e 0d 0a  dows CE, etc)...
2b00: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2b10: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
2b20: 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 23 65  tring.Empty;..#e
2b30: 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ndif..      }...
2b40: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
2b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
2ba0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2bb0: 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f 63 65   Given the proce
2bc0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
2bd0: 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  e, returns the n
2be0: 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61 74 66  ame of the platf
2bf0: 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  orm...      /// 
2c00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2c10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2c20: 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
2c30: 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
2c40: 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73    /// The proces
2c50: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
2c60: 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61 74 65   to be translate
2c70: 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d 20  d to a platform 
2c80: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
2c90: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2ca0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2cb0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 6c        /// The pl
2cc0: 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72 20  atform name for 
2cd0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70 72  the specified pr
2ce0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
2cf0: 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a  ture -OR- null..
2d00: 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69 74 20        /// if it 
2d10: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
2d20: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
2d30: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2d40: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2d50: 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c 61 74  c string GetPlat
2d60: 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20 20  formName(..     
2d70: 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63       string proc
2d80: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
2d90: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
2da0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2db0: 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
2dc0: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63  NullOrEmpty(proc
2dd0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
2de0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
2df0: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
2e00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
2e10: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
2e20: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
2e30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
2e40: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
2e50: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
2e60: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
2e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2e80: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
2e90: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
2ea0: 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b  ng platformName;
2eb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ec0: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
2ed0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
2ee0: 6f 72 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65  orms.TryGetValue
2ef0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f00: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
2f10: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20  orArchitecture, 
2f20: 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  out platformName
2f30: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
2f40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2f50: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c         return pl
2f60: 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20  atformName;..   
2f70: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2f80: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2f90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
2fa0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ll;..      }....
2fb0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3000: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3010: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3020: 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64  Attempts to load
3030: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
3040: 74 65 20 6c 69 62 72 61 72 79 20 62 61 73 65 64  te library based
3050: 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 65   on the specifie
3060: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72  d..      /// dir
3070: 65 63 74 6f 72 79 20 61 6e 64 20 70 72 6f 63 65  ectory and proce
3080: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
3090: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
30a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
30b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
30c0: 22 64 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20  "directory">..  
30d0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65      /// The base
30e0: 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 75 73   directory to us
30f0: 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61  e, null for defa
3100: 75 6c 74 20 28 74 68 65 20 62 61 73 65 20 64 69  ult (the base di
3110: 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20 20  rectory of..    
3120: 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72 65 6e    /// the curren
3130: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  t application do
3140: 6d 61 69 6e 29 2e 20 20 54 68 69 73 20 64 69 72  main).  This dir
3150: 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 63 6f  ectory should co
3160: 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
3170: 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61   /// processor a
3180: 72 63 68 69 74 65 63 74 75 72 65 20 73 70 65 63  rchitecture spec
3190: 69 66 69 63 20 73 75 62 2d 64 69 72 65 63 74 6f  ific sub-directo
31a0: 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ries...      ///
31b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
31c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
31d0: 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  ="processorArchi
31e0: 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20  tecture">..     
31f0: 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74   /// The request
3200: 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  ed processor arc
3210: 68 69 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c 20  hitecture, null 
3220: 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68 65  for default (the
3230: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63  ..      /// proc
3240: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
3250: 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  re of the curren
3260: 74 20 70 72 6f 63 65 73 73 29 2e 20 20 54 68 69  t process).  Thi
3270: 73 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64 0d  s caller should.
3280: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f 73  .      /// almos
3290: 74 20 61 6c 77 61 79 73 20 73 70 65 63 69 66 79  t always specify
32a0: 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73 20 70   null for this p
32b0: 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20  arameter...     
32c0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
32d0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
32e0: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
32f0: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
3300: 68 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72 6e  handle as return
3310: 65 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61 72  ed by LoadLibrar
3320: 79 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  y -OR- IntPtr.Ze
3330: 72 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66  ro..      /// if
3340: 20 74 68 65 20 6c 6f 61 64 69 6e 67 20 66 61 69   the loading fai
3350: 6c 73 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f  ls for any reaso
3360: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
3370: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3380: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
3390: 6e 74 50 74 72 20 50 72 65 4c 6f 61 64 53 51 4c  ntPtr PreLoadSQL
33a0: 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20  iteDll(..       
33b0: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
33c0: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
33d0: 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72  string processor
33e0: 41 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20  Architecture..  
33f0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
3400: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
3410: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
3420: 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63  OTE: If the spec
3430: 69 66 69 65 64 20 62 61 73 65 20 64 69 72 65 63  ified base direc
3440: 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73  tory is null, us
3450: 65 20 74 68 65 20 64 65 66 61 75 6c 74 2e 0d 0a  e the default...
3460: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3470: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65          if (dire
3480: 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ctory == null)..
3490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
34a0: 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73  rectory = GetBas
34b0: 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  eDirectory();...
34c0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
34d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
34e0: 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
34f0: 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73 65  o query the base
3500: 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70   directory, stop
3510: 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
3520: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
3530: 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20  f (directory == 
3540: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
3550: 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
3560: 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
3570: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
3580: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
3590: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
35a0: 65 20 6c 69 62 72 61 72 79 20 65 78 69 73 74 73  e library exists
35b0: 20 69 6e 20 74 68 65 20 62 61 73 65 20 64 69 72   in the base dir
35c0: 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  ectory..        
35d0: 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c    //       itsel
35e0: 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20  f, stop now...  
35f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3600: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
3610: 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
3620: 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f  FileName(Path.Co
3630: 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c  mbine(directory,
3640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3650: 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d  SQLITE_DLL));...
3660: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46  .          if (F
3670: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
3680: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
3690: 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
36a0: 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
36b0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
36c0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
36d0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70 72  the specified pr
36e0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
36f0: 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75 73  ture is null, us
3700: 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  e the..         
3710: 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75 6c   //       defaul
3720: 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  t...          //
3730: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
3740: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
3750: 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
3760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
3770: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
3780: 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73 73  ure = GetProcess
3790: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
37a0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
37b0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
37c0: 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c  NOTE: If we fail
37d0: 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65 20  ed to query the 
37e0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
37f0: 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f 77  ecture, stop now
3800: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
3810: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
3820: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
3830: 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ture == null).. 
3840: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
3850: 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
3860: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
3870: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
3880: 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66  OTE: Build the f
3890: 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c  ull path and fil
38a0: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e  e name for the n
38b0: 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20  ative SQLite..  
38c0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
38d0: 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20 74   library using t
38e0: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
38f0: 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d  hitecture name..
3900: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
3910: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
3920: 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65  e = FixUpDllFile
3930: 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e  Name(Path.Combin
3940: 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64  e(Path.Combine(d
3950: 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20  irectory,..     
3960: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
3970: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 2c  orArchitecture),
3980: 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a   SQLITE_DLL));..
3990: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
39a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
39b0: 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20 6e  E: If the file n
39c0: 61 6d 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ame based on the
39d0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
39e0: 74 65 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20  tecture name..  
39f0: 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f          // is no
3a00: 74 20 66 6f 75 6e 64 2c 20 74 72 79 20 75 73 69  t found, try usi
3a10: 6e 67 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  ng the associate
3a20: 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e  d platform name.
3a30: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
3a40: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46            if (!F
3a50: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
3a60: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
3a70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3a80: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3a90: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74      // NOTE: Att
3aa0: 65 6d 70 74 20 74 6f 20 74 72 61 6e 73 6c 61 74  empt to translat
3ab0: 65 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  e the processor 
3ac0: 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20  architecture to 
3ad0: 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  a..             
3ae0: 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 74 66 6f   //       platfo
3af0: 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
3b00: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3b10: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
3b20: 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20   platformName = 
3b30: 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28  GetPlatformName(
3b40: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
3b50: 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  cture);....     
3b60: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
3b70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
3b80: 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64  TE: If we failed
3b90: 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68   to translate th
3ba0: 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c  e platform name,
3bb0: 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20   stop now...    
3bc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3bd0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3be0: 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20  platformName == 
3bf0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
3c00: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3c10: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
3c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3c40: 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
3c50: 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
3c60: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
3c70: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
3c80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3c90: 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79  //       library
3ca0: 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 74 66   using the platf
3cb0: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
3cc0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
3cd0: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
3ce0: 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69  ame = FixUpDllFi
3cf0: 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62  leName(Path.Comb
3d00: 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65  ine(Path.Combine
3d10: 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20  (directory,..   
3d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
3d30: 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 53 51  latformName), SQ
3d40: 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20  LITE_DLL));.... 
3d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
3d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3d70: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66  / NOTE: If the f
3d80: 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69  ile does not exi
3d90: 73 74 2c 20 73 6b 69 70 20 74 72 79 69 6e 67 20  st, skip trying 
3da0: 74 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a 20 20 20  to load it...   
3db0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
3dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3dd0: 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69  (!File.Exists(fi
3de0: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
3df0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3e00: 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
3e10: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
3e20: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
3e30: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3e40: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3e50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
3e60: 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c  OTE: Show exactl
3e70: 79 20 77 68 65 72 65 20 77 65 20 61 72 65 20 74  y where we are t
3e80: 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68  rying to load th
3e90: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
3ea0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
3eb0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
3ec0: 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20  from...         
3ed0: 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 4e 45       //..#if !NE
3ee0: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
3ef0: 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
3f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
3f10: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
3f20: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
3f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
3f40: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
3f50: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 54                "T
3f70: 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61  rying to load na
3f80: 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
3f90: 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c  ary \"{0}\"...",
3fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3fb0: 20 20 20 20 66 69 6c 65 4e 61 6d 65 29 29 3b 0d      fileName));.
3fc0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
3fd0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
3fe0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
3ff0: 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 6c  TE: Attempt to l
4000: 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c  oad the native l
4010: 69 62 72 61 72 79 2e 20 20 54 68 69 73 20 77 69  ibrary.  This wi
4020: 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20  ll either..     
4030: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
4040: 20 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69 64    return a valid
4050: 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
4060: 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e  andle, return In
4070: 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20  tPtr.Zero,..    
4080: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
4090: 20 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20 65     or throw an e
40a0: 78 63 65 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  xception...     
40b0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
40c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
40d0: 6e 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69  n LoadLibrary(fi
40e0: 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  leName);..      
40f0: 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
4100: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
4110: 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20  ACE_PRELOAD..   
4120: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
4130: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
4140: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
4150: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
4160: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
4170: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
4180: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
4190: 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
41a0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
41b0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
41c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41d0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
41e0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
41f0: 46 69 72 73 74 2c 20 67 72 61 62 20 74 68 65 20  First, grab the 
4200: 6c 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72  last Win32 error
4210: 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   number...      
4220: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
4230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4240: 20 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20    int lastError 
4250: 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73  = Marshal.GetLas
4260: 74 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 0d 0a  tWin32Error();..
4270: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4280: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
4290: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
42a0: 45 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77 65  E: Show where we
42b0: 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20   failed to load 
42c0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
42d0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
42e0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
42f0: 62 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e 67  brary from along
4300: 20 77 69 74 68 20 74 68 65 20 57 69 6e 33 32 20   with the Win32 
4310: 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d 0a  error code and..
4320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4330: 20 20 2f 2f 20 20 20 20 20 20 20 65 78 63 65 70    //       excep
4340: 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  tion information
4350: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4360: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
4370: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
4380: 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
4390: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
43a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43b0: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
43c0: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
43d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43e0: 20 20 20 20 22 46 61 69 6c 65 64 20 74 6f 20 6c      "Failed to l
43f0: 6f 61 64 20 6e 61 74 69 76 65 20 53 51 4c 69 74  oad native SQLit
4400: 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c  e library \"{0}\
4410: 22 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  " " +..         
4420: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 28 67               "(g
4430: 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b 31  etLastError = {1
4440: 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20  }): {2}",..     
4450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4460: 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74 45   fileName, lastE
4470: 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74 68  rror, e)); /* th
4480: 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
4490: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
44a0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
44b0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
44c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44d0: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
44e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
44f0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
4500: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4510: 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
4520: 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 7d 0d  .Zero;..      }.
4530: 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d  .#endif..#endif.
4540: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
4550: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
4560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
45b0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
45c0: 45 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20  EWORK..    //.. 
45d0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74     // NOTE: On t
45e0: 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  he .NET Compact 
45f0: 46 72 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e  Framework, the n
4600: 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20 61 73  ative interop as
4610: 73 65 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20  sembly must..   
4620: 20 2f 2f 20 20 20 20 20 20 20 62 65 20 75 73 65   //       be use
4630: 64 20 62 65 63 61 75 73 65 20 69 74 20 70 72 6f  d because it pro
4640: 76 69 64 65 73 20 73 65 76 65 72 61 6c 20 77 6f  vides several wo
4650: 72 6b 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45  rkarounds to .NE
4660: 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f  T Compact..    /
4670: 2f 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72  /       Framewor
4680: 6b 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d  k limitations im
4690: 70 6f 72 74 61 6e 74 20 66 6f 72 20 70 72 6f 70  portant for prop
46a0: 65 72 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20  er operation of 
46b0: 74 68 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f  the core..    //
46c0: 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61         System.Da
46d0: 74 61 2e 53 51 4c 69 74 65 20 66 75 6e 63 74 69  ta.SQLite functi
46e0: 6f 6e 61 6c 69 74 79 20 28 65 2e 67 2e 20 62 65  onality (e.g. be
46f0: 69 6e 67 20 61 62 6c 65 20 74 6f 20 62 69 6e 64  ing able to bind
4700: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70  ..    //       p
4710: 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 68 61  arameters and ha
4720: 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75  ndle column valu
4730: 65 73 20 6f 66 20 74 79 70 65 73 20 49 6e 74 36  es of types Int6
4740: 34 20 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a  4 and Double)...
4750: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
4760: 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
4770: 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
4780: 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 30  SQLite.Interop.0
4790: 38 33 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20  83.dll";..#elif 
47a0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
47b0: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
47c0: 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
47d0: 20 69 66 20 74 68 65 20 73 74 61 6e 64 61 72 64   if the standard
47e0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
47f0: 69 73 20 65 6e 61 62 6c 65 64 2c 20 75 73 65 20  is enabled, use 
4800: 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  it...    //..   
4810: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
4820: 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c  tring SQLITE_DLL
4830: 20 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23   = "sqlite3";..#
4840: 65 6c 69 66 20 55 53 45 5f 49 4e 54 45 52 4f 50  elif USE_INTEROP
4850: 5f 44 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  _DLL..    //..  
4860: 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72    // NOTE: Other
4870: 77 69 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74  wise, if the nat
4880: 69 76 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72  ive SQLite inter
4890: 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65  op assembly is e
48a0: 6e 61 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20  nabled,..    // 
48b0: 20 20 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20        use it... 
48c0: 20 20 20 2f 2f 0d 0a 20 20 20 20 70 72 69 76 61     //..    priva
48d0: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
48e0: 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51  SQLITE_DLL = "SQ
48f0: 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c  Lite.Interop.dll
4900: 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f  ";..#else..    /
4910: 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
4920: 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20  Finally, assume 
4930: 74 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d  that the mixed-m
4940: 6f 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20  ode assembly is 
4950: 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20  being used...   
4960: 20 2f 2f 0d 0a 20 20 20 20 70 72 69 76 61 74 65   //..    private
4970: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
4980: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74  LITE_DLL = "Syst
4990: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
49a0: 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ll";..#endif....
49b0: 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74      // This sect
49c0: 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70  ion uses interop
49d0: 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f   calls that also
49e0: 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67   fetch text leng
49f0: 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63  th to optimize c
4a00: 6f 6e 76 65 72 73 69 6f 6e 2e 20 20 0d 0a 20 20  onversion.  ..  
4a10: 20 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20    // When using 
4a20: 74 68 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c  the standard dll
4a30: 2c 20 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65  , we can replace
4a40: 20 74 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74   these calls wit
4a50: 68 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20  h normal sqlite 
4a60: 63 61 6c 6c 73 20 61 6e 64 20 0d 0a 20 20 20 20  calls and ..    
4a70: 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65  // do unoptimize
4a80: 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e  d conversions in
4a90: 73 74 65 61 64 20 61 66 74 65 72 77 61 72 64 73  stead afterwards
4aa0: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
4ab0: 74 65 72 6f 70 20 61 64 64 65 64 20 74 65 78 74  terop added text
4ac0: 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a  length calls....
4ad0: 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
4ae0: 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
4af0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
4b00: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
4b10: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4b20: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
4b30: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61  ind_parameter_na
4b40: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
4b50: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
4b60: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
4b70: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
4b80: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
4b90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
4ba0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
4bb0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
4bc0: 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f  n_database_name_
4bd0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
4be0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
4bf0: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
4c00: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
4c10: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
4c20: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4c30: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
4c40: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
4c50: 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69  atabase_name16_i
4c60: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
4c70: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
4c80: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
4c90: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
4ca0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
4cb0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
4cc0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
4cd0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
4ce0: 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70 28 49  cltype_interop(I
4cf0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
4d00: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
4d10: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
4d20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
4d30: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
4d40: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4d50: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
4d60: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36  olumn_decltype16
4d70: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
4d80: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
4d90: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
4da0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
4db0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
4dc0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4dd0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
4de0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
4df0: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
4e00: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
4e10: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
4e20: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
4e30: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
4e40: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
4e50: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
4e60: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
4e70: 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  umn_name16_inter
4e80: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
4e90: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
4ea0: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
4eb0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
4ec0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
4ed0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
4ee0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
4ef0: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
4f00: 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
4f10: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
4f20: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
4f30: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
4f40: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
4f50: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
4f60: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
4f70: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
4f80: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
4f90: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
4fa0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
4fb0: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
4fc0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
4fd0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
4fe0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
4ff0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
5000: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
5010: 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74  n_table_name_int
5020: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
5030: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
5040: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
5050: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5060: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
5070: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5080: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
5090: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
50a0: 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
50b0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
50c0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
50d0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
50e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
50f0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
5100: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5110: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
5120: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74  _column_text_int
5130: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
5140: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
5150: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
5160: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5170: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
5180: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5190: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
51a0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
51b0: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
51c0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
51d0: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
51e0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
51f0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5200: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
5210: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
5220: 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  tr sqlite3_errms
5230: 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  g_interop(IntPtr
5240: 20 64 62 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e   db, out int len
5250: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
5260: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5270: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
5280: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
5290: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
52a0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e  lite3_prepare_in
52b0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
52c0: 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e   IntPtr pSql, in
52d0: 74 20 6e 42 79 74 65 73 2c 20 6f 75 74 20 49 6e  t nBytes, out In
52e0: 74 50 74 72 20 73 74 6d 74 2c 20 6f 75 74 20 49  tPtr stmt, out I
52f0: 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 2c  ntPtr ptrRemain,
5300: 20 6f 75 74 20 69 6e 74 20 6e 52 65 6d 61 69 6e   out int nRemain
5310: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
5320: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5330: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
5340: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
5350: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
5360: 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75  lite3_table_colu
5370: 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74 65  mn_metadata_inte
5380: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rop(IntPtr db, b
5390: 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
53a0: 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
53b0: 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f 75  te[] colName, ou
53c0: 74 20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61  t IntPtr ptrData
53d0: 54 79 70 65 2c 20 6f 75 74 20 49 6e 74 50 74 72  Type, out IntPtr
53e0: 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75 74   ptrCollSeq, out
53f0: 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f 75   int notNull, ou
5400: 74 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79  t int primaryKey
5410: 2c 20 6f 75 74 20 69 6e 74 20 61 75 74 6f 49 6e  , out int autoIn
5420: 63 2c 20 6f 75 74 20 69 6e 74 20 64 74 4c 65 6e  c, out int dtLen
5430: 2c 20 6f 75 74 20 69 6e 74 20 63 73 4c 65 6e 29  , out int csLen)
5440: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
5450: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5460: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5470: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5480: 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
5490: 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  e_text_interop(I
54a0: 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74  ntPtr p, out int
54b0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
54c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
54d0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
54e0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
54f0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
5500: 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e  _value_text16_in
5510: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
5520: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
5530: 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47  .#if INTEROP_LOG
5540: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5550: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
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 53 51 4c 69 74 65  ic extern SQLite
5580: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
5590: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74  3_config_log_int
55a0: 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  erop();..#endif.
55b0: 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
55c0: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
55d0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
55e0: 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66  ..    // These f
55f0: 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69  unctions add exi
5600: 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c  sting functional
5610: 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51  ity on top of SQ
5620: 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72 65  Lite and require
5630: 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74   a little effort
5640: 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20   to..    // get 
5650: 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69  working when usi
5660: 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  ng the standard 
5670: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
5680: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74  .    #region int
5690: 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74  erop added funct
56a0: 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20  ionality....#if 
56b0: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
56c0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
56d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
56e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
56f0: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
5700: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
5710: 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f  te3_close_intero
5720: 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  p(IntPtr db);...
5730: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
5740: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
5750: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5760: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
5770: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
5780: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
5790: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
57a0: 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  db, byte[] strNa
57b0: 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69  me, int nArgs, i
57c0: 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72  nt nType, IntPtr
57d0: 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43   pvUser, SQLiteC
57e0: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51  allback func, SQ
57f0: 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74  LiteCallback fst
5800: 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43  ep, SQLiteFinalC
5810: 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20  allback ffinal, 
5820: 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29  int needCollSeq)
5830: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
5840: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5850: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5860: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
5870: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
5880: 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e  ite3_finalize_in
5890: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
58a0: 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  t);....    [DllI
58b0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
58c0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
58d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
58e0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
58f0: 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69  qlite3_backup_fi
5900: 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nish_interop(Int
5910: 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
5920: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5930: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5940: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5950: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
5960: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
5970: 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74  open_interop(byt
5980: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
5990: 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  , SQLiteOpenFlag
59a0: 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75 74  sEnum flags, out
59b0: 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
59c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
59d0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
59e0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
59f0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
5a00: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
5a10: 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62  open16_interop(b
5a20: 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
5a30: 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  me, SQLiteOpenFl
5a40: 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 6f  agsEnum flags, o
5a50: 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  ut IntPtr db);..
5a60: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5a70: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
5a80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5a90: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
5aa0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
5ab0: 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28  3_reset_interop(
5ac0: 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
5ad0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
5ae0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
5af0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5b00: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
5b10: 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74  ite3_changes_int
5b20: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b  erop(IntPtr db);
5b30: 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
5b40: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
5b50: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
5b60: 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74  ...    // The st
5b70: 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20  andard api call 
5b80: 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74  equivalents of t
5b90: 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70  he above interop
5ba0: 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67   calls..    #reg
5bb0: 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72  ion standard ver
5bc0: 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70  sions of interop
5bd0: 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69   functions....#i
5be0: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
5bf0: 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  D....#if !PLATFO
5c00: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
5c10: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
5c20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
5c30: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
5c40: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
5c50: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
5c60: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
5c70: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5c80: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
5c90: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5ca0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
5cb0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c  rCode sqlite3_cl
5cc0: 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ose(IntPtr db);.
5cd0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
5ce0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
5cf0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
5d00: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
5d10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
5d20: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
5d30: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
5d40: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
5d50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5d60: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
5d70: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5d80: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
5d90: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
5da0: 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 29 3b  e_v2(IntPtr db);
5db0: 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a   /* 3.7.14+ */..
5dc0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
5dd0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
5de0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5df0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
5e00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
5e10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5e20: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
5e30: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
5e40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
5e50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
5e60: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5e70: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
5e80: 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
5e90: 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74  e_function(IntPt
5ea0: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
5eb0: 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c  Name, int nArgs,
5ec0: 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50   int nType, IntP
5ed0: 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74  tr pvUser, SQLit
5ee0: 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  eCallback func, 
5ef0: 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66  SQLiteCallback f
5f00: 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61  step, SQLiteFina
5f10: 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c  lCallback ffinal
5f20: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
5f30: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5f40: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
5f50: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
5f60: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5f70: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
5f80: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
5f90: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
5fa0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5fb0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
5fc0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5fd0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
5fe0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66  orCode sqlite3_f
5ff0: 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20 73  inalize(IntPtr s
6000: 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
6010: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
6020: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
6030: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6040: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
6050: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
6060: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
6070: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
6080: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6090: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
60a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
60b0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
60c0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
60d0: 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20 73  3_reset(IntPtr s
60e0: 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
60f0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
6100: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
6110: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6120: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
6130: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
6140: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
6150: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
6160: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6170: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
6180: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6190: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
61a0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
61b0: 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74  rameter_name(Int
61c0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
61d0: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
61e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
61f0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
6200: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6210: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
6220: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
6230: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
6240: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
6250: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6260: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
6270: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6280: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6290: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
62a0: 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e  database_name(In
62b0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
62c0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
62d0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
62e0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
62f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6300: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6310: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6320: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6330: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6340: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6350: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
6360: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6370: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
6380: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
6390: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36  _database_name16
63a0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
63b0: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
63c0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
63d0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
63e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
63f0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6400: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6410: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6420: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6430: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6440: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
6450: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
6460: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
6470: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
6480: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74  umn_decltype(Int
6490: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
64a0: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
64b0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
64c0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
64d0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
64e0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
64f0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
6500: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
6510: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
6520: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6530: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
6540: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6550: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6560: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
6570: 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74  decltype16(IntPt
6580: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
6590: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
65a0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
65b0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
65c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
65d0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
65e0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
65f0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
6600: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
6610: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6620: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
6630: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6640: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
6650: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
6660: 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
6670: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
6680: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
6690: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
66a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
66b0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
66c0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
66d0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
66e0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
66f0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6700: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
6710: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
6720: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6730: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
6740: 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74  olumn_name16(Int
6750: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6760: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
6770: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
6780: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
6790: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
67a0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
67b0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
67c0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
67d0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
67e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
67f0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
6800: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6810: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6820: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
6830: 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50  origin_name(IntP
6840: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
6850: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
6860: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6870: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
6880: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6890: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
68a0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
68b0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
68c0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
68d0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
68e0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
68f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6900: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
6910: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
6920: 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74  rigin_name16(Int
6930: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6940: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
6950: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
6960: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
6970: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6980: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
6990: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
69a0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
69b0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
69c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
69d0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
69e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
69f0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6a00: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
6a10: 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74  table_name(IntPt
6a20: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
6a30: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
6a40: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
6a50: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
6a60: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6a70: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
6a80: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
6a90: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
6aa0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
6ab0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6ac0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
6ad0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6ae0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
6af0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
6b00: 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  ble_name16(IntPt
6b10: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
6b20: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
6b30: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
6b40: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
6b50: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6b60: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
6b70: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
6b80: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
6b90: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
6ba0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6bb0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
6bc0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6bd0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
6be0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
6bf0: 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  xt(IntPtr stmt, 
6c00: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
6c10: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
6c20: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
6c30: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6c40: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
6c50: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
6c60: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
6c70: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
6c80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6c90: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
6ca0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
6cb0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6cc0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
6cd0: 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74  olumn_text16(Int
6ce0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6cf0: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
6d00: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
6d10: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
6d20: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6d30: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
6d40: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
6d50: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
6d60: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
6d70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6d80: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
6d90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6da0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6db0: 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28   sqlite3_errmsg(
6dc0: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
6dd0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
6de0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
6df0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6e00: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
6e10: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
6e20: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
6e30: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
6e40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6e50: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
6e60: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
6e70: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6e80: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
6e90: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
6ea0: 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
6eb0: 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
6ec0: 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73  es, out IntPtr s
6ed0: 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  tmt, out IntPtr 
6ee0: 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23  ptrRemain);....#
6ef0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
6f00: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
6f10: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6f20: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
6f30: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
6f40: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
6f50: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
6f60: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6f70: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
6f80: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
6f90: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6fa0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
6fb0: 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f  sqlite3_table_co
6fc0: 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e  lumn_metadata(In
6fd0: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
6fe0: 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
6ff0: 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
7000: 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50  olName, out IntP
7010: 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
7020: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f  out IntPtr ptrCo
7030: 6c 6c 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e  llSeq, out int n
7040: 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20  otNull, out int 
7050: 70 72 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20  primaryKey, out 
7060: 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d  int autoInc);...
7070: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7080: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7090: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
70a0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
70b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
70c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
70d0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
70e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
70f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
7100: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
7110: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7120: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
7130: 5f 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74 50  _value_text(IntP
7140: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
7150: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7160: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7170: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7180: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7190: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
71a0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
71b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
71c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
71d0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
71e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
71f0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
7200: 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
7210: 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 70 29  text16(IntPtr p)
7220: 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20  ;....#endif..// 
7230: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
7240: 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
7250: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  n....    // Thes
7260: 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  e functions are 
7270: 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20  custom and have 
7280: 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74  no equivalent st
7290: 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d  andard library m
72a0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41  ethod...    // A
72b0: 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22  ll of them are "
72c0: 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20 61  nice to haves" a
72d0: 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69  nd not necessari
72e0: 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65  ly "need to have
72f0: 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  s"...    #region
7300: 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
7310: 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a  tandard method..
7320: 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54  ..#if !SQLITE_ST
7330: 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44  ANDARD....    [D
7340: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7350: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
7360: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7370: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
7380: 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71  _context_collseq
7390: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
73a0: 63 6f 6e 74 65 78 74 2c 20 6f 75 74 20 69 6e 74  context, out int
73b0: 20 74 79 70 65 2c 20 6f 75 74 20 69 6e 74 20 65   type, out int e
73c0: 6e 63 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  nc, out int len)
73d0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
73e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
73f0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7400: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
7410: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
7420: 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74  _collcompare_int
7430: 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74  erop(IntPtr cont
7440: 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20  ext, byte[] p1, 
7450: 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b  int p1len, byte[
7460: 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29  ] p2, int p2len)
7470: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
7480: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7490: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
74a0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
74b0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
74c0: 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69  ite3_cursor_rowi
74d0: 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  d_interop(IntPtr
74e0: 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f   stmt, int curso
74f0: 72 2c 20 6f 75 74 20 6c 6f 6e 67 20 72 6f 77 69  r, out long rowi
7500: 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  d);....    [DllI
7510: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7520: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
7530: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
7540: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
7550: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c  qlite3_index_col
7560: 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70  umn_info_interop
7570: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
7580: 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65  [] catalog, byte
7590: 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79  [] IndexName, by
75a0: 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c  te[] ColumnName,
75b0: 20 6f 75 74 20 69 6e 74 20 73 6f 72 74 4f 72 64   out int sortOrd
75c0: 65 72 2c 20 6f 75 74 20 69 6e 74 20 6f 6e 45 72  er, out int onEr
75d0: 72 6f 72 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ror, out IntPtr 
75e0: 43 6f 6c 6c 61 74 69 6f 6e 2c 20 6f 75 74 20 69  Collation, out i
75f0: 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a  nt colllen);....
7600: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7610: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
7620: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7630: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
7640: 69 74 65 33 5f 72 65 73 65 74 61 6c 6c 5f 69 6e  ite3_resetall_in
7650: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
7660: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
7670: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7680: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7690: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
76a0: 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
76b0: 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e  ursor_interop(In
76c0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64  tPtr stmt, int d
76d0: 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74  b, int tableRoot
76e0: 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66  Page);....#endif
76f0: 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
7700: 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
7710: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
7720: 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49 20 63  / Standard API c
7730: 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f  alls global acro
7740: 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68  ss versions.  Th
7750: 65 72 65 20 61 72 65 20 61 20 66 65 77 20 69 6e  ere are a few in
7760: 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72  stances of inter
7770: 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f  op calls..    //
7780: 20 73 63 61 74 74 65 72 65 64 20 69 6e 20 68 65   scattered in he
7790: 72 65 2c 20 62 75 74 20 74 68 65 79 20 61 72 65  re, but they are
77a0: 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65   only active whe
77b0: 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  n PLATFORM_COMPA
77c0: 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64  CTFRAMEWORK is d
77d0: 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72  eclared...    #r
77e0: 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73  egion standard s
77f0: 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d  qlite api calls.
7800: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7810: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7820: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7830: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
7840: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
7850: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7860: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
7870: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7880: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
7890: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
78a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
78b0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
78c0: 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65  e sqlite3_enable
78d0: 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
78e0: 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
78f0: 20 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29   db, int enable)
7900: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
7910: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7920: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
7930: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
7940: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7950: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
7960: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
7970: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
7980: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
7990: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    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 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
79c0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f  rCode sqlite3_lo
79d0: 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20  ad_extension(.. 
79e0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
79f0: 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d  , byte[] fileNam
7a00: 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61  e, byte[] procNa
7a10: 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  me, ref IntPtr p
7a20: 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  Error);....#if !
7a30: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7a40: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
7a50: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7a60: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
7a70: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
7a80: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
7a90: 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
7aa0: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
7ab0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
7ac0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7ad0: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
7ae0: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
7af0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
7b00: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7b10: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
7b20: 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f  e sqlite3_win32_
7b30: 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28 75 69  set_directory(ui
7b40: 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e 67 20  nt type, string 
7b50: 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
7b60: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7b70: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
7b80: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7b90: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
7ba0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
7bb0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
7bc0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
7bd0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7be0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
7bf0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
7c00: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
7c10: 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  tr sqlite3_libve
7c20: 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20  rsion();....#if 
7c30: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7c40: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7c50: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7c60: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7c70: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7c80: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7c90: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7ca0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7cb0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7cc0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7cd0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
7ce0: 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73   sqlite3_libvers
7cf0: 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d  ion_number();...
7d00: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7d10: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7d20: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7d30: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
7d40: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
7d50: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7d60: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
7d70: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7d80: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
7d90: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
7da0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7db0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
7dc0: 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a  _sourceid();....
7dd0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7de0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7df0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7e00: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7e10: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7e20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7e30: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
7e40: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7e50: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
7e60: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
7e70: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
7e80: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
7e90: 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a  malloc(int n);..
7ea0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7eb0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7ec0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7ed0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7ee0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7ef0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7f00: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7f10: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7f20: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7f30: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7f40: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7f50: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
7f60: 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72  3_realloc(IntPtr
7f70: 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23   p, int n);....#
7f80: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7f90: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7fa0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7fb0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7fc0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7fd0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7fe0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7ff0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8000: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
8010: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
8020: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8030: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65  void sqlite3_fre
8040: 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  e(IntPtr p);....
8050: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
8060: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8070: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8080: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
8090: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
80a0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
80b0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
80c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
80d0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
80e0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
80f0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8100: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
8110: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
8120: 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65  (byte[] utf8File
8130: 6e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72  name, out IntPtr
8140: 20 64 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46   db, SQLiteOpenF
8150: 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
8160: 49 6e 74 50 74 72 20 76 66 73 29 3b 0d 0a 0d 0a  IntPtr vfs);....
8170: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
8180: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8190: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
81a0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
81b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
81c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
81d0: 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
81e0: 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
81f0: 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
8200: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8210: 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
8220: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
8230: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
8240: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8250: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
8260: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f  orCode sqlite3_o
8270: 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66 69 6c  pen16(string fil
8280: 65 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74  eName, out IntPt
8290: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
82a0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
82b0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
82c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
82d0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
82e0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
82f0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
8300: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
8310: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8320: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
8330: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8340: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
8350: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70  sqlite3_interrup
8360: 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  t(IntPtr db);...
8370: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
8380: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8390: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
83a0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
83b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
83c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
83d0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
83e0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
83f0: 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
8400: 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  e3_last_insert_r
8410: 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62 29 3b  owid(IntPtr db);
8420: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
8430: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8440: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
8450: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8460: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61   void sqlite3_la
8470: 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f  st_insert_rowid_
8480: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
8490: 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49  b, ref long rowI
84a0: 64 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  d);..#endif....#
84b0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
84c0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
84d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
84e0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
84f0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8500: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
8510: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
8520: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8530: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
8540: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
8550: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8560: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e  int sqlite3_chan
8570: 67 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ges(IntPtr db);.
8580: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
8590: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
85a0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
85b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
85c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
85d0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
85e0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
85f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8600: 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
8610: 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64  ite3_memory_used
8620: 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ();..#else..    
8630: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8640: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
8650: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8660: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
8670: 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74  _memory_used_int
8680: 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62 79  erop(ref long by
8690: 74 65 73 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  tes);..#endif...
86a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
86b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
86c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
86d0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
86e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
86f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8700: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
8710: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8720: 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
8730: 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61  e3_memory_highwa
8740: 74 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61  ter(int resetFla
8750: 67 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  g);..#else..    
8760: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8770: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
8780: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8790: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
87a0: 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65  _memory_highwate
87b0: 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72 65  r_interop(int re
87c0: 73 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e  setFlag, ref lon
87d0: 67 20 62 79 74 65 73 29 3b 0d 0a 23 65 6e 64 69  g bytes);..#endi
87e0: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
87f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8800: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8810: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8820: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8830: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8840: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
8850: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
8860: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
8870: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
8880: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8890: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
88a0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68  rCode sqlite3_sh
88b0: 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66  utdown();....#if
88c0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
88d0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
88e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
88f0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
8900: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
8910: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
8920: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
8930: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8940: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
8950: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
8960: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
8970: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
8980: 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
8990: 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  ut(IntPtr db, in
89a0: 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  t ms);....#if !P
89b0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
89c0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
89d0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
89e0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
89f0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
8a00: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
8a10: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
8a20: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8a30: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
8a40: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8a50: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
8a60: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
8a70: 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74  e3_bind_blob(Int
8a80: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
8a90: 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75  dex, Byte[] valu
8aa0: 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e  e, int nSize, In
8ab0: 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29  tPtr nTransient)
8ac0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
8ad0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8ae0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8af0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8b00: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8b10: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8b20: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
8b30: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8b40: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
8b50: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
8b60: 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e  3_bind_double(In
8b70: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
8b80: 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c  ndex, double val
8b90: 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ue);..#else..   
8ba0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8bb0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8bc0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8bd0: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
8be0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
8bf0: 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  d_double_interop
8c00: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
8c10: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75  t index, ref dou
8c20: 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ble value);..#en
8c30: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
8c40: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
8c50: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
8c60: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8c70: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
8c80: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
8c90: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
8ca0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
8cb0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8cc0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
8cd0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8ce0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
8cf0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
8d00: 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72 20  bind_int(IntPtr 
8d10: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
8d20: 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a   int value);....
8d30: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
8d40: 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79  OTE: This really
8d50: 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c   just calls "sql
8d60: 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b 20  ite3_bind_int"; 
8d70: 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20  however, it has 
8d80: 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
8d90: 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73    correct type s
8da0: 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20  ignature for an 
8db0: 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62 69 74  unsigned (32-bit
8dc0: 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20  ) integer...    
8dd0: 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  //..#if !PLATFOR
8de0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8df0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
8e00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
8e10: 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
8e20: 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c 20  ite3_bind_int", 
8e30: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8e40: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8e50: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
8e60: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
8e70: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8e80: 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
8e90: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
8ea0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
8eb0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8ec0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
8ed0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
8ee0: 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74 72 20  ind_uint(IntPtr 
8ef0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
8f00: 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d   uint value);...
8f10: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
8f20: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8f30: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8f40: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
8f50: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
8f60: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8f70: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
8f80: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8f90: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
8fa0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
8fb0: 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20  nd_int64(IntPtr 
8fc0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
8fd0: 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23   long value);..#
8fe0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
8ff0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9000: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
9010: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
9020: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
9030: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
9040: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
9050: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
9060: 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29   ref long value)
9070: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
9080: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
9090: 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75  : This really ju
90a0: 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65  st calls "sqlite
90b0: 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68  3_bind_int64"; h
90c0: 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74  owever, it has t
90d0: 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  he..    //      
90e0: 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69   correct type si
90f0: 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75  gnature for an u
9100: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34  nsigned long (64
9110: 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a  -bit) integer...
9120: 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41      //..#if !PLA
9130: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9140: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9150: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9160: 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
9170: 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
9180: 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  t64", CallingCon
9190: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
91a0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
91b0: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
91c0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
91d0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
91e0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
91f0: 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t64(IntPtr stmt,
9200: 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e   int index, ulon
9210: 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65  g value);..#else
9220: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9230: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
9240: 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
9250: 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e  e3_bind_int64_in
9260: 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e  terop")]..    in
9270: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9280: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
9290: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
92a0: 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  d_uint64_interop
92b0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
92c0: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f  t index, ref ulo
92d0: 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ng value);..#end
92e0: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
92f0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9300: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9310: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9320: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9330: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9340: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9350: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9360: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9370: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
9380: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9390: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
93a0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
93b0: 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20  ind_null(IntPtr 
93c0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
93d0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
93e0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
93f0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9400: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9410: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9420: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9430: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9440: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9450: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9460: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9470: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9480: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
9490: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
94a0: 6e 64 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73  nd_text(IntPtr s
94b0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
94c0: 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  byte[] value, in
94d0: 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70  t nlen, IntPtr p
94e0: 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
94f0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9500: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9510: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9520: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9530: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
9540: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
9550: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
9560: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9570: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
9580: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
9590: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
95a0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
95b0: 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74  _parameter_count
95c0: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
95d0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
95e0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
95f0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9600: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9610: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9620: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9630: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
9640: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9650: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
9660: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
9670: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9680: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
9690: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e  ind_parameter_in
96a0: 64 65 78 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  dex(IntPtr stmt,
96b0: 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29   byte[] strName)
96c0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
96d0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
96e0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
96f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9700: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9710: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9720: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9730: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9740: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9750: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9760: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9770: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
9780: 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49  3_column_count(I
9790: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
97a0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
97b0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
97c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
97d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
97e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
97f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9800: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
9810: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9820: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
9830: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
9840: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
9850: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
9860: 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49 6e   sqlite3_step(In
9870: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
9880: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9890: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
98a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
98b0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
98c0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
98d0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
98e0: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
98f0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9900: 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74  ern double sqlit
9910: 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65  e3_column_double
9920: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9930: 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6c 73 65  t index);..#else
9940: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9950: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
9960: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9970: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
9980: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
9990: 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
99a0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
99b0: 64 65 78 2c 20 6f 75 74 20 64 6f 75 62 6c 65 20  dex, out double 
99c0: 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
99d0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
99e0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
99f0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9a00: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9a10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9a20: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9a30: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
9a40: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9a50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9a60: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
9a70: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9a80: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
9a90: 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74  column_int(IntPt
9aa0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
9ab0: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
9ac0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9ad0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9ae0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9af0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9b00: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9b10: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
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 6c 6f 6e 67  atic extern long
9b40: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
9b50: 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d  int64(IntPtr stm
9b60: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
9b70: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9b80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9b90: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
9ba0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
9bb0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  oid sqlite3_colu
9bc0: 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  mn_int64_interop
9bd0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9be0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 6c 6f 6e  t index, out lon
9bf0: 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
9c00: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
9c10: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9c20: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9c30: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9c40: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9c50: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9c60: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9c70: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9c80: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9c90: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9ca0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9cb0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
9cc0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62  ite3_column_blob
9cd0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9ce0: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
9cf0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9d00: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9d10: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9d20: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9d30: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9d40: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9d50: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9d60: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9d70: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9d80: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9d90: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
9da0: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
9db0: 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 73 74  _bytes(IntPtr st
9dc0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
9dd0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
9de0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9df0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9e00: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9e10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9e20: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9e30: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
9e40: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9e50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9e60: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
9e70: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9e80: 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79  ern TypeAffinity
9e90: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
9ea0: 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74  type(IntPtr stmt
9eb0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
9ec0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
9ed0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
9ee0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9ef0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
9f00: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
9f10: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9f20: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
9f30: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9f40: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
9f50: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
9f60: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9f70: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
9f80: 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
9f90: 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74  _collation(IntPt
9fa0: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
9fb0: 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c  Name, int nType,
9fc0: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20   IntPtr pvUser, 
9fd0: 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20  SQLiteCollation 
9fe0: 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  func);....#if !P
9ff0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
a000: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
a010: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a020: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
a030: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
a040: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
a050: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
a060: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a070: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
a080: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a090: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
a0a0: 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
a0b0: 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f  _count(IntPtr co
a0c0: 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
a0d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a0e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a0f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a100: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
a110: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
a120: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
a130: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
a140: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a150: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
a160: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a170: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
a180: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
a190: 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b  _blob(IntPtr p);
a1a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
a1b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a1c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
a1d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
a1e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a1f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
a200: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
a210: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
a220: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
a230: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
a240: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
a250: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
a260: 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e 74  _value_bytes(Int
a270: 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
a280: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a290: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a2a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a2b0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
a2c0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
a2d0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
a2e0: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
a2f0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
a300: 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76  double sqlite3_v
a310: 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50  alue_double(IntP
a320: 74 72 20 70 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  tr p);..#else.. 
a330: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a340: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
a350: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
a360: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
a370: 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
a380: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
a390: 70 2c 20 6f 75 74 20 64 6f 75 62 6c 65 20 76 61  p, out double va
a3a0: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
a3b0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
a3c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
a3d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a3e0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
a3f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
a400: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a410: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
a420: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a430: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
a440: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
a450: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
a460: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
a470: 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70  lue_int(IntPtr p
a480: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
a490: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a4a0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a4b0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a4c0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a4d0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a4e0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a4f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a500: 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
a510: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
a520: 74 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t64(IntPtr p);..
a530: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
a540: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a550: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
a560: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
a570: 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  oid sqlite3_valu
a580: 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  e_int64_interop(
a590: 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 49 6e  IntPtr p, out In
a5a0: 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  t64 value);..#en
a5b0: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
a5c0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a5d0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a5e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a5f0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a600: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a610: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a620: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a630: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a640: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
a650: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a660: 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69   extern TypeAffi
a670: 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c  nity sqlite3_val
a680: 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70  ue_type(IntPtr p
a690: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
a6a0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a6b0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a6c0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a6d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a6e0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a6f0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a700: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
a710: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a720: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
a730: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
a740: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
a750: 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28  te3_result_blob(
a760: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
a770: 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e  byte[] value, in
a780: 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20  t nSize, IntPtr 
a790: 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
a7a0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
a7b0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
a7c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a7d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
a7e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
a7f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a800: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
a810: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
a820: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
a830: 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28  3_result_double(
a840: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
a850: 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
a860: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
a870: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a880: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
a890: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
a8a0: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
a8b0: 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  lt_double_intero
a8c0: 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  p(IntPtr context
a8d0: 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
a8e0: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
a8f0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
a900: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
a910: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a920: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
a930: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
a940: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a950: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
a960: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a970: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
a980: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
a990: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
a9a0: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
a9b0: 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e 74 50 74  sult_error(IntPt
a9c0: 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
a9d0: 5d 20 73 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c  ] strErr, int nL
a9e0: 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
a9f0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
aa00: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
aa10: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
aa20: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
aa30: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
aa40: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
aa50: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
aa60: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
aa70: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
aa80: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
aa90: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
aaa0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
aab0: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
aac0: 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a   int value);....
aad0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
aae0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
aaf0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ab00: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
ab10: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
ab20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ab30: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
ab40: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ab50: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
ab60: 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 49  3_result_int64(I
ab70: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 6c  ntPtr context, l
ab80: 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c  ong value);..#el
ab90: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
aba0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
abb0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
abc0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
abd0: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
abe0: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e  int64_interop(In
abf0: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
ac00: 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  f Int64 value);.
ac10: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
ac20: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ac30: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
ac40: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ac50: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
ac60: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
ac70: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
ac80: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
ac90: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
aca0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
acb0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
acc0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
acd0: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
ace0: 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74  null(IntPtr cont
acf0: 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
ad00: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ad10: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
ad20: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ad30: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
ad40: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
ad50: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ad60: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ad70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ad80: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
ad90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ada0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
adb0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65  qlite3_result_te
adc0: 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  xt(IntPtr contex
add0: 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  t, byte[] value,
ade0: 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
adf0: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
ae00: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
ae10: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
ae20: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ae30: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
ae40: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
ae50: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ae60: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
ae70: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
ae80: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
ae90: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
aea0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
aeb0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
aec0: 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74  3_aggregate_cont
aed0: 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ext(IntPtr conte
aee0: 78 74 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b  xt, int nBytes);
aef0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
af00: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
af10: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
af20: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
af30: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
af40: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
af50: 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
af60: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
af70: 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
af80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
af90: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
afa0: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
afb0: 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
afc0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
afd0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
afe0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
aff0: 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49  e3_bind_text16(I
b000: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
b010: 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61  index, string va
b020: 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49  lue, int nlen, I
b030: 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
b040: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
b050: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
b060: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
b070: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
b080: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b090: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
b0a0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
b0b0: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
b0c0: 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
b0d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b0e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
b0f0: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
b100: 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
b110: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
b120: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
b130: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
b140: 5f 65 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20  _error16(IntPtr 
b150: 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20  context, string 
b160: 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65  strName, int nLe
b170: 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
b180: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
b190: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
b1a0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b1b0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
b1c0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
b1d0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
b1e0: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
b1f0: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
b200: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
b210: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
b220: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
b230: 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
b240: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b250: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
b260: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b270: 74 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  t_text16(IntPtr 
b280: 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20  context, string 
b290: 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65  strName, int nLe
b2a0: 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
b2b0: 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e  rved);....#if IN
b2c0: 54 45 52 4f 50 5f 43 4f 44 45 43 0d 0a 23 69 66  TEROP_CODEC..#if
b2d0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
b2e0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b2f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b300: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
b310: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
b320: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
b330: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
b340: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b350: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
b360: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b370: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
b380: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
b390: 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72  lite3_key(IntPtr
b3a0: 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c   db, byte[] key,
b3b0: 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d   int keylen);...
b3c0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b3d0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b3e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b3f0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b400: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b410: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b420: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b430: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b440: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b450: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b460: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b470: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
b480: 65 20 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28  e sqlite3_rekey(
b490: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
b4a0: 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65  ] key, int keyle
b4b0: 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  n);..#endif....#
b4c0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b4d0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b4e0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b4f0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
b500: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
b510: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
b520: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
b530: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b540: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
b550: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
b560: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b570: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75  IntPtr sqlite3_u
b580: 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74  pdate_hook(IntPt
b590: 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61  r db, SQLiteUpda
b5a0: 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
b5b0: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
b5c0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
b5d0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
b5e0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
b5f0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
b600: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b610: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
b620: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
b630: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
b640: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
b650: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
b660: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
b670: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
b680: 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28  te3_commit_hook(
b690: 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
b6a0: 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20  eCommitCallback 
b6b0: 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
b6c0: 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
b6d0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b6e0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
b6f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b700: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
b710: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
b720: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
b730: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
b740: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b750: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
b760: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b770: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
b780: 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49   sqlite3_trace(I
b790: 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
b7a0: 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75  TraceCallback fu
b7b0: 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
b7c0: 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69  r);....    // Si
b7d0: 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  nce sqlite3_conf
b7e0: 69 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  ig() takes a var
b7f0: 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
b800: 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
b810: 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
b820: 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
b830: 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
b840: 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61 6e  alls that we wan
b850: 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21  t to use...#if !
b860: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b870: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b880: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b890: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
b8a0: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
b8b0: 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
b8c0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b8d0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b8e0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b8f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b900: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
b910: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
b920: 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
b930: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b940: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
b950: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
b960: 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51  3_config_none(SQ
b970: 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
b980: 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  m op);....#if !P
b990: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b9a0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b9b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b9c0: 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
b9d0: 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
b9e0: 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
b9f0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
ba00: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ba10: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ba20: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ba30: 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
ba40: 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
ba50: 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
ba60: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ba70: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
ba80: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
ba90: 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69  _config_int(SQLi
baa0: 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
bab0: 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  op, int value);.
bac0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
bad0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
bae0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
baf0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
bb00: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
bb10: 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
bb20: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
bb30: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bb40: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
bb50: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
bb60: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
bb70: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
bb80: 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
bb90: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
bba0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
bbb0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
bbc0: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
bbd0: 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66 69  _log(SQLiteConfi
bbe0: 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c  gOpsEnum op, SQL
bbf0: 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66  iteLogCallback f
bc00: 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
bc10: 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
bc20: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
bc30: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
bc40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
bc50: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
bc60: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
bc70: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
bc80: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
bc90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bca0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
bcb0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
bcc0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
bcd0: 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b  sqlite3_rollback
bce0: 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
bcf0: 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43   SQLiteRollbackC
bd00: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
bd10: 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
bd20: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
bd30: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
bd40: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
bd50: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
bd60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
bd70: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
bd80: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
bd90: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bda0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
bdb0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
bdc0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
bdd0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
bde0: 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74  _db_handle(IntPt
bdf0: 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
be00: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
be10: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
be20: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
be30: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
be40: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
be50: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
be60: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
be70: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
be80: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
be90: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
bea0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
beb0: 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74  Ptr sqlite3_next
bec0: 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c  _stmt(IntPtr db,
bed0: 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a   IntPtr stmt);..
bee0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
bef0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
bf00: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bf10: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
bf20: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
bf30: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bf40: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
bf50: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
bf60: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
bf70: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
bf80: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
bf90: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
bfa0: 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  de sqlite3_exec(
bfb0: 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
bfc0: 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72  ] strSql, IntPtr
bfd0: 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74   pvCallback, Int
bfe0: 50 74 72 20 70 76 50 61 72 61 6d 2c 20 6f 75 74  Ptr pvParam, out
bff0: 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b   IntPtr errMsg);
c000: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c010: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c020: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c030: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c040: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c050: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c060: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c070: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c080: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c090: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c0a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c0b0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
c0c0: 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28  _get_autocommit(
c0d0: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
c0e0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
c0f0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
c100: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c110: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
c120: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
c130: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
c140: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
c150: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c160: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
c170: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
c180: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
c190: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
c1a0: 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
c1b0: 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e  _result_codes(In
c1c0: 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f  tPtr db, int ono
c1d0: 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ff);....#if !PLA
c1e0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c1f0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
c200: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c210: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
c220: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
c230: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
c240: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
c250: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c260: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
c270: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c280: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
c290: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
c2a0: 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
c2b0: 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
c2c0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c2d0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
c2e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c2f0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
c300: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
c310: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
c320: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
c330: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c340: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
c350: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c360: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
c370: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
c380: 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64  _extended_errcod
c390: 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
c3a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c3b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c3c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c3d0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c3e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c3f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c400: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c410: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c420: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c430: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c440: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c450: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
c460: 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45 72  _errstr(SQLiteEr
c470: 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20  rorCode rc); /* 
c480: 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20  3.7.15+ */....  
c490: 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
c4a0: 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61  e3_log() takes a
c4b0: 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65   variable argume
c4c0: 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65  nt list, we have
c4d0: 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63   to overload dec
c4e0: 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f  larations..    /
c4f0: 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62  / for all possib
c500: 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e  le calls.  For n
c510: 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20  ow, we are only 
c520: 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c  exposing a singl
c530: 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 20 0d 0a  e string, and ..
c540: 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e      // depend on
c550: 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66   the caller to f
c560: 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67  ormat the string
c570: 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c580: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c590: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c5a0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c5b0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c5c0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c5d0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c5e0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c5f0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c600: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c610: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c620: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
c630: 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72  _log(SQLiteError
c640: 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62  Code iErrCode, b
c650: 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d  yte[] zFormat);.
c660: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c670: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c680: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c690: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c6a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c6b0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c6c0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c6d0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c6e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c6f0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c700: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c710: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
c720: 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  ode sqlite3_file
c730: 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20  _control(IntPtr 
c740: 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61  db, byte[] zDbNa
c750: 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50  me, int op, IntP
c760: 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66  tr pArg);....#if
c770: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
c780: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
c790: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c7a0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
c7b0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
c7c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
c7d0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
c7e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c7f0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
c800: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
c810: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
c820: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63  tPtr sqlite3_bac
c830: 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20  kup_init(IntPtr 
c840: 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a  destDb, byte[] z
c850: 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72  DestName, IntPtr
c860: 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b   sourceDb, byte[
c870: 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d  ] zSourceName);.
c880: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c890: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c8a0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c8b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c8c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c8d0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c8e0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c8f0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c900: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c910: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c920: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c930: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
c940: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
c950: 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62  up_step(IntPtr b
c960: 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65  ackup, int nPage
c970: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
c980: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
c990: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
c9a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
c9b0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c9c0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
c9d0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
c9e0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
c9f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ca00: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
ca10: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
ca20: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
ca30: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
ca40: 61 63 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74  ackup_finish(Int
ca50: 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
ca60: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ca70: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ca80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ca90: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
caa0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
cab0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
cac0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
cad0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
cae0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
caf0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
cb00: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
cb10: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63   int sqlite3_bac
cb20: 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49 6e  kup_remaining(In
cb30: 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
cb40: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
cb50: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
cb60: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
cb70: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
cb80: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
cb90: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cba0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
cbb0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cbc0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
cbd0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
cbe0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
cbf0: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61  n int sqlite3_ba
cc00: 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28 49  ckup_pagecount(I
cc10: 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
cc20: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
cc30: 20 20 7d 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46    }....#if PLATF
cc40: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
cc50: 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  WORK..  internal
cc60: 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20   abstract class 
cc70: 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a  CriticalHandle :
cc80: 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20   IDisposable..  
cc90: 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62  {..    private b
cca0: 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a  ool _isClosed;..
ccb0: 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e      protected In
ccc0: 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 20 20  tPtr handle;..  
ccd0: 20 20 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65    ..    protecte
cce0: 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  d CriticalHandle
ccf0: 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48  (IntPtr invalidH
cd00: 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20  andleValue)..   
cd10: 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65   {..      handle
cd20: 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65   = invalidHandle
cd30: 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69  Value;..      _i
cd40: 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b  sClosed = false;
cd50: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e  ..    }....    ~
cd60: 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29  CriticalHandle()
cd70: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44  ..    {..      D
cd80: 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a  ispose(false);..
cd90: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
cda0: 76 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75  vate void Cleanu
cdb0: 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  p()..    {..    
cdc0: 20 20 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29    if (!IsClosed)
cdd0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
cde0: 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65     this._isClose
cdf0: 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
ce00: 20 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69     if (!IsInvali
ce10: 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  d)..        {.. 
ce20: 20 20 20 20 20 20 20 20 20 52 65 6c 65 61 73 65           Release
ce30: 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20  Handle();..     
ce40: 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
ce50: 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
ce60: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
ce70: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
ce80: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c    public void Cl
ce90: 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ose()..    {..  
cea0: 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
ceb0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
cec0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73   public void Dis
ced0: 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  pose()..    {.. 
cee0: 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
cef0: 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  e);..    }....  
cf00: 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
cf10: 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65  ual void Dispose
cf20: 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29  (bool disposing)
cf30: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43  ..    {..      C
cf40: 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d  leanup();..    }
cf50: 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65  ....    protecte
cf60: 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  d abstract bool 
cf70: 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b  ReleaseHandle();
cf80: 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65  ....    protecte
cf90: 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65  d void SetHandle
cfa0: 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a  (IntPtr value)..
cfb0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e      {..      han
cfc0: 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20  dle = value;..  
cfd0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
cfe0: 63 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65  c void SetHandle
cff0: 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20  AsInvalid()..   
d000: 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f   {..      _isClo
d010: 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
d020: 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
d030: 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20  nalize(this);.. 
d040: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
d050: 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64  ic bool IsClosed
d060: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
d070: 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43  et { return _isC
d080: 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d  losed; }..    }.
d090: 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62  ...    public ab
d0a0: 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e  stract bool IsIn
d0b0: 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20  valid..    {..  
d0c0: 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d      get;..    }.
d0d0: 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66  ...  }....#endif
d0e0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
d0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d130: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
d140: 6f 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  on SQLiteConnect
d150: 69 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  ionHandle Class.
d160: 0a 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20  .    // Handles 
d170: 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61  the unmanaged da
d180: 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20  tabase pointer, 
d190: 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e  and provides fin
d1a0: 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f  alization..    /
d1b0: 2f 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74  / support for it
d1c0: 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
d1d0: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
d1e0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
d1f0: 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
d200: 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
d210: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
d220: 20 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f   && !PLATFORM_CO
d230: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
d240: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
d250: 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 43   delegate void C
d260: 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61  loseConnectionCa
d270: 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
d280: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
d290: 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c  ctionHandle hdl,
d2a0: 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
d2b0: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
d2c0: 20 73 74 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e   static CloseCon
d2d0: 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20  nectionCallback 
d2e0: 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20  closeConnection 
d2f0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  =..            S
d300: 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43  QLiteBase.CloseC
d310: 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64  onnection;..#end
d320: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
d330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d370: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
d380: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
d390: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
d3a0: 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c  internal readonl
d3b0: 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  y object syncRoo
d3c0: 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
d3d0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
d3e0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
d3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
d430: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
d440: 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
d450: 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
d460: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
d470: 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20 20  andle db)..     
d480: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d490: 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c    if (db != null
d4a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d4b0: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
d4c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d4d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d4e0: 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f   lock (db.syncRo
d4f0: 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
d500: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d520: 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68 61      return db.ha
d530: 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
d540: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
d550: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
d560: 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
d570: 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
d580: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
d590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
d5e0: 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
d5f0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
d600: 65 28 49 6e 74 50 74 72 20 64 62 29 0d 0a 20 20  e(IntPtr db)..  
d610: 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
d620: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
d630: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
d640: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
d650: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
d660: 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
d670: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
d680: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d690: 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b    SetHandle(db);
d6a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
d6b0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
d6c0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
d6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
d710: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
d720: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d730: 6e 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  nHandle()..     
d740: 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
d750: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
d760: 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
d770: 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
d780: 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
d790: 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Increment(..   
d7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
d7b0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
d7c0: 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  hods.connectionC
d7d0: 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
d7e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
d7f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
d800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
d840: 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
d850: 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  d override bool 
d860: 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d  ReleaseHandle().
d870: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
d880: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
d890: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
d8a0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
d8b0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
d8c0: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
d8d0: 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d  tr localHandle =
d8e0: 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63   Interlocked.Exc
d8f0: 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20  hange(..        
d900: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
d910: 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a  handle, IntPtr.Z
d920: 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c  ero);....#if SQL
d930: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
d940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
d950: 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
d960: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
d970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d980: 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69     closeConnecti
d990: 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61  on(this, localHa
d9a0: 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ndle);..#else.. 
d9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
d9c0: 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
d9d0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9f0: 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
da00: 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
da10: 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  his, localHandle
da20: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
da30: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
da40: 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
da50: 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
da60: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
da70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
da80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
da90: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
daa0: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
dab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dac0: 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e         "CloseCon
dad0: 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c  nection: {0}", l
dae0: 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 0d 0a 20  ocalHandle));.. 
daf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
db00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db10: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
db20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
db30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
db40: 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
db50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
db60: 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
db70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
db80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db90: 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
dba0: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
dbb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dbc0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
dbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbe0: 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
dbf0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73  eConnection(this
dc00: 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
dc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc20: 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
dc30: 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
dc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
dc60: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
dc70: 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
dc80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dc90: 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
dca0: 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
dcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
dcc0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
dcd0: 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  hods.connectionC
dce0: 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
dcf0: 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
dd00: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
dd10: 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
dd20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
dd30: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
dd40: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
dd50: 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
dd60: 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
dd70: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
dd80: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
dd90: 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
dda0: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
ddb0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
ddc0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
ddd0: 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
dde0: 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
ddf0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
de00: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de20: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
de30: 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
de40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de50: 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f          "CloseCo
de60: 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65  nnection: {0}, e
de70: 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
de80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
de90: 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
dea0: 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20   e));..         
deb0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
dec0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
ded0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dee0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
def0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
df00: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
df10: 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
df20: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
df30: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
df40: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
df50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df60: 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
df70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
df80: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
df90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfa0: 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61   SetHandleAsInva
dfb0: 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  lid();..        
dfc0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
dfd0: 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45         }..#if DE
dfe0: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
dff0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
e000: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
e010: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
e020: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
e030: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
e040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e080: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55  /////....#if COU
e090: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
e0a0: 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61     public int Wa
e0b0: 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20  sReleasedOk().. 
e0c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e0d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
e0e0: 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
e0f0: 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
e100: 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e       ref UnsafeN
e110: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e  ativeMethods.con
e120: 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
e130: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
e140: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
e150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e190: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
e1a0: 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
e1b0: 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
e1c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e1d0: 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
e1e0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
e1f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
e200: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
e210: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
e220: 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
e230: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
e240: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e250: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e260: 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
e270: 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
e280: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
e290: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
e2a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e2b0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
e2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
e300: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
e310: 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
e320: 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
e330: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
e340: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
e350: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
e360: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
e370: 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
e380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
e390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e3a0: 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
e3b0: 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
e3c0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e3d0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
e3e0: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
e3f0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
e400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e440: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
e450: 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 61 74  egion SQLiteStat
e460: 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73  ementHandle Clas
e470: 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
e480: 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
e490: 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
e4a0: 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73 74 61  naged SQLite sta
e4b0: 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e  tements...    in
e4c0: 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
e4d0: 61 73 73 20 53 51 4c 69 74 65 53 74 61 74 65 6d  ass SQLiteStatem
e4e0: 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  entHandle : Crit
e4f0: 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20  icalHandle..    
e500: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
e510: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e520: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
e530: 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
e540: 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
e550: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
e560: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
e570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
e5c0: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
e5d0: 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
e5e0: 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   cnn;....       
e5f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
e600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e630: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
e640: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
e650: 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
e660: 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
e670: 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
e680: 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20   stmt)..        
e690: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
e6a0: 66 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29  f (stmt != null)
e6b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
e6c0: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
e6d0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
e6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6f0: 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52  lock (stmt.syncR
e700: 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
e710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
e720: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e730: 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 6d 74       return stmt
e740: 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
e750: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
e760: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e770: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
e780: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
e790: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e7a0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
e7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
e7f0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
e800: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
e810: 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
e820: 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
e830: 49 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a 20 20  IntPtr stmt)..  
e840: 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
e850: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
e860: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
e870: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e880: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
e890: 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
e8a0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
e8b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e8c0: 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
e8d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e8e0: 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73 74 6d     SetHandle(stm
e8f0: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
e900: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
e910: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
e920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e960: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
e970: 61 74 65 20 53 51 4c 69 74 65 53 74 61 74 65 6d  ate SQLiteStatem
e980: 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  entHandle()..   
e990: 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28           : base(
e9a0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
e9b0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55        {..#if COU
e9c0: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
e9d0: 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
e9e0: 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Increment(.. 
e9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
ea00: 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
ea10: 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74  ethods.statement
ea20: 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
ea30: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
ea40: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ea50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
ea90: 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
eaa0: 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
eab0: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
eac0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
ead0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
eae0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
eaf0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
eb00: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
eb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
eb20: 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
eb30: 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
eb40: 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
eb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
eb60: 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
eb70: 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
eb80: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
eb90: 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
eba0: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
ebb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
ebc0: 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69  QLiteBase.Finali
ebd0: 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c  zeStatement(cnn,
ebe0: 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
ebf0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
ec00: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
ec10: 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
ec20: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
ec30: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ec40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec50: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
ec60: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
ec70: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
ec80: 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61             "Fina
ec90: 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b  lizeStatement: {
eca0: 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
ecb0: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
ecc0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
ecd0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
ece0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
ecf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ed00: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c    }..#endif..#el
ed10: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
ed20: 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
ed30: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
ed40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ed50: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
ed60: 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  handle != IntPtr
ed70: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
ed80: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eda0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
edb0: 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d  e.FinalizeStatem
edc0: 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29  ent(cnn, handle)
edd0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ede0: 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
edf0: 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
ee00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
ee10: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
ee20: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
ee30: 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
ee40: 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
ee50: 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
ee60: 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a  ked.Decrement(..
ee70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee80: 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
ee90: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74  tiveMethods.stat
eea0: 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65  ementCount);..#e
eeb0: 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d  ndif..#if DEBUG.
eec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eed0: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
eee0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
eef0: 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
ef00: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
ef10: 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
ef20: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
ef30: 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29  LiteException e)
ef40: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
ef50: 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
ef60: 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65  teException)..#e
ef70: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
ef80: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
ef90: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
efa0: 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
efb0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
efc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
efd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
efe0: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
eff0: 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72  eLine(String.For
f000: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
f010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
f020: 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
f030: 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
f040: 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
f050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f060: 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a 20   handle, e));.. 
f070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
f080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f090: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
f0a0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f0b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
f0c0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
f0d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
f0e0: 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
f0f0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
f100: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f110: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
f120: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
f130: 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
f140: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f150: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f160: 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
f170: 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
f180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f190: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
f1a0: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
f1b0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
f1c0: 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
f1d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
f1e0: 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
f1f0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
f200: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
f210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
f250: 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
f260: 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
f270: 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
f280: 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
f290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
f2a0: 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
f2b0: 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
f2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
f2d0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
f2e0: 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f  hods.statementCo
f2f0: 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
f300: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
f310: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
f320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
f360: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
f370: 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
f380: 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
f390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
f3a0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
f3b0: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
f3c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
f3d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f3e0: 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
f3f0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
f400: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f420: 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
f430: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
f440: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f450: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
f460: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
f470: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
f480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4c0: 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
f4d0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
f4e0: 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
f4f0: 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
f500: 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
f510: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f520: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
f530: 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
f540: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
f550: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f560: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
f570: 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
f580: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
f590: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
f5a0: 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
f5b0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
f5c0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
f610: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
f620: 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20  iteBackupHandle 
f630: 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72  Class..    // Pr
f640: 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
f650: 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ion support for 
f660: 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65  unmanaged SQLite
f670: 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e   backup objects.
f680: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
f690: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
f6a0: 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a  teBackupHandle :
f6b0: 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
f6c0: 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
f6d0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f6e0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
f6f0: 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
f700: 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
f710: 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
f720: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
f730: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
f740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
f780: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
f790: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
f7a0: 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
f7b0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
f7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
f800: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
f810: 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
f820: 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
f830: 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
f840: 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20  le backup)..    
f850: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f860: 20 20 20 69 66 20 28 62 61 63 6b 75 70 20 21 3d     if (backup !=
f870: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f880: 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
f890: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f8a0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
f8b0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b        lock (back
f8c0: 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  up.syncRoot)..#e
f8d0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
f8e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
f900: 75 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c  urn backup.handl
f910: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
f920: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
f930: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
f940: 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
f950: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
f960: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
f970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ///....        i
f9c0: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42 61  nternal SQLiteBa
f9d0: 63 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c 69 74  ckupHandle(SQLit
f9e0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
f9f0: 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61  e cnn, IntPtr ba
fa00: 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20 20  ckup)..         
fa10: 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
fa20: 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
fa30: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
fa40: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
fa50: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
fa60: 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
fa70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
fa80: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
fa90: 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20  cnn = cnn;..    
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
fab0: 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a  andle(backup);..
fac0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
fad0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
fae0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
faf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
fb30: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
fb40: 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
fb50: 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
fb60: 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
fb70: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
fb80: 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
fb90: 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
fba0: 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
fbb0: 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
fbc0: 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66         ref Unsaf
fbd0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 62  eNativeMethods.b
fbe0: 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65  ackupCount);..#e
fbf0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
fc00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
fc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc50: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
fc60: 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
fc70: 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
fc80: 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
fc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
fca0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
fcb0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
fcc0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
fcd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fce0: 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
fcf0: 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
fd00: 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
fd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd20: 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
fd30: 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
fd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
fd50: 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
fd60: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
fd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd80: 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
fd90: 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c  inishBackup(cnn,
fda0: 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
fdb0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
fdc0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
fdd0: 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
fde0: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
fdf0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
fe00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe10: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
fe20: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
fe30: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
fe40: 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69             "Fini
fe50: 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20  shBackup: {0}", 
fe60: 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 0d 0a  localHandle));..
fe70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe80: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
fe90: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
fea0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
feb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
fec0: 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
fed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
fee0: 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
fef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ff10: 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
ff20: 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
ff30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ff40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ff50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff60: 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
ff70: 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68  ishBackup(cnn, h
ff80: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
ff90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ffa0: 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
ffb0: 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
ffc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
ffd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ffe0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20   }..#endif..#if 
fff0: 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
10000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
10010 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
10020 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
10030 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e            ref Un
10040 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
10050 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d  s.backupCount);.
10060 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
10070 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
10080 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
10090 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
100a0 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
100b0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
100c0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
100d0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
100e0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
100f0 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
10100 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
10110 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
10120 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
10130 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
10140 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
10150 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
10160 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
10170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10180 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10190 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
101a0 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
101b0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
101c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101d0 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20   "FinishBackup: 
101e0 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20  {0}, exception: 
101f0 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
10200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
10210 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a 20 20 20  andle, e));..   
10220 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10240 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
10250 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10260 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
10270 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
10280 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
10290 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
102a0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
102b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
102c0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
102d0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
102e0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
102f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10300 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10310 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
10320 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
10330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
10340 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
10350 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
10360 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
10370 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
10380 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10390 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
103a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
103b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
103c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
10400 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
10410 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
10420 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
10430 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
10440 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
10450 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
10460 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
10470 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
10480 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
10490 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ds.backupCount);
104a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
104b0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
104c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10500 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
10510 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
10520 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
10530 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
10540 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
10550 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
10560 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
10570 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10580 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
10590 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
105a0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
105b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
105c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
105d0 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
105e0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
105f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
10600 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
10610 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10620 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
10670 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
10680 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
10690 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
106a0 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
106b0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
106c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
106d0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
106e0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
106f0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
10700 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10710 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
10720 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
10730 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
10740 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
10750 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
10760 65 67 69 6f 6e 0d 0a 7d 0d 0a                    egion..}..