System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 8f4bf3e6b15e6875f7dbca8969b15dc745c43438:


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 20 7c 7c 20 43  CTFRAMEWORK || C
02f0: 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75  OUNT_HANDLE..  u
0300: 73 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65  sing System.Thre
0310: 61 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ading;..#endif..
0320: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
0330: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
0340: 20 26 26 20 21 44 45 42 55 47 0d 0a 20 20 5b 53   && !DEBUG..  [S
0350: 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64  uppressUnmanaged
0360: 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23  CodeSecurity]..#
0370: 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61  endif..  interna
0380: 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55  l static class U
0390: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
03a0: 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23  ds..  {..      #
03b0: 72 65 67 69 6f 6e 20 43 72 69 74 69 63 61 6c 20  region Critical 
03c0: 48 61 6e 64 6c 65 20 43 6f 75 6e 74 73 20 28 44  Handle Counts (D
03d0: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 29  ebug Build Only)
03e0: 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
03f0: 4c 45 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  LE..      //..  
0400: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
0410: 73 65 20 63 6f 75 6e 74 73 20 72 65 70 72 65 73  se counts repres
0420: 65 6e 74 20 74 68 65 20 74 6f 74 61 6c 20 6e 75  ent the total nu
0430: 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64  mber of outstand
0440: 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ing..      //   
0450: 20 20 20 20 28 6e 6f 6e 2d 64 69 73 70 6f 73 65      (non-dispose
0460: 64 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  d) CriticalHandl
0470: 65 20 64 65 72 69 76 65 64 20 6f 62 6a 65 63 74  e derived object
0480: 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20   instances..    
0490: 20 20 2f 2f 20 20 20 20 20 20 20 63 72 65 61 74    //       creat
04a0: 65 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61  ed by this libra
04b0: 72 79 20 61 6e 64 20 61 72 65 20 70 72 69 6d 61  ry and are prima
04c0: 72 69 6c 79 20 66 6f 72 20 75 73 65 20 62 79 0d  rily for use by.
04d0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
04e0: 74 68 65 20 74 65 73 74 20 73 75 69 74 65 2e 20  the test suite. 
04f0: 20 54 68 65 73 65 20 63 6f 75 6e 74 73 20 61 72   These counts ar
0500: 65 20 69 6e 63 72 65 6d 65 6e 74 65 64 20 62 79  e incremented by
0510: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
0520: 20 20 20 20 20 61 73 73 6f 63 69 61 74 65 64 20       associated 
0530: 63 6f 6e 73 74 72 75 63 74 6f 72 73 20 61 6e 64  constructors and
0540: 20 61 72 65 20 64 65 63 72 65 6d 65 6e 74 65 64   are decremented
0550: 20 75 70 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20   upon the..     
0560: 20 2f 2f 20 20 20 20 20 20 20 73 75 63 63 65 73   //       succes
0570: 73 66 75 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 20  sful completion 
0580: 6f 66 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  of the associate
0590: 64 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 0d  d ReleaseHandle.
05a0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
05b0: 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20  methods...      
05c0: 2f 2f 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  //..      intern
05d0: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 63 6f  al static int co
05e0: 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a  nnectionCount;..
05f0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
0600: 74 61 74 69 63 20 69 6e 74 20 73 74 61 74 65 6d  tatic int statem
0610: 65 6e 74 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20  entCount;..     
0620: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
0630: 20 69 6e 74 20 62 61 63 6b 75 70 43 6f 75 6e 74   int backupCount
0640: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
0650: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
0660: 20 20 20 20 20 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 2f 2f  ////////////////
06a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
06b0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
06c0: 4f 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20  Optional Native 
06d0: 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50  SQLite Library P
06e0: 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d  re-Loading Code.
06f0: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
0700: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
0710: 61 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20  are looking for 
0720: 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c  the standard SQL
0730: 69 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65  ite DLL ("sqlite
0740: 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20  3.dll"),..      
0750: 2f 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74  //       the int
0760: 65 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74  erop DLL ("SQLit
0770: 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c  e.Interop.dll"),
0780: 20 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69   or we are runni
0790: 6e 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20  ng on the..     
07a0: 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43   //       .NET C
07b0: 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
07c0: 2c 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c  , we should incl
07d0: 75 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f  ude this code (o
07e0: 6e 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20  nly if the..    
07f0: 20 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75    //       featu
0800: 72 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20  re has actually 
0810: 62 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20  been enabled).  
0820: 54 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20  This code would 
0830: 62 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20  be totally..    
0840: 20 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e    //       redun
0850: 64 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64  dant if this mod
0860: 75 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e  ule has been bun
0870: 64 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69  dled into the mi
0880: 78 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20  xed-mode..      
0890: 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c  //       assembl
08a0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69  y...      //..#i
08b0: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
08c0: 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
08d0: 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
08e0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
08f0: 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  K....      //.. 
0900: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e       // NOTE: On
0910: 6c 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68  ly compile in th
0920: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
0930: 20 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69   pre-load code i
0940: 66 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20  f the feature.. 
0950: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
0960: 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66  s been enabled f
0970: 6f 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a  or this build...
0980: 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52        //..#if PR
0990: 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42  ELOAD_NATIVE_LIB
09a0: 52 41 52 59 0d 0a 23 69 66 20 21 50 4c 41 54 46  RARY..#if !PLATF
09b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
09c0: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  WORK..      /// 
09d0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
09e0: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
09f0: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
0a00: 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69   variable contai
0a10: 6e 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  ning the process
0a20: 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  or..      /// ar
0a30: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
0a40: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
0a50: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
0a60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0a70: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
0a80: 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50  eadonly string P
0a90: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
0aa0: 43 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20  CTURE =..       
0ab0: 20 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52     "PROCESSOR_AR
0ac0: 43 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 23 65  CHITECTURE";..#e
0ad0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
0b30: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0b40: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
0b50: 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
0b60: 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20   = ".dll";....  
0b70: 20 20 20 20 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 2f 2f 2f  ////////////////
0bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
0bc0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
0bd0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
0be0: 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f  is is the P/Invo
0bf0: 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77  ke method that w
0c00: 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20  raps the native 
0c10: 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72 61 72  Win32 LoadLibrar
0c20: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  y..      /// fun
0c30: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
0c40: 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69  MSDN documentati
0c50: 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61  on for full deta
0c60: 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a  ils on what it..
0c70: 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d        /// does..
0c80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
0c90: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
0ca0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69   <param name="fi
0cb0: 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  leName">..      
0cc0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
0cd0: 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c  the executable l
0ce0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
0cf0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
0d00: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
0d10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
0d20: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
0d30: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
0d40: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
0d50: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
0d60: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
0d70: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 5b 44 6c 6c  rns>..      [Dll
0d80: 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32  Import("kernel32
0d90: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61  ",..          Ca
0da0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
0db0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
0dc0: 69 6f 6e 2e 57 69 6e 61 70 69 2c 20 43 68 61 72  ion.Winapi, Char
0dd0: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75  Set = CharSet.Au
0de0: 74 6f 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  to,..#if !PLATFO
0df0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
0e00: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 42  ORK..          B
0e10: 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20  estFitMapping = 
0e20: 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e  false, ThrowOnUn
0e30: 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74  mappableChar = t
0e40: 72 75 65 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue,..#endif..  
0e50: 20 20 20 20 20 20 20 20 53 65 74 4c 61 73 74 45          SetLastE
0e60: 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20  rror = true)].. 
0e70: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
0e80: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
0e90: 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 73 74  r LoadLibrary(st
0ea0: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 29 3b 0d  ring fileName);.
0eb0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
0ec0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
0ed0: 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75  / This lock is u
0ee0: 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74  sed to protect t
0ef0: 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c 69 74  he static _SQLit
0f00: 65 4d 6f 64 75 6c 65 20 61 6e 64 0d 0a 20 20 20  eModule and..   
0f10: 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72     /// processor
0f20: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
0f30: 66 6f 72 6d 73 20 66 69 65 6c 64 73 2c 20 62 65  forms fields, be
0f40: 6c 6f 77 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  low...      /// 
0f50: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0f60: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0f70: 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
0f80: 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 20   staticSyncRoot 
0f90: 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
0fa0: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ff0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
1000: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
1010: 2f 2f 20 53 74 6f 72 65 73 20 74 68 65 20 6d 61  // Stores the ma
1020: 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20 70  ppings between p
1030: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
1040: 63 74 75 72 65 20 6e 61 6d 65 73 20 61 6e 64 20  cture names and 
1050: 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20 20  platform..      
1060: 2f 2f 2f 20 6e 61 6d 65 73 2e 0d 0a 20 20 20 20  /// names...    
1070: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1080: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
1090: 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72  static Dictionar
10a0: 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  y<string, string
10b0: 3e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  > processorArchi
10c0: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
10d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1120: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1130: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1140: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1150: 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f  module handle fo
1160: 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
1170: 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 74  ite library or t
1180: 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  he value..      
1190: 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e  /// IntPtr.Zero.
11a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
11b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
11c0: 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
11d0: 50 74 72 20 5f 53 51 4c 69 74 65 4d 6f 64 75 6c  Ptr _SQLiteModul
11e0: 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e = IntPtr.Zero;
11f0: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1240: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
1250: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1260: 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20 74 68 69  /// For now, thi
1270: 73 20 6d 65 74 68 6f 64 20 73 69 6d 70 6c 79 20  s method simply 
1280: 63 61 6c 6c 73 20 74 68 65 20 49 6e 69 74 69 61  calls the Initia
1290: 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  lize method...  
12a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12b0: 79 3e 0d 0a 20 20 20 20 20 20 73 74 61 74 69 63  y>..      static
12c0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
12d0: 68 6f 64 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d  hods()..      {.
12e0: 0a 20 20 20 20 20 20 20 20 20 20 49 6e 69 74 69  .          Initi
12f0: 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20 20 20 20  alize();..      
1300: 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1350: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1360: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1370: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
1380: 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 69 73   initialize this
1390: 20 63 6c 61 73 73 20 62 79 20 70 72 65 2d 6c 6f   class by pre-lo
13a0: 61 64 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65  ading the native
13b0: 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f   SQLite..      /
13c0: 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f 72 20 74  // library for t
13d0: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
13e0: 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
13f0: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
1400: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1410: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
1420: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
1430: 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 28 29  oid Initialize()
1440: 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21  ..      {..#if !
1450: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1460: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1470: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1480: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
1490: 68 65 20 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51  he "No_PreLoadSQ
14a0: 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  Lite" environmen
14b0: 74 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65  t variable is se
14c0: 74 2c 20 73 6b 69 70 0d 0a 20 20 20 20 20 20 20  t, skip..       
14d0: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6c 6c 20     //       all 
14e0: 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65  our special code
14f0: 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75   and simply retu
1500: 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  rn...          /
1510: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
1520: 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74  (Environment.Get
1530: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
1540: 62 6c 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53  ble("No_PreLoadS
1550: 51 4c 69 74 65 22 29 20 21 3d 20 6e 75 6c 6c 29  QLite") != null)
1560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1570: 72 65 74 75 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d  return;..#endif.
1580: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
1590: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
15a0: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
15b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
15c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
15d0: 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73   // TODO: Make s
15e0: 75 72 65 20 74 68 69 73 20 6c 69 73 74 20 69 73  ure this list is
15f0: 20 75 70 64 61 74 65 64 20 69 66 20 74 68 65 20   updated if the 
1600: 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20  supported..     
1610: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1620: 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68    processor arch
1630: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61  itecture names a
1640: 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20 6e  nd/or platform n
1650: 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ames..          
1660: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61      //       cha
1670: 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  nges...         
1680: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1690: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
16a0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
16b0: 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c  Platforms == nul
16c0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
16d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16e0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
16f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1700: 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68 65  NOTE: Create the
1710: 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73 6f   map of processo
1720: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e  r architecture n
1730: 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ames..          
1740: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1750: 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d   to platform nam
1760: 65 73 20 75 73 69 6e 67 20 61 20 63 61 73 65 2d  es using a case-
1770: 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72 69  insensitive stri
1780: 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
1790: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
17a0: 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20 20  omparer...      
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
17c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17d0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
17e0: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
17f0: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
1800: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 44 69            new Di
1810: 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
1820: 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20 20   string>(..     
1830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1840: 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61       StringCompa
1850: 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  rer.OrdinalIgnor
1860: 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eCase);....     
1870: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1890: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 75     // NOTE: Setu
18a0: 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70 6c  p the list of pl
18b0: 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73 73  atform names ass
18c0: 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20  ociated with..  
18d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e0: 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73 75 70  //       the sup
18f0: 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f 72  ported processor
1900: 20 61 72 63 68 69 74 65 63 74 75 72 65 73 2e 0d   architectures..
1910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1920: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1930: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
1940: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
1950: 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38 36  atforms.Add("x86
1960: 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20 20  ", "Win32");..  
1970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1980: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1990: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41  cturePlatforms.A
19a0: 64 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36 34  dd("AMD64", "x64
19b0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
19c0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
19d0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
19e0: 66 6f 72 6d 73 2e 41 64 64 28 22 49 41 36 34 22  forms.Add("IA64"
19f0: 2c 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a 20  , "Itanium");.. 
1a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a20: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1a30: 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61    // BUGBUG: Wha
1a40: 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70  t about other ap
1a50: 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e  plication domain
1a60: 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s?..            
1a70: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1a80: 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74 65 4d      if (_SQLiteM
1a90: 6f 64 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  odule == IntPtr.
1aa0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1ab0: 20 20 20 20 20 20 20 20 20 5f 53 51 4c 69 74 65           _SQLite
1ac0: 4d 6f 64 75 6c 65 20 3d 20 50 72 65 4c 6f 61 64  Module = PreLoad
1ad0: 53 51 4c 69 74 65 44 6c 6c 28 6e 75 6c 6c 2c 20  SQLiteDll(null, 
1ae0: 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  null);..        
1af0: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
1b00: 20 20 20 20 20 20 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 2f 2f  ////////////////
1b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1b50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
1b60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1b70: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
1b80: 72 6e 73 20 74 68 65 20 62 61 73 65 20 64 69 72  rns the base dir
1b90: 65 63 74 6f 72 79 20 6f 66 20 74 68 65 20 63 75  ectory of the cu
1ba0: 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
1bb0: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 6d  n..      /// dom
1bc0: 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ain...      /// 
1bd0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1be0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1bf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62  .      /// The b
1c00: 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f  ase directory fo
1c10: 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70  r the current ap
1c20: 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e  plication domain
1c30: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
1c40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e  ..      /// cann
1c50: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
1c60: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
1c70: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
1c80: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
1c90: 72 69 6e 67 20 47 65 74 42 61 73 65 44 69 72 65  ring GetBaseDire
1ca0: 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b  ctory()..      {
1cb0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1cc0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1cd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1ce0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1cf0: 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f  E: If the "PreLo
1d00: 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72  adSQLite_BaseDir
1d10: 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d  ectory" environm
1d20: 65 6e 74 20 76 61 72 69 61 62 6c 65 0d 0a 20 20  ent variable..  
1d30: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1d40: 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74 20   is set, use it 
1d50: 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65  verbatim for the
1d60: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e   base directory.
1d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1d80: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1d90: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 45 6e 76   directory = Env
1da0: 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69  ironment.GetEnvi
1db0: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28  ronmentVariable(
1dc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1dd0: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
1de0: 61 73 65 44 69 72 65 63 74 6f 72 79 22 29 3b 0d  aseDirectory");.
1df0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
1e00: 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75  (directory != nu
1e10: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1e20: 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74     return direct
1e30: 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ory;....        
1e40: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1e50: 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
1e60: 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20  se, fallback on 
1e70: 75 73 69 6e 67 20 74 68 65 20 62 61 73 65 20 64  using the base d
1e80: 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 0d  irectory of the.
1e90: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
1ea0: 20 20 20 20 63 75 72 72 65 6e 74 20 61 70 70 6c      current appl
1eb0: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d  ication domain..
1ec0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1ed0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1ee0: 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e  AppDomain.Curren
1ef0: 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65  tDomain.BaseDire
1f00: 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ctory;..#else.. 
1f10: 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
1f20: 79 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73  y assembly = Ass
1f30: 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69  embly.GetExecuti
1f40: 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d  ngAssembly();...
1f50: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61  .          if (a
1f60: 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
1f70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f80: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
1f90: 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
1fa0: 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e  lyName assemblyN
1fb0: 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47  ame = assembly.G
1fc0: 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20  etName();....   
1fd0: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
1fe0: 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  blyName == null)
1ff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2000: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
2010: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2020: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2030: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2040: 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f   Path.GetDirecto
2050: 72 79 4e 61 6d 65 28 61 73 73 65 6d 62 6c 79 4e  ryName(assemblyN
2060: 61 6d 65 2e 43 6f 64 65 42 61 73 65 29 3b 0d 0a  ame.CodeBase);..
2070: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2080: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
2090: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
20a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
20b0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
20c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
20d0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
20e0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d  #endif..      }.
20f0: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
2150: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
2160: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
2170: 20 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e   the dynamic lin
2180: 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
2190: 61 6d 65 20 72 65 71 75 69 72 65 73 20 61 20 73  ame requires a s
21a0: 75 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f  uffix..      ///
21b0: 20 61 6e 64 20 61 64 64 73 20 69 74 20 69 66 20   and adds it if 
21c0: 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20  necessary...    
21d0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
21e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
21f0: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
2200: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
2210: 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61  he original dyna
2220: 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79  mic link library
2230: 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e   file name to in
2240: 73 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  spect...      //
2250: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2260: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2270: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  .      /// The d
2280: 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72  ynamic link libr
2290: 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70  ary file name, p
22a0: 6f 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64  ossibly modified
22b0: 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a   to include an..
22c0: 20 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73        /// extens
22d0: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion...      /// 
22e0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
22f0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2300: 20 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c   string FixUpDll
2310: 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20  FileName(..     
2320: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
2330: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
2340: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
2350: 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
2360: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
2370: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
2380: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2390: 20 20 20 20 20 20 20 50 6c 61 74 66 6f 72 6d 49         PlatformI
23a0: 44 20 70 6c 61 74 66 6f 72 6d 49 64 20 3d 20 45  D platformId = E
23b0: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72  nvironment.OSVer
23c0: 73 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a  sion.Platform;..
23d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23e0: 69 66 20 28 28 70 6c 61 74 66 6f 72 6d 49 64 20  if ((platformId 
23f0: 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69  == PlatformID.Wi
2400: 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20  n32S) ||..      
2410: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
2420: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
2430: 6f 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f  ormID.Win32Windo
2440: 77 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  ws) ||..        
2450: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66            (platf
2460: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
2470: 6d 49 44 2e 57 69 6e 33 32 4e 54 29 20 7c 7c 0d  mID.Win32NT) ||.
2480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2490: 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d     (platformId =
24a0: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
24b0: 43 45 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  CE))..          
24c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 66 69           if (!fi
24e0: 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28  leName.EndsWith(
24f0: 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
2500: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2510: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
2520: 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
2530: 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
2540: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2550: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2570: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20  turn fileName + 
2580: 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
2590: 3b 0d 0a 20 20 20 20 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 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
25c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
25d0: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
25e0: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
25f0: 20 20 20 20 20 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 2f 2f 2f  ////////////////
2630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2640: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2650: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
2660: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
2670: 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ns the processor
2680: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
2690: 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
26a0: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e      /// process.
26b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
26c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
26d0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
26e0: 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
26f0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
2700: 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
2710: 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75   process -OR- nu
2720: 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20  ll if it..      
2730: 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
2740: 74 65 72 6d 69 6e 65 64 2e 20 20 41 6c 77 61 79  termined.  Alway
2750: 73 20 72 65 74 75 72 6e 73 20 61 6e 20 65 6d 70  s returns an emp
2760: 74 79 20 73 74 72 69 6e 67 20 77 68 65 6e 20 72  ty string when r
2770: 75 6e 6e 69 6e 67 20 6f 6e 0d 0a 20 20 20 20 20  unning on..     
2780: 20 2f 2f 2f 20 74 68 65 20 2e 4e 45 54 20 43 6f   /// the .NET Co
2790: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e  mpact Framework.
27a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
27b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
27c0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
27d0: 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73 6f 72  ing GetProcessor
27e0: 41 72 63 68 69 74 65 63 74 75 72 65 28 29 0d 0a  Architecture()..
27f0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
2800: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2810: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2820: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2830: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
2840: 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
2850: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
2860: 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65  cture" environme
2870: 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  nt..          //
2880: 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20         variable 
2890: 69 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76  is set, use it v
28a0: 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20  erbatim for the 
28b0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 6f  current processo
28c0: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  r..          // 
28d0: 20 20 20 20 20 20 61 72 63 68 69 74 65 63 74 75        architectu
28e0: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  re...          /
28f0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
2900: 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
2910: 68 69 74 65 63 74 75 72 65 20 3d 20 45 6e 76 69  hitecture = Envi
2920: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
2930: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d  onmentVariable(.
2940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  .              "
2950: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72  PreLoadSQLite_Pr
2960: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
2970: 75 72 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ure");....      
2980: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
2990: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 21 3d  rArchitecture !=
29a0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
29b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f        return pro
29c0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
29d0: 72 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  re;....         
29e0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
29f0: 2f 20 42 55 47 42 55 47 3a 20 57 69 6c 6c 20 74  / BUGBUG: Will t
2a00: 68 69 73 20 61 6c 77 61 79 73 20 62 65 20 72 65  his always be re
2a10: 6c 69 61 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20  liable?..       
2a20: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2a30: 20 72 65 74 75 72 6e 20 45 6e 76 69 72 6f 6e 6d   return Environm
2a40: 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65  ent.GetEnvironme
2a50: 6e 74 56 61 72 69 61 62 6c 65 28 50 52 4f 43 45  ntVariable(PROCE
2a60: 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52  SSOR_ARCHITECTUR
2a70: 45 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  E);..#else..    
2a80: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2a90: 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 4e      // BUGBUG: N
2aa0: 6f 20 77 61 79 20 74 6f 20 64 65 74 65 72 6d 69  o way to determi
2ab0: 6e 65 20 74 68 69 73 20 76 61 6c 75 65 20 6f 6e  ne this value on
2ac0: 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63   the .NET Compac
2ad0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
2ae0: 20 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72          Framewor
2af0: 6b 20 28 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69  k (running on Wi
2b00: 6e 64 6f 77 73 20 43 45 2c 20 65 74 63 29 2e 0d  ndows CE, etc)..
2b10: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
2b20: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2b30: 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 23  String.Empty;..#
2b40: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a  endif..      }..
2b50: 0d 0a 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
2bb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
2bc0: 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f 63  / Given the proc
2bd0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
2be0: 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20  re, returns the 
2bf0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61 74  name of the plat
2c00: 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  form...      ///
2c10: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2c20: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2c30: 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
2c40: 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
2c50: 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
2c60: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
2c70: 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61 74  e to be translat
2c80: 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d  ed to a platform
2c90: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
2ca0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2cb0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2cc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
2cd0: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72  latform name for
2ce0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
2cf0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
2d00: 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d  cture -OR- null.
2d10: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69 74  .      /// if it
2d20: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
2d30: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
2d40: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2d50: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
2d60: 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c 61  ic string GetPla
2d70: 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20  tformName(..    
2d80: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
2d90: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
2da0: 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  re..          ).
2db0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
2dc0: 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
2dd0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f  sNullOrEmpty(pro
2de0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
2df0: 72 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  re))..          
2e00: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
2e10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
2e20: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
2e30: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
2e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e50: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
2e60: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
2e70: 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ms == null)..   
2e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2e90: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
2ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
2eb0: 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  ing platformName
2ec0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ed0: 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
2ee0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
2ef0: 66 6f 72 6d 73 2e 54 72 79 47 65 74 56 61 6c 75  forms.TryGetValu
2f00: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2f10: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
2f20: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
2f30: 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d   out platformNam
2f40: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
2f50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
2f70: 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20  latformName;..  
2f80: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2f90: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2fa0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
2fb0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ull;..      }...
2fc0: 0a 20 20 20 20 20 20 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 2f  ////////////////
3000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3010: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
3020: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3030: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61   Attempts to loa
3040: 64 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  d the native SQL
3050: 69 74 65 20 6c 69 62 72 61 72 79 20 62 61 73 65  ite library base
3060: 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69  d on the specifi
3070: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69  ed..      /// di
3080: 72 65 63 74 6f 72 79 20 61 6e 64 20 70 72 6f 63  rectory and proc
3090: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
30a0: 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  re...      /// <
30b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
30c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
30d0: 3d 22 64 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20  ="directory">.. 
30e0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73       /// The bas
30f0: 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 75  e directory to u
3100: 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66  se, null for def
3110: 61 75 6c 74 20 28 74 68 65 20 62 61 73 65 20 64  ault (the base d
3120: 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20  irectory of..   
3130: 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72 65     /// the curre
3140: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
3150: 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20 64 69  omain).  This di
3160: 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20 63  rectory should c
3170: 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
3180: 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20    /// processor 
3190: 61 72 63 68 69 74 65 63 74 75 72 65 20 73 70 65  architecture spe
31a0: 63 69 66 69 63 20 73 75 62 2d 64 69 72 65 63 74  cific sub-direct
31b0: 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ories...      //
31c0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
31d0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
31e0: 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
31f0: 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
3200: 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73    /// The reques
3210: 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ted processor ar
3220: 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c  chitecture, null
3230: 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68   for default (th
3240: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
3250: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
3260: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
3270: 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20 54 68  nt process).  Th
3280: 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64  is caller should
3290: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f  ..      /// almo
32a0: 73 74 20 61 6c 77 61 79 73 20 73 70 65 63 69 66  st always specif
32b0: 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73 20  y null for this 
32c0: 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20  parameter...    
32d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
32e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
32f0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
3300: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
3310: 20 68 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72   handle as retur
3320: 6e 65 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61  ned by LoadLibra
3330: 72 79 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a  ry -OR- IntPtr.Z
3340: 65 72 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  ero..      /// i
3350: 66 20 74 68 65 20 6c 6f 61 64 69 6e 67 20 66 61  f the loading fa
3360: 69 6c 73 20 66 6f 72 20 61 6e 79 20 72 65 61 73  ils for any reas
3370: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
3380: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
3390: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
33a0: 49 6e 74 50 74 72 20 50 72 65 4c 6f 61 64 53 51  IntPtr PreLoadSQ
33b0: 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20  LiteDll(..      
33c0: 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
33d0: 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
33e0: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
33f0: 72 41 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20  rArchitecture.. 
3400: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
3410: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
3420: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
3430: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65  NOTE: If the spe
3440: 63 69 66 69 65 64 20 62 61 73 65 20 64 69 72 65  cified base dire
3450: 63 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75  ctory is null, u
3460: 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 2e 0d  se the default..
3470: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
3480: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
3490: 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
34a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64  .              d
34b0: 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61  irectory = GetBa
34c0: 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  seDirectory();..
34d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
34e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
34f0: 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
3500: 74 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73  to query the bas
3510: 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f  e directory, sto
3520: 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
3530: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3540: 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d  if (directory ==
3550: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
3560: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
3570: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
3580: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
3590: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
35a0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
35b0: 74 65 20 6c 69 62 72 61 72 79 20 65 78 69 73 74  te library exist
35c0: 73 20 69 6e 20 74 68 65 20 62 61 73 65 20 64 69  s in the base di
35d0: 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20  rectory..       
35e0: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65     //       itse
35f0: 6c 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  lf, stop now... 
3600: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
3610: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
3620: 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c  leName = FixUpDl
3630: 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43  lFileName(Path.C
3640: 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79  ombine(directory
3650: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
3660: 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a   SQLITE_DLL));..
3670: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
3680: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
3690: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
36a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
36b0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
36c0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
36d0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
36e0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
36f0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
3700: 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75  cture is null, u
3710: 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  se the..        
3720: 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75    //       defau
3730: 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lt...          /
3740: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
3750: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
3760: 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
3770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
3780: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
3790: 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
37a0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
37b0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
37c0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
37d0: 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
37e0: 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
37f0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
3800: 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f  tecture, stop no
3810: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
3820: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
3830: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
3840: 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
3850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3860: 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
3870: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
3880: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
3890: 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
38a0: 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
38b0: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
38c0: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
38d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
38e0: 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20    library using 
38f0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
3900: 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 2e  chitecture name.
3910: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
3920: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
3930: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
3940: 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69  eName(Path.Combi
3950: 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28  ne(Path.Combine(
3960: 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
3970: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
3980: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
3990: 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d  , SQLITE_DLL));.
39a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
39b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
39c0: 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20  TE: If the file 
39d0: 6e 61 6d 65 20 62 61 73 65 64 20 6f 6e 20 74 68  name based on th
39e0: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
39f0: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20  itecture name.. 
3a00: 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 6e           // is n
3a10: 6f 74 20 66 6f 75 6e 64 2c 20 74 72 79 20 75 73  ot found, try us
3a20: 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69 61 74  ing the associat
3a30: 65 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  ed platform name
3a40: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
3a50: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
3a60: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
3a70: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
3a80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3a90: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3aa0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
3ab0: 74 65 6d 70 74 20 74 6f 20 74 72 61 6e 73 6c 61  tempt to transla
3ac0: 74 65 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  te the processor
3ad0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f   architecture to
3ae0: 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   a..            
3af0: 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 74 66    //       platf
3b00: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
3b10: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
3b20: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
3b30: 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d  g platformName =
3b40: 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65   GetPlatformName
3b50: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
3b60: 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20  ecture);....    
3b70: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3b80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
3b90: 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65  OTE: If we faile
3ba0: 64 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74  d to translate t
3bb0: 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  he platform name
3bc0: 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
3bd0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3bf0: 28 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d  (platformName ==
3c00: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
3c10: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3c20: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
3c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3c40: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
3c50: 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20   // NOTE: Build 
3c60: 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e  the full path an
3c70: 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20  d file name for 
3c80: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
3c90: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
3ca0: 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72   //       librar
3cb0: 79 20 75 73 69 6e 67 20 74 68 65 20 70 6c 61 74  y using the plat
3cc0: 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
3cd0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3ce0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
3cf0: 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46  Name = FixUpDllF
3d00: 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d  ileName(Path.Com
3d10: 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e  bine(Path.Combin
3d20: 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20  e(directory,..  
3d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d40: 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 53  platformName), S
3d50: 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a  QLITE_DLL));....
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3d80: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
3d90: 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20 65 78  file does not ex
3da0: 69 73 74 2c 20 73 6b 69 70 20 74 72 79 69 6e 67  ist, skip trying
3db0: 20 74 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a 20 20   to load it...  
3dc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
3dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
3de0: 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66   (!File.Exists(f
3df0: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
3e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
3e10: 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
3e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
3e30: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
3e40: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3e50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
3e70: 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74  NOTE: Show exact
3e80: 6c 79 20 77 68 65 72 65 20 77 65 20 61 72 65 20  ly where we are 
3e90: 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74  trying to load t
3ea0: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
3eb0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
3ec0: 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79    SQLite library
3ed0: 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 20 20   from...        
3ee0: 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 4e        //..#if !N
3ef0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
3f00: 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a   TRACE_PRELOAD..
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
3f20: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
3f30: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
3f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f50: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
3f60: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
3f80: 54 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e  Trying to load n
3f90: 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
3fa0: 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22  rary \"{0}\"..."
3fb0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
3fc0: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 29 29 3b       fileName));
3fd0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
3fe0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3ff0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
4000: 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20  OTE: Attempt to 
4010: 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
4020: 6c 69 62 72 61 72 79 2e 20 20 54 68 69 73 20 77  library.  This w
4030: 69 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20  ill either..    
4040: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
4050: 20 20 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69     return a vali
4060: 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  d native module 
4070: 68 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49  handle, return I
4080: 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20  ntPtr.Zero,..   
4090: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
40a0: 20 20 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20      or throw an 
40b0: 65 78 63 65 70 74 69 6f 6e 2e 0d 0a 20 20 20 20  exception...    
40c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
40d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
40e0: 72 6e 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 66  rn LoadLibrary(f
40f0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  ileName);..     
4100: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
4110: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
4120: 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
4130: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
4140: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
4150: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
4160: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
4170: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
4180: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
4190: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
41a0: 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20  CE_PRELOAD..    
41b0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
41c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
41d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41e0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
41f0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
4200: 20 46 69 72 73 74 2c 20 67 72 61 62 20 74 68 65   First, grab the
4210: 20 6c 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f   last Win32 erro
4220: 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20  r number...     
4230: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
4240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4250: 20 20 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72     int lastError
4260: 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61   = Marshal.GetLa
4270: 73 74 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 0d  stWin32Error();.
4280: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4290: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
42a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
42b0: 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77  TE: Show where w
42c0: 65 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64  e failed to load
42d0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
42e0: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  te..            
42f0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
4300: 69 62 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e  ibrary from alon
4310: 67 20 77 69 74 68 20 74 68 65 20 57 69 6e 33 32  g with the Win32
4320: 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d   error code and.
4330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4340: 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78 63 65     //       exce
4350: 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f  ption informatio
4360: 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n...            
4370: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
4380: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
4390: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
43a0: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
43b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43c0: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
43d0: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
43e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43f0: 20 20 20 20 20 22 46 61 69 6c 65 64 20 74 6f 20       "Failed to 
4400: 6c 6f 61 64 20 6e 61 74 69 76 65 20 53 51 4c 69  load native SQLi
4410: 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d  te library \"{0}
4420: 5c 22 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  \" " +..        
4430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 28                "(
4440: 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b  getLastError = {
4450: 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20  1}): {2}",..    
4460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4470: 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74    fileName, last
4480: 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74  Error, e)); /* t
4490: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
44a0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
44b0: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
44c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
44d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44e0: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
44f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4500: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
4510: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4520: 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
4530: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 7d  r.Zero;..      }
4540: 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
4550: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
4560: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
45c0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
45d0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a  MEWORK..    //..
45e0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20      // NOTE: On 
45f0: 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
4600: 20 46 72 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20   Framework, the 
4610: 6e 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20 61  native interop a
4620: 73 73 65 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20  ssembly must..  
4630: 20 20 2f 2f 20 20 20 20 20 20 20 62 65 20 75 73    //       be us
4640: 65 64 20 62 65 63 61 75 73 65 20 69 74 20 70 72  ed because it pr
4650: 6f 76 69 64 65 73 20 73 65 76 65 72 61 6c 20 77  ovides several w
4660: 6f 72 6b 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e  orkarounds to .N
4670: 45 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20  ET Compact..    
4680: 2f 2f 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f  //       Framewo
4690: 72 6b 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69  rk limitations i
46a0: 6d 70 6f 72 74 61 6e 74 20 66 6f 72 20 70 72 6f  mportant for pro
46b0: 70 65 72 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66  per operation of
46c0: 20 74 68 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f   the core..    /
46d0: 2f 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44  /       System.D
46e0: 61 74 61 2e 53 51 4c 69 74 65 20 66 75 6e 63 74  ata.SQLite funct
46f0: 69 6f 6e 61 6c 69 74 79 20 28 65 2e 67 2e 20 62  ionality (e.g. b
4700: 65 69 6e 67 20 61 62 6c 65 20 74 6f 20 62 69 6e  eing able to bin
4710: 64 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  d..    //       
4720: 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 68  parameters and h
4730: 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c  andle column val
4740: 75 65 73 20 6f 66 20 74 79 70 65 73 20 49 6e 74  ues of types Int
4750: 36 34 20 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d  64 and Double)..
4760: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
4770: 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
4780: 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
4790: 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
47a0: 30 38 35 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66  085.dll";..#elif
47b0: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
47c0: 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
47d0: 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
47e0: 2c 20 69 66 20 74 68 65 20 73 74 61 6e 64 61 72  , if the standar
47f0: 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  d SQLite library
4800: 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 75 73 65   is enabled, use
4810: 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20   it...    //..  
4820: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
4830: 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
4840: 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a  L = "sqlite3";..
4850: 23 65 6c 69 66 20 55 53 45 5f 49 4e 54 45 52 4f  #elif USE_INTERO
4860: 50 5f 44 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20  P_DLL..    //.. 
4870: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
4880: 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 6e 61  rwise, if the na
4890: 74 69 76 65 20 53 51 4c 69 74 65 20 69 6e 74 65  tive SQLite inte
48a0: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 73 20  rop assembly is 
48b0: 65 6e 61 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f  enabled,..    //
48c0: 20 20 20 20 20 20 20 75 73 65 20 69 74 2e 0d 0a         use it...
48d0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 70 72 69 76      //..    priv
48e0: 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
48f0: 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53   SQLITE_DLL = "S
4900: 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c  QLite.Interop.dl
4910: 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l";..#else..    
4920: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
4930: 20 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65   Finally, assume
4940: 20 74 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d   that the mixed-
4950: 6d 6f 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73  mode assembly is
4960: 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20   being used...  
4970: 20 20 2f 2f 0d 0a 20 20 20 20 70 72 69 76 61 74    //..    privat
4980: 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  e const string S
4990: 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73  QLITE_DLL = "Sys
49a0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
49b0: 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dll";..#endif...
49c0: 0a 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63  .    // This sec
49d0: 74 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f  tion uses intero
49e0: 70 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73  p calls that als
49f0: 6f 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e  o fetch text len
4a00: 67 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20  gth to optimize 
4a10: 63 6f 6e 76 65 72 73 69 6f 6e 2e 20 20 0d 0a 20  conversion.  .. 
4a20: 20 20 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67     // When using
4a30: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 64 6c   the standard dl
4a40: 6c 2c 20 77 65 20 63 61 6e 20 72 65 70 6c 61 63  l, we can replac
4a50: 65 20 74 68 65 73 65 20 63 61 6c 6c 73 20 77 69  e these calls wi
4a60: 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65  th normal sqlite
4a70: 20 63 61 6c 6c 73 20 61 6e 64 20 0d 0a 20 20 20   calls and ..   
4a80: 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a   // do unoptimiz
4a90: 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69  ed conversions i
4aa0: 6e 73 74 65 61 64 20 61 66 74 65 72 77 61 72 64  nstead afterward
4ab0: 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69  s..    #region i
4ac0: 6e 74 65 72 6f 70 20 61 64 64 65 64 20 74 65 78  nterop added tex
4ad0: 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d  tlength calls...
4ae0: 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
4af0: 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
4b00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
4b10: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
4b20: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
4b30: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
4b40: 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e  bind_parameter_n
4b50: 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
4b60: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
4b70: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
4b80: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
4b90: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
4ba0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
4bb0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
4bc0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
4bd0: 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
4be0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
4bf0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
4c00: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
4c10: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
4c20: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
4c30: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4c40: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
4c50: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
4c60: 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f  database_name16_
4c70: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
4c80: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
4c90: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
4ca0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
4cb0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
4cc0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
4cd0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
4ce0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
4cf0: 65 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70 28  ecltype_interop(
4d00: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
4d10: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
4d20: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
4d30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
4d40: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
4d50: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
4d60: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
4d70: 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
4d80: 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
4d90: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
4da0: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
4db0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
4dc0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
4dd0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
4de0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
4df0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
4e00: 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
4e10: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
4e20: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
4e30: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
4e40: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
4e50: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
4e60: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
4e70: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
4e80: 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  lumn_name16_inte
4e90: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
4ea0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20   int index, out 
4eb0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
4ec0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
4ed0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
4ee0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
4ef0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
4f00: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
4f10: 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  n_name_interop(I
4f20: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
4f30: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
4f40: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
4f50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
4f60: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
4f70: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
4f80: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
4f90: 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
4fa0: 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
4fb0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
4fc0: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
4fd0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
4fe0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
4ff0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5000: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5010: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
5020: 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e  mn_table_name_in
5030: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
5040: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
5050: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
5060: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5070: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
5080: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5090: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
50a0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
50b0: 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  le_name16_intero
50c0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
50d0: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
50e0: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
50f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5100: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
5110: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5120: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
5130: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e  3_column_text_in
5140: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
5150: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
5160: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
5170: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5180: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
5190: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
51a0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
51b0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
51c0: 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t16_interop(IntP
51d0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
51e0: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
51f0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
5200: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5210: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5220: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5230: 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d  Ptr sqlite3_errm
5240: 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sg_interop(IntPt
5250: 72 20 64 62 2c 20 6f 75 74 20 69 6e 74 20 6c 65  r db, out int le
5260: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
5270: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5280: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
5290: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
52a0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
52b0: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69  qlite3_prepare_i
52c0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
52d0: 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
52e0: 6e 74 20 6e 42 79 74 65 73 2c 20 6f 75 74 20 49  nt nBytes, out I
52f0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 6f 75 74 20  ntPtr stmt, out 
5300: 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
5310: 2c 20 6f 75 74 20 69 6e 74 20 6e 52 65 6d 61 69  , out int nRemai
5320: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
5330: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5340: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
5350: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
5360: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
5370: 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c  qlite3_table_col
5380: 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74  umn_metadata_int
5390: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
53a0: 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62  byte[] dbName, b
53b0: 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62  yte[] tblName, b
53c0: 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f  yte[] colName, o
53d0: 75 74 20 49 6e 74 50 74 72 20 70 74 72 44 61 74  ut IntPtr ptrDat
53e0: 61 54 79 70 65 2c 20 6f 75 74 20 49 6e 74 50 74  aType, out IntPt
53f0: 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75  r ptrCollSeq, ou
5400: 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f  t int notNull, o
5410: 75 74 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65  ut int primaryKe
5420: 79 2c 20 6f 75 74 20 69 6e 74 20 61 75 74 6f 49  y, out int autoI
5430: 6e 63 2c 20 6f 75 74 20 69 6e 74 20 64 74 4c 65  nc, out int dtLe
5440: 6e 2c 20 6f 75 74 20 69 6e 74 20 63 73 4c 65 6e  n, out int csLen
5450: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
5460: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5470: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
5480: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
5490: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
54a0: 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  ue_text_interop(
54b0: 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e  IntPtr p, out in
54c0: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
54d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
54e0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
54f0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5500: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
5510: 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f 69  3_value_text16_i
5520: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
5530: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
5540: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f  ..#if INTEROP_LO
5550: 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  G..    [DllImpor
5560: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
5570: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5580: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
5590: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
55a0: 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e  e3_config_log_in
55b0: 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66  terop();..#endif
55c0: 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
55d0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
55e0: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
55f0: 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
5600: 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78  functions add ex
5610: 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61  isting functiona
5620: 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53  lity on top of S
5630: 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72  QLite and requir
5640: 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72  e a little effor
5650: 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74  t to..    // get
5660: 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73   working when us
5670: 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64  ing the standard
5680: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
5690: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
56a0: 74 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63  terop added func
56b0: 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66  tionality....#if
56c0: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
56d0: 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
56e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
56f0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5700: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
5710: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
5720: 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  ite3_close_inter
5730: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
5740: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5750: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
5760: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5770: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
5780: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
5790: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
57a0: 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  n_interop(IntPtr
57b0: 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
57c0: 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20  ame, int nArgs, 
57d0: 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
57e0: 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
57f0: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
5800: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73  QLiteCallback fs
5810: 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c  tep, SQLiteFinal
5820: 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c  Callback ffinal,
5830: 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71   int needCollSeq
5840: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
5850: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5860: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
5870: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
5880: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
5890: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69  lite3_finalize_i
58a0: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
58b0: 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  mt);....    [Dll
58c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
58d0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
58e0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
58f0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
5900: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
5910: 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e  inish_interop(In
5920: 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
5930: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
5940: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
5950: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5960: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
5970: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
5980: 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79  _open_interop(by
5990: 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d  te[] utf8Filenam
59a0: 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  e, SQLiteOpenFla
59b0: 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75  gsEnum flags, ou
59c0: 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  t IntPtr db);...
59d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
59e0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
59f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5a00: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
5a10: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
5a20: 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28  _open16_interop(
5a30: 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
5a40: 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
5a50: 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
5a60: 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  out IntPtr db);.
5a70: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
5a80: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
5a90: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5aa0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
5ab0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
5ac0: 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70  e3_reset_interop
5ad0: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
5ae0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5af0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
5b00: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5b10: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
5b20: 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e  lite3_changes_in
5b30: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
5b40: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ;..#endif..// !S
5b50: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
5b60: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
5b70: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73  ....    // The s
5b80: 74 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c  tandard api call
5b90: 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20   equivalents of 
5ba0: 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f  the above intero
5bb0: 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65  p calls..    #re
5bc0: 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65  gion standard ve
5bd0: 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f  rsions of intero
5be0: 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23  p functions....#
5bf0: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
5c00: 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  RD....#if !PLATF
5c10: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5c20: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
5c30: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
5c40: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5c50: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
5c60: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
5c70: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
5c80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5c90: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
5ca0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5cb0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
5cc0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
5cd0: 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b  lose(IntPtr db);
5ce0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
5cf0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
5d00: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
5d10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
5d20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
5d30: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
5d40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
5d50: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
5d60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5d70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
5d80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
5d90: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
5da0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f  Code sqlite3_clo
5db0: 73 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 29  se_v2(IntPtr db)
5dc0: 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d  ; /* 3.7.14+ */.
5dd0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
5de0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
5df0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
5e00: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
5e10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
5e20: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
5e30: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
5e40: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
5e50: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5e60: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
5e70: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5e80: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
5e90: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
5ea0: 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50  te_function(IntP
5eb0: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
5ec0: 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  rName, int nArgs
5ed0: 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
5ee0: 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
5ef0: 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
5f00: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
5f10: 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e  fstep, SQLiteFin
5f20: 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61  alCallback ffina
5f30: 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  l);....#if !PLAT
5f40: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
5f50: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
5f60: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5f70: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
5f80: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
5f90: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
5fa0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
5fb0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
5fc0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
5fd0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5fe0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
5ff0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
6000: 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
6010: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
6020: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6030: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6040: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6050: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6060: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6070: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6080: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6090: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
60a0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
60b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
60c0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
60d0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
60e0: 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20  e3_reset(IntPtr 
60f0: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
6100: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6110: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6120: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6130: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6140: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6150: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6160: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6170: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6180: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
6190: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
61a0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
61b0: 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
61c0: 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e  arameter_name(In
61d0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
61e0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
61f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6200: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6210: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6220: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6230: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6240: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6250: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6260: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6270: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
6280: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6290: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
62a0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
62b0: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49  _database_name(I
62c0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
62d0: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
62e0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
62f0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
6300: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6310: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
6320: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
6330: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
6340: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
6350: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6360: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
6370: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6380: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
6390: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
63a0: 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31  n_database_name1
63b0: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
63c0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
63d0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
63e0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
63f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6400: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
6410: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
6420: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
6430: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
6440: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6450: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
6460: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
6470: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6480: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
6490: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e  lumn_decltype(In
64a0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
64b0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
64c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
64d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
64e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
64f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6500: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6510: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6520: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6530: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6540: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
6550: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6560: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
6570: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
6580: 5f 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50  _decltype16(IntP
6590: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
65a0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
65b0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
65c0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
65d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
65e0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
65f0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
6600: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
6610: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
6620: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6630: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
6640: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6650: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
6660: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
6670: 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
6680: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
6690: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
66a0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
66b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
66c0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
66d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
66e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
66f0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
6700: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6710: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
6720: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
6730: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6740: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
6750: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e  column_name16(In
6760: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
6770: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
6780: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6790: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
67a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
67b0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
67c0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
67d0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
67e0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
67f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6800: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
6810: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6820: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
6830: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
6840: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74  _origin_name(Int
6850: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6860: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
6870: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
6880: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
6890: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
68a0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
68b0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
68c0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
68d0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
68e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
68f0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
6900: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6910: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6920: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
6930: 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e  origin_name16(In
6940: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
6950: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
6960: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6970: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6980: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6990: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
69a0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
69b0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
69c0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
69d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
69e0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
69f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6a00: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
6a10: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
6a20: 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50  _table_name(IntP
6a30: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
6a40: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
6a50: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6a60: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
6a70: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6a80: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
6a90: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
6aa0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
6ab0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
6ac0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6ad0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
6ae0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6af0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
6b00: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
6b10: 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  able_name16(IntP
6b20: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
6b30: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
6b40: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6b50: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
6b60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6b70: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
6b80: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
6b90: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
6ba0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
6bb0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6bc0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
6bd0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6be0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
6bf0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
6c00: 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ext(IntPtr stmt,
6c10: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
6c20: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
6c30: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
6c40: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6c50: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
6c60: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
6c70: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
6c80: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
6c90: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6ca0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
6cb0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
6cc0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6cd0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
6ce0: 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e  column_text16(In
6cf0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
6d00: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
6d10: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6d20: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6d30: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6d40: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6d50: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6d60: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6d70: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6d80: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6d90: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
6da0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6db0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
6dc0: 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  r sqlite3_errmsg
6dd0: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
6de0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
6df0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
6e00: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6e10: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
6e20: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
6e30: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
6e40: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
6e50: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6e60: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
6e70: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
6e80: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6e90: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
6ea0: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
6eb0: 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
6ec0: 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
6ed0: 74 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  tes, out IntPtr 
6ee0: 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74 72  stmt, out IntPtr
6ef0: 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a   ptrRemain);....
6f00: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
6f10: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
6f20: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6f30: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
6f40: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
6f50: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
6f60: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
6f70: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6f80: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
6f90: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
6fa0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6fb0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
6fc0: 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
6fd0: 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49  olumn_metadata(I
6fe0: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
6ff0: 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
7000: 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
7010: 63 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74  colName, out Int
7020: 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
7030: 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 43   out IntPtr ptrC
7040: 6f 6c 6c 53 65 71 2c 20 6f 75 74 20 69 6e 74 20  ollSeq, out int 
7050: 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74  notNull, out int
7060: 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74   primaryKey, out
7070: 20 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a   int autoInc);..
7080: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7090: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
70a0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
70b0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
70c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
70d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
70e0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
70f0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7100: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7110: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7120: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7130: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
7140: 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74  3_value_text(Int
7150: 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
7160: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7170: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
7180: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7190: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
71a0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
71b0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
71c0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
71d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
71e0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
71f0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
7200: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
7210: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
7220: 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 70  _text16(IntPtr p
7230: 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  );....#endif..//
7240: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
7250: 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
7260: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
7270: 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
7280: 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
7290: 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
72a0: 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
72b0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20  method...    // 
72c0: 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20  All of them are 
72d0: 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20  "nice to haves" 
72e0: 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72  and not necessar
72f0: 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76  ily "need to hav
7300: 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  es"...    #regio
7310: 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  n no equivalent 
7320: 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d  standard method.
7330: 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
7340: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
7350: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7360: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
7370: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7380: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
7390: 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65  3_context_collse
73a0: 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  q_interop(IntPtr
73b0: 20 63 6f 6e 74 65 78 74 2c 20 6f 75 74 20 69 6e   context, out in
73c0: 74 20 74 79 70 65 2c 20 6f 75 74 20 69 6e 74 20  t type, out int 
73d0: 65 6e 63 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  enc, out int len
73e0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
73f0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
7400: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
7410: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
7420: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
7430: 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e  t_collcompare_in
7440: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
7450: 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c  text, byte[] p1,
7460: 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65   int p1len, byte
7470: 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e  [] p2, int p2len
7480: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
7490: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
74a0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
74b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
74c0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
74d0: 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77  lite3_cursor_row
74e0: 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
74f0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73  r stmt, int curs
7500: 6f 72 2c 20 6f 75 74 20 6c 6f 6e 67 20 72 6f 77  or, out long row
7510: 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  id);....    [Dll
7520: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7530: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
7540: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7550: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
7560: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
7570: 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f  lumn_info_intero
7580: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
7590: 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74  e[] catalog, byt
75a0: 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62  e[] IndexName, b
75b0: 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65  yte[] ColumnName
75c0: 2c 20 6f 75 74 20 69 6e 74 20 73 6f 72 74 4f 72  , out int sortOr
75d0: 64 65 72 2c 20 6f 75 74 20 69 6e 74 20 6f 6e 45  der, out int onE
75e0: 72 72 6f 72 2c 20 6f 75 74 20 49 6e 74 50 74 72  rror, out IntPtr
75f0: 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 6f 75 74 20   Collation, out 
7600: 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d  int colllen);...
7610: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7620: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
7630: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
7640: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
7650: 6c 69 74 65 33 5f 72 65 73 65 74 61 6c 6c 5f 69  lite3_resetall_i
7660: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
7670: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
7680: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
7690: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
76a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
76b0: 74 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f  t sqlite3_table_
76c0: 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49  cursor_interop(I
76d0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
76e0: 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f  db, int tableRoo
76f0: 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69  tPage);....#endi
7700: 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54  f..// !SQLITE_ST
7710: 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65  ANDARD....    #e
7720: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7730: 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49 20  // Standard API 
7740: 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72  calls global acr
7750: 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54  oss versions.  T
7760: 68 65 72 65 20 61 72 65 20 61 20 66 65 77 20 69  here are a few i
7770: 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65  nstances of inte
7780: 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f  rop calls..    /
7790: 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e 20 68  / scattered in h
77a0: 65 72 65 2c 20 62 75 74 20 74 68 65 79 20 61 72  ere, but they ar
77b0: 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68  e only active wh
77c0: 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  en PLATFORM_COMP
77d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20  ACTFRAMEWORK is 
77e0: 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23  declared...    #
77f0: 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20  region standard 
7800: 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73  sqlite api calls
7810: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7820: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7830: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7840: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7850: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7860: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7870: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7880: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7890: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
78a0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
78b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
78c0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
78d0: 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c  de sqlite3_enabl
78e0: 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  e_load_extension
78f0: 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
7900: 72 20 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65  r db, int enable
7910: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
7920: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
7930: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
7940: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
7950: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7960: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
7970: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
7980: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
7990: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
79a0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
79b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
79c0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
79d0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c  orCode sqlite3_l
79e0: 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a  oad_extension(..
79f0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64          IntPtr d
7a00: 62 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61  b, byte[] fileNa
7a10: 6d 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e  me, byte[] procN
7a20: 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
7a30: 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20  pError);....#if 
7a40: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7a50: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7a60: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7a70: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7a80: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7a90: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7aa0: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
7ab0: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
7ac0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
7ad0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7ae0: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
7af0: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
7b00: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7b10: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7b20: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
7b30: 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  de sqlite3_win32
7b40: 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28 75  _set_directory(u
7b50: 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e 67  int type, string
7b60: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
7b70: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7b80: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7b90: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7ba0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7bb0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7bc0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7bd0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7be0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7bf0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
7c00: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7c10: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
7c20: 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  Ptr sqlite3_libv
7c30: 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  ersion();....#if
7c40: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7c50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7c60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7c70: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
7c80: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
7c90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
7ca0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
7cb0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7cc0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
7cd0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
7ce0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
7cf0: 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72  t sqlite3_libver
7d00: 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a  sion_number();..
7d10: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7d20: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7d30: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7d40: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7d50: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7d60: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7d70: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7d80: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7d90: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7da0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7db0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7dc0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
7dd0: 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d  3_sourceid();...
7de0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7df0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7e00: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7e10: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
7e20: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
7e30: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7e40: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
7e50: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7e60: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
7e70: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
7e80: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7e90: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
7ea0: 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d  _malloc(int n);.
7eb0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
7ec0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
7ed0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
7ee0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
7ef0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
7f00: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
7f10: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
7f20: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
7f30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
7f40: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
7f50: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
7f60: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
7f70: 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74  e3_realloc(IntPt
7f80: 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  r p, int n);....
7f90: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7fa0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7fb0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7fc0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7fd0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7fe0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7ff0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
8000: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8010: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
8020: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
8030: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8040: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72   void sqlite3_fr
8050: 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  ee(IntPtr p);...
8060: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
8070: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8080: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8090: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
80a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
80b0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
80c0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
80d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
80e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
80f0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
8100: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
8110: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
8120: 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  e sqlite3_open_v
8130: 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  2(byte[] utf8Fil
8140: 65 6e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74  ename, out IntPt
8150: 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e  r db, SQLiteOpen
8160: 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c  FlagsEnum flags,
8170: 20 49 6e 74 50 74 72 20 76 66 73 29 3b 0d 0a 0d   IntPtr vfs);...
8180: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
8190: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
81a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
81b0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
81c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
81d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
81e0: 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
81f0: 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
8200: 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  de)]..#else..   
8210: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8220: 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
8230: 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
8240: 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e)]..#endif..   
8250: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8260: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
8270: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
8280: 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66 69  open16(string fi
8290: 6c 65 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50  leName, out IntP
82a0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
82b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
82c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
82d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
82e0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
82f0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
8300: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
8310: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
8320: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8330: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
8340: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
8350: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
8360: 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
8370: 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  pt(IntPtr db);..
8380: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
8390: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
83a0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
83b0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
83c0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
83d0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
83e0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
83f0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8400: 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
8410: 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
8420: 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62 29  rowid(IntPtr db)
8430: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
8440: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8450: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
8460: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
8470: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c  n void sqlite3_l
8480: 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
8490: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
84a0: 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  db, ref long row
84b0: 49 64 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  Id);..#endif....
84c0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
84d0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
84e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
84f0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
8500: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
8510: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8520: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
8530: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8540: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
8550: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
8560: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8570: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
8580: 6e 67 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b  nges(IntPtr db);
8590: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
85a0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
85b0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
85c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
85d0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
85e0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
85f0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
8600: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8610: 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
8620: 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
8630: 64 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  d();..#else..   
8640: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8650: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8660: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8670: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
8680: 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e  3_memory_used_in
8690: 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62  terop(ref long b
86a0: 79 74 65 73 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ytes);..#endif..
86b0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
86c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
86d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
86e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
86f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
8700: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8710: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
8720: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8730: 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
8740: 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
8750: 61 74 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c  ater(int resetFl
8760: 61 67 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ag);..#else..   
8770: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8780: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8790: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
87a0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
87b0: 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74  3_memory_highwat
87c0: 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72  er_interop(int r
87d0: 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f  esetFlag, ref lo
87e0: 6e 67 20 62 79 74 65 73 29 3b 0d 0a 23 65 6e 64  ng bytes);..#end
87f0: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
8800: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8810: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
8820: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8830: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8840: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8850: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8860: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
8870: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8880: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
8890: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
88a0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
88b0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73  orCode sqlite3_s
88c0: 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69  hutdown();....#i
88d0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
88e0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
88f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8900: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8910: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8920: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8930: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
8940: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8950: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
8960: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8970: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
8980: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
8990: 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65  qlite3_busy_time
89a0: 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69  out(IntPtr db, i
89b0: 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  nt ms);....#if !
89c0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
89d0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
89e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
89f0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
8a00: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
8a10: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
8a20: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
8a30: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8a40: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
8a50: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
8a60: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
8a70: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
8a80: 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e  te3_bind_blob(In
8a90: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
8aa0: 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c  ndex, Byte[] val
8ab0: 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49  ue, int nSize, I
8ac0: 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74  ntPtr nTransient
8ad0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
8ae0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8af0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
8b00: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8b10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8b20: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8b30: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8b40: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8b50: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
8b60: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
8b70: 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49  e3_bind_double(I
8b80: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
8b90: 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61  index, double va
8ba0: 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
8bb0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8bc0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
8bd0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8be0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
8bf0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
8c00: 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  nd_double_intero
8c10: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
8c20: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f  nt index, ref do
8c30: 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
8c40: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
8c50: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8c60: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
8c70: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8c80: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8c90: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8ca0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
8cb0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
8cc0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8cd0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
8ce0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8cf0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
8d00: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
8d10: 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72  _bind_int(IntPtr
8d20: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
8d30: 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d  , int value);...
8d40: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
8d50: 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c  NOTE: This reall
8d60: 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71  y just calls "sq
8d70: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b  lite3_bind_int";
8d80: 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73   however, it has
8d90: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20   the..    //    
8da0: 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20     correct type 
8db0: 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e  signature for an
8dc0: 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62 69   unsigned (32-bi
8dd0: 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20  t) integer...   
8de0: 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f   //..#if !PLATFO
8df0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8e00: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8e10: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8e20: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
8e30: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c  lite3_bind_int",
8e40: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8e50: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8e60: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8e70: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
8e80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8e90: 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
8ea0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
8eb0: 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
8ec0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8ed0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
8ee0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
8ef0: 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74 72  bind_uint(IntPtr
8f00: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
8f10: 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  , uint value);..
8f20: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
8f30: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
8f40: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8f50: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
8f60: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
8f70: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8f80: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
8f90: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8fa0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
8fb0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
8fc0: 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ind_int64(IntPtr
8fd0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
8fe0: 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  , long value);..
8ff0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9000: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9010: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
9020: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
9030: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
9040: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
9050: 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
9060: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
9070: 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
9080: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
9090: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
90a0: 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a  E: This really j
90b0: 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74  ust calls "sqlit
90c0: 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20  e3_bind_int64"; 
90d0: 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20  however, it has 
90e0: 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
90f0: 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73    correct type s
9100: 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20  ignature for an 
9110: 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36  unsigned long (6
9120: 34 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d  4-bit) integer..
9130: 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c  .    //..#if !PL
9140: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9150: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9160: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9170: 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
9180: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
9190: 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nt64", CallingCo
91a0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
91b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
91c0: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
91d0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
91e0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
91f0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69   sqlite3_bind_ui
9200: 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
9210: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f  , int index, ulo
9220: 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73  ng value);..#els
9230: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9240: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
9250: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
9260: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69  te3_bind_int64_i
9270: 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69  nterop")]..    i
9280: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9290: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
92a0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
92b0: 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f  nd_uint64_intero
92c0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
92d0: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c  nt index, ref ul
92e0: 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ong value);..#en
92f0: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
9300: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9310: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9320: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9330: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9340: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9350: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9360: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9370: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9380: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9390: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
93a0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
93b0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
93c0: 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74 72  bind_null(IntPtr
93d0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
93e0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
93f0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9400: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9410: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9420: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9430: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9440: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9450: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9460: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9470: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
9480: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9490: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
94a0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
94b0: 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74 72 20  ind_text(IntPtr 
94c0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
94d0: 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
94e0: 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nlen, IntPtr 
94f0: 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
9500: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9510: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9520: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9530: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
9540: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
9550: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9560: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
9570: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9580: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
9590: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
95a0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
95b0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
95c0: 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e  d_parameter_coun
95d0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  t(IntPtr stmt);.
95e0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
95f0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9600: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9610: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9620: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9630: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9640: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
9650: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9660: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9670: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
9680: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9690: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
96a0: 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
96b0: 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74 6d 74  ndex(IntPtr stmt
96c0: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
96d0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
96e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
96f0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9700: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9710: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9720: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9730: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9740: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9750: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9760: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
9770: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9780: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
9790: 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28  e3_column_count(
97a0: 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
97b0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
97c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
97d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
97e0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
97f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
9800: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9810: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
9820: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9830: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
9840: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
9850: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9860: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
9870: 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49  e sqlite3_step(I
9880: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
9890: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
98a0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
98b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
98c0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
98d0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
98e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
98f0: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
9900: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9910: 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
9920: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c  te3_column_doubl
9930: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
9940: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6c 73  nt index);..#els
9950: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9960: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
9970: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
9980: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
9990: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
99a0: 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
99b0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
99c0: 6e 64 65 78 2c 20 6f 75 74 20 64 6f 75 62 6c 65  ndex, out double
99d0: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
99e0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
99f0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9a00: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
9a10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9a20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9a30: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9a40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
9a50: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9a60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9a70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
9a80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9a90: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
9aa0: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50  _column_int(IntP
9ab0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
9ac0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
9ad0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9ae0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9af0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9b00: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9b10: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9b20: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9b30: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9b40: 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
9b50: 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  g sqlite3_column
9b60: 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
9b70: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
9b80: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9b90: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9ba0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
9bb0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9bc0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c  void sqlite3_col
9bd0: 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  umn_int64_intero
9be0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
9bf0: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 6c 6f  nt index, out lo
9c00: 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ng value);..#end
9c10: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
9c20: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9c30: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9c40: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9c50: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9c60: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9c70: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9c80: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9c90: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9ca0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
9cb0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9cc0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
9cd0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f  lite3_column_blo
9ce0: 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
9cf0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
9d00: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
9d10: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9d20: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9d30: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9d40: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9d50: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
9d60: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
9d70: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9d80: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
9d90: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
9da0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
9db0: 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
9dc0: 6e 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 73  n_bytes(IntPtr s
9dd0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
9de0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
9df0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9e00: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
9e10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9e20: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9e30: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9e40: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
9e50: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9e60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9e70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
9e80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9e90: 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  tern TypeAffinit
9ea0: 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  y sqlite3_column
9eb0: 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d  _type(IntPtr stm
9ec0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
9ed0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
9ee0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9ef0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9f00: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9f10: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9f20: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9f30: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
9f40: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9f50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
9f60: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
9f70: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9f80: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
9f90: 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
9fa0: 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50  e_collation(IntP
9fb0: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
9fc0: 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65  rName, int nType
9fd0: 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
9fe0: 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e   SQLiteCollation
9ff0: 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21   func);....#if !
a000: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a010: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a020: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a030: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
a040: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
a050: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
a060: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
a070: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a080: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
a090: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a0a0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
a0b0: 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
a0c0: 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63  e_count(IntPtr c
a0d0: 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
a0e0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a0f0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a100: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a110: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a120: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a130: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a140: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
a150: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a160: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
a170: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a180: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
a190: 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
a1a0: 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29  e_blob(IntPtr p)
a1b0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
a1c0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
a1d0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
a1e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
a1f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a200: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
a210: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
a220: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
a230: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
a240: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
a250: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
a260: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
a270: 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e  3_value_bytes(In
a280: 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
a290: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a2a0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a2b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a2c0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a2d0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a2e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a2f0: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
a300: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
a310: 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f   double sqlite3_
a320: 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74  value_double(Int
a330: 50 74 72 20 70 29 3b 0d 0a 23 65 6c 73 65 0d 0a  Ptr p);..#else..
a340: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a350: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
a360: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a370: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
a380: 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c  ite3_value_doubl
a390: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
a3a0: 20 70 2c 20 6f 75 74 20 64 6f 75 62 6c 65 20 76   p, out double v
a3b0: 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
a3c0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
a3d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
a3e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a3f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
a400: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
a410: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a420: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
a430: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
a440: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
a450: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
a460: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
a470: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76  rn int sqlite3_v
a480: 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20  alue_int(IntPtr 
a490: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
a4a0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a4b0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a4c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a4d0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a4e0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a4f0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a500: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a510: 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
a520: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
a530: 6e 74 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d  nt64(IntPtr p);.
a540: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a550: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a560: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
a570: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
a580: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
a590: 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  ue_int64_interop
a5a0: 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 49  (IntPtr p, out I
a5b0: 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 23 65  nt64 value);..#e
a5c0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
a5d0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
a5e0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
a5f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a600: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
a610: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
a620: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
a630: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
a640: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a650: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
a660: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a670: 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
a680: 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61  inity sqlite3_va
a690: 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20  lue_type(IntPtr 
a6a0: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
a6b0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a6c0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a6d0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a6e0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a6f0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a700: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a710: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a720: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a730: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
a740: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a750: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
a760: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
a770: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
a780: 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
a790: 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72  nt nSize, IntPtr
a7a0: 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
a7b0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
a7c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
a7d0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a7e0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
a7f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
a800: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a810: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
a820: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
a830: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
a840: 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
a850: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
a860: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
a870: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a880: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a890: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
a8a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
a8b0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
a8c0: 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  ult_double_inter
a8d0: 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
a8e0: 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  t, ref double va
a8f0: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
a900: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
a910: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
a920: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a930: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
a940: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
a950: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a960: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
a970: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a980: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
a990: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
a9a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
a9b0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
a9c0: 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e 74 50  esult_error(IntP
a9d0: 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65  tr context, byte
a9e0: 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74 20 6e  [] strErr, int n
a9f0: 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Len);....#if !PL
aa00: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
aa10: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
aa20: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
aa30: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
aa40: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
aa50: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
aa60: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
aa70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
aa80: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
aa90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
aaa0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
aab0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
aac0: 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
aad0: 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d  , int value);...
aae0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
aaf0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ab00: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ab10: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
ab20: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ab30: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ab40: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
ab50: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ab60: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
ab70: 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28  e3_result_int64(
ab80: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
ab90: 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
aba0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
abb0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
abc0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
abd0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
abe0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
abf0: 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
ac00: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72  ntPtr context, r
ac10: 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  ef Int64 value);
ac20: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
ac30: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
ac40: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
ac50: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
ac60: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
ac70: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
ac80: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
ac90: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
aca0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
acb0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
acc0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
acd0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
ace0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
acf0: 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e  _null(IntPtr con
ad00: 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
ad10: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
ad20: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
ad30: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ad40: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
ad50: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ad60: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
ad70: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
ad80: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ad90: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
ada0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
adb0: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
adc0: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74  sqlite3_result_t
add0: 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ext(IntPtr conte
ade0: 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  xt, byte[] value
adf0: 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50  , int nLen, IntP
ae00: 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
ae10: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
ae20: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
ae30: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
ae40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
ae50: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
ae60: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
ae70: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
ae80: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
ae90: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
aea0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
aeb0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
aec0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
aed0: 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e  e3_aggregate_con
aee0: 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  text(IntPtr cont
aef0: 65 78 74 2c 20 69 6e 74 20 6e 42 79 74 65 73 29  ext, int nBytes)
af00: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
af10: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
af20: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
af30: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
af40: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
af50: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
af60: 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
af70: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
af80: 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
af90: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
afa0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
afb0: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
afc0: 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
afd0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
afe0: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
aff0: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
b000: 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28  te3_bind_text16(
b010: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
b020: 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76   index, string v
b030: 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20  alue, int nlen, 
b040: 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
b050: 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
b060: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
b070: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
b080: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b090: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
b0a0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
b0b0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
b0c0: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
b0d0: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
b0e0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
b0f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
b100: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
b110: 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
b120: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b130: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
b140: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b150: 74 5f 65 72 72 6f 72 31 36 28 49 6e 74 50 74 72  t_error16(IntPtr
b160: 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67   context, string
b170: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c   strName, int nL
b180: 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
b190: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
b1a0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
b1b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b1c0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
b1d0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
b1e0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
b1f0: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
b200: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
b210: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
b220: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
b230: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
b240: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
b250: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
b260: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
b270: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
b280: 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72  lt_text16(IntPtr
b290: 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67   context, string
b2a0: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c   strName, int nL
b2b0: 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  en, IntPtr pvRes
b2c0: 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49  erved);....#if I
b2d0: 4e 54 45 52 4f 50 5f 43 4f 44 45 43 0d 0a 23 69  NTEROP_CODEC..#i
b2e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
b2f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
b300: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b310: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
b320: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
b330: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
b340: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
b350: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b360: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
b370: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
b380: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
b390: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
b3a0: 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74 50 74  qlite3_key(IntPt
b3b0: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79  r db, byte[] key
b3c0: 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a  , int keylen);..
b3d0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
b3e0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
b3f0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b400: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
b410: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
b420: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b430: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
b440: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
b450: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
b460: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
b470: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
b480: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
b490: 64 65 20 73 71 6c 69 74 65 33 5f 72 65 6b 65 79  de sqlite3_rekey
b4a0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
b4b0: 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c  [] key, int keyl
b4c0: 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  en);..#endif....
b4d0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
b4e0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
b4f0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b500: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
b510: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
b520: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b530: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
b540: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b550: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
b560: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
b570: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
b580: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
b590: 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50  update_hook(IntP
b5a0: 74 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64  tr db, SQLiteUpd
b5b0: 61 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ateCallback func
b5c0: 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
b5d0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b5e0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b5f0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b600: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b610: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b620: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b630: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b640: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b650: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b660: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b670: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b680: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
b690: 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b  ite3_commit_hook
b6a0: 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
b6b0: 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b  teCommitCallback
b6c0: 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
b6d0: 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
b6e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b6f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b700: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b710: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b720: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b730: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b740: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b750: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b760: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b770: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b780: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
b790: 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28  r sqlite3_trace(
b7a0: 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
b7b0: 65 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66  eTraceCallback f
b7c0: 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
b7d0: 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53  er);....    // S
b7e0: 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e  ince sqlite3_con
b7f0: 66 69 67 28 29 20 74 61 6b 65 73 20 61 20 76 61  fig() takes a va
b800: 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20  riable argument 
b810: 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f  list, we have to
b820: 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72   overload declar
b830: 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66  ations..    // f
b840: 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20  or all possible 
b850: 63 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61  calls that we wa
b860: 6e 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20  nt to use...#if 
b870: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
b880: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
b890: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b8a0: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
b8b0: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
b8c0: 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
b8d0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b8e0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b8f0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b900: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b910: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
b920: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
b930: 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
b940: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b950: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
b960: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
b970: 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53  e3_config_none(S
b980: 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e  QLiteConfigOpsEn
b990: 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  um op);....#if !
b9a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b9b0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b9c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b9d0: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
b9e0: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
b9f0: 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
ba00: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ba10: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
ba20: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
ba30: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ba40: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
ba50: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
ba60: 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
ba70: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ba80: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
ba90: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
baa0: 33 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c  3_config_int(SQL
bab0: 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d  iteConfigOpsEnum
bac0: 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b   op, int value);
bad0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
bae0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
baf0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
bb00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
bb10: 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
bb20: 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
bb30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
bb40: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
bb50: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
bb60: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
bb70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
bb80: 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
bb90: 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
bba0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
bbb0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
bbc0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
bbd0: 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
bbe0: 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66  g_log(SQLiteConf
bbf0: 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51  igOpsEnum op, SQ
bc00: 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20  LiteLogCallback 
bc10: 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
bc20: 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
bc30: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
bc40: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
bc50: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bc60: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
bc70: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
bc80: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
bc90: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
bca0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
bcb0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
bcc0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bcd0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
bce0: 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63   sqlite3_rollbac
bcf0: 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  k_hook(IntPtr db
bd00: 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b  , SQLiteRollback
bd10: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
bd20: 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
bd30: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
bd40: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
bd50: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bd60: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
bd70: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
bd80: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bd90: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
bda0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
bdb0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
bdc0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
bdd0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
bde0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
bdf0: 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50  3_db_handle(IntP
be00: 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
be10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
be20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
be30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
be40: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
be50: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
be60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
be70: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
be80: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
be90: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
bea0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
beb0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
bec0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78  tPtr sqlite3_nex
bed0: 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62  t_stmt(IntPtr db
bee0: 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  , IntPtr stmt);.
bef0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
bf00: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
bf10: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
bf20: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
bf30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
bf40: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
bf50: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
bf60: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
bf70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
bf80: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
bf90: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
bfa0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
bfb0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63  ode sqlite3_exec
bfc0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
bfd0: 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74  [] strSql, IntPt
bfe0: 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e  r pvCallback, In
bff0: 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 6f 75  tPtr pvParam, ou
c000: 74 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29  t IntPtr errMsg)
c010: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
c020: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
c030: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
c040: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c050: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c060: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
c070: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
c080: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
c090: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c0a0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
c0b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c0c0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
c0d0: 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74  3_get_autocommit
c0e0: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
c0f0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
c100: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
c110: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c120: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
c130: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
c140: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c150: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
c160: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c170: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
c180: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
c190: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
c1a0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
c1b0: 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
c1c0: 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49  d_result_codes(I
c1d0: 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e  ntPtr db, int on
c1e0: 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  off);....#if !PL
c1f0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
c200: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
c210: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c220: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
c230: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
c240: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
c250: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
c260: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c270: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
c280: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c290: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
c2a0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
c2b0: 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72  3_errcode(IntPtr
c2c0: 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
c2d0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
c2e0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
c2f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c300: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
c310: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
c320: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
c330: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
c340: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c350: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
c360: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c370: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
c380: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
c390: 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f  3_extended_errco
c3a0: 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  de(IntPtr db);..
c3b0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
c3c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
c3d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c3e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
c3f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
c400: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c410: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
c420: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
c430: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
c440: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
c450: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c460: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
c470: 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45  3_errstr(SQLiteE
c480: 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a  rrorCode rc); /*
c490: 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20   3.7.15+ */.... 
c4a0: 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69     // Since sqli
c4b0: 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20  te3_log() takes 
c4c0: 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d  a variable argum
c4d0: 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76  ent list, we hav
c4e0: 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65  e to overload de
c4f0: 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20  clarations..    
c500: 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69  // for all possi
c510: 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20  ble calls.  For 
c520: 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79  now, we are only
c530: 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67   exposing a sing
c540: 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 20 0d  le string, and .
c550: 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f  .    // depend o
c560: 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20  n the caller to 
c570: 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e  format the strin
c580: 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  g...#if !PLATFOR
c590: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c5a0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c5b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c5c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c5d0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c5e0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c5f0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c600: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c610: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c620: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c630: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
c640: 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f  3_log(SQLiteErro
c650: 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20  rCode iErrCode, 
c660: 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b  byte[] zFormat);
c670: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c680: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c690: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c6a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c6b0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c6c0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c6d0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c6e0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c6f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c700: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c710: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c720: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
c730: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c  Code sqlite3_fil
c740: 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72  e_control(IntPtr
c750: 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e   db, byte[] zDbN
c760: 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74  ame, int op, Int
c770: 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69  Ptr pArg);....#i
c780: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
c790: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
c7a0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c7b0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
c7c0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
c7d0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
c7e0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
c7f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c800: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
c810: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
c820: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
c830: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61  ntPtr sqlite3_ba
c840: 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72  ckup_init(IntPtr
c850: 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20   destDb, byte[] 
c860: 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74  zDestName, IntPt
c870: 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65  r sourceDb, byte
c880: 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b  [] zSourceName);
c890: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c8a0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c8b0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c8c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c8d0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c8e0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c8f0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c900: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c910: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c920: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c930: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c940: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
c950: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63  Code sqlite3_bac
c960: 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20  kup_step(IntPtr 
c970: 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67  backup, int nPag
c980: 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
c990: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c9a0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c9b0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c9c0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c9d0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c9e0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c9f0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
ca00: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ca10: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
ca20: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
ca30: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
ca40: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
ca50: 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e  backup_finish(In
ca60: 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
ca70: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ca80: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ca90: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
caa0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
cab0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
cac0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cad0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
cae0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
caf0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
cb00: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
cb10: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
cb20: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61  n int sqlite3_ba
cb30: 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49  ckup_remaining(I
cb40: 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
cb50: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
cb60: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
cb70: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cb80: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
cb90: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
cba0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
cbb0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
cbc0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
cbd0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
cbe0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
cbf0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
cc00: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
cc10: 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28  ackup_pagecount(
cc20: 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
cc30: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
cc40: 0a 20 20 7d 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  .  }....#if PLAT
cc50: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
cc60: 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61  EWORK..  interna
cc70: 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73  l abstract class
cc80: 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20   CriticalHandle 
cc90: 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  : IDisposable.. 
cca0: 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20   {..    private 
ccb0: 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d  bool _isClosed;.
ccc0: 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49  .    protected I
ccd0: 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 20  ntPtr handle;.. 
cce0: 20 20 20 0d 0a 20 20 20 20 70 72 6f 74 65 63 74     ..    protect
ccf0: 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  ed CriticalHandl
cd00: 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64  e(IntPtr invalid
cd10: 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20  HandleValue)..  
cd20: 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c    {..      handl
cd30: 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c  e = invalidHandl
cd40: 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f  eValue;..      _
cd50: 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65  isClosed = false
cd60: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
cd70: 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28  ~CriticalHandle(
cd80: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
cd90: 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d  Dispose(false);.
cda0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
cdb0: 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e  ivate void Clean
cdc0: 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  up()..    {..   
cdd0: 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73 65 64     if (!IsClosed
cde0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
cdf0: 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73      this._isClos
ce00: 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
ce10: 20 20 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c      if (!IsInval
ce20: 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  id)..        {..
ce30: 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 61 73            Releas
ce40: 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20  eHandle();..    
ce50: 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
ce60: 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
ce70: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
ce80: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
ce90: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43     public void C
cea0: 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  lose()..    {.. 
ceb0: 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
cec0: 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  e);..    }....  
ced0: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
cee0: 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  spose()..    {..
cef0: 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
cf00: 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ue);..    }.... 
cf10: 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
cf20: 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73  tual void Dispos
cf30: 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67  e(bool disposing
cf40: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
cf50: 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20  Cleanup();..    
cf60: 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  }....    protect
cf70: 65 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c  ed abstract bool
cf80: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
cf90: 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  ;....    protect
cfa0: 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c  ed void SetHandl
cfb0: 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0d  e(IntPtr value).
cfc0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
cfd0: 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20  ndle = value;.. 
cfe0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
cff0: 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c  ic void SetHandl
d000: 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20  eAsInvalid()..  
d010: 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c    {..      _isCl
d020: 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
d030: 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
d040: 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
d050: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
d060: 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65  lic bool IsClose
d070: 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  d..    {..      
d080: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73  get { return _is
d090: 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d  Closed; }..    }
d0a0: 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61  ....    public a
d0b0: 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49  bstract bool IsI
d0c0: 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20  nvalid..    {.. 
d0d0: 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d       get;..    }
d0e0: 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69  ....  }....#endi
d0f0: 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  f....    ///////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d140: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
d150: 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ion SQLiteConnec
d160: 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73  tionHandle Class
d170: 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73  ..    // Handles
d180: 20 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20 64   the unmanaged d
d190: 61 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72 2c  atabase pointer,
d1a0: 20 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66 69   and provides fi
d1b0: 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20  nalization..    
d1c0: 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69  // support for i
d1d0: 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  t...    internal
d1e0: 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
d1f0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
d200: 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
d210: 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
d220: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
d230: 44 20 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43  D && !PLATFORM_C
d240: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d250: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
d260: 6c 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20  l delegate void 
d270: 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43  CloseConnectionC
d280: 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  allback(..      
d290: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
d2a0: 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c  ectionHandle hdl
d2b0: 2c 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  , IntPtr db);...
d2c0: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
d2d0: 6c 20 73 74 61 74 69 63 20 43 6c 6f 73 65 43 6f  l static CloseCo
d2e0: 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b  nnectionCallback
d2f0: 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   closeConnection
d300: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
d310: 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65  SQLiteBase.Close
d320: 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e  Connection;..#en
d330: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d380: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c  //////....#if PL
d390: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
d3a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
d3b0: 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
d3c0: 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
d3d0: 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
d3e0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
d3f0: 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
d430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
d440: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
d450: 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
d460: 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
d470: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d480: 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20  Handle db)..    
d490: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d4a0: 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c     if (db != nul
d4b0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
d4c0: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
d4d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d4e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d4f0: 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52    lock (db.syncR
d500: 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
d510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
d520: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d530: 20 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68       return db.h
d540: 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
d550: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
d560: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
d570: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
d580: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
d590: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
d5f0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
d600: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
d610: 6c 65 28 49 6e 74 50 74 72 20 64 62 29 0d 0a 20  le(IntPtr db).. 
d620: 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
d630: 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
d640: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
d650: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
d660: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
d670: 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
d680: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
d690: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d6a0: 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29     SetHandle(db)
d6b0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
d6c0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
d6d0: 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
d710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
d720: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
d730: 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
d740: 6f 6e 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  onHandle()..    
d750: 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
d760: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
d770: 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
d780: 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
d790: 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
d7a0: 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20  d.Increment(..  
d7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d7c0: 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f UnsafeNativeMe
d7d0: 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e  thods.connection
d7e0: 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
d7f0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
d800: 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
d840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
d850: 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
d860: 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
d870: 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
d880: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
d890: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
d8a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
d8b0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
d8c0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
d8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
d8e0: 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
d8f0: 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
d900: 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
d910: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
d920: 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
d930: 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51  Zero);....#if SQ
d940: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
d950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
d960: 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
d970: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
d980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d990: 20 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74      closeConnect
d9a0: 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48  ion(this, localH
d9b0: 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  andle);..#else..
d9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9d0: 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
d9e0: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
d9f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
da00: 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
da10: 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  CloseConnection(
da20: 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  this, localHandl
da30: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
da40: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
da50: 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
da60: 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
da70: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
da80: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
da90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
daa0: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
dab0: 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dad0: 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f          "CloseCo
dae0: 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20  nnection: {0}", 
daf0: 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 0d 0a  localHandle));..
db00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db10: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
db20: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
db30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
db40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
db50: 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
db60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
db70: 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
db80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db90: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
dba0: 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
dbb0: 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
dbc0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dbd0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
dbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbf0: 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
dc00: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
dc10: 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  s, handle);..   
dc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc30: 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
dc40: 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc60: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
dc70: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
dc80: 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
dc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dca0: 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
dcb0: 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20  crement(..      
dcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
dcd0: 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f UnsafeNativeMe
dce0: 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e  thods.connection
dcf0: 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
dd00: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
dd20: 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
dd30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
dd40: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
dd50: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
dd60: 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
dd70: 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
dd80: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
dd90: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
dda0: 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
ddb0: 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
ddc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
ddd0: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
dde0: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
ddf0: 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
de00: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
de10: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
de20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de30: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
de40: 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
de50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
de60: 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43           "CloseC
de70: 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20  onnection: {0}, 
de80: 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
de90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dea0: 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
deb0: 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  , e));..        
dec0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
ded0: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
dee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
def0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
df00: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
df10: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
df20: 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
df30: 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
df40: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
df50: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
df60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
df70: 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
df80: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
df90: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
dfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfb0: 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
dfc0: 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
dfd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
dfe0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
dff0: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
e000: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
e010: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
e020: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
e030: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
e040: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e090: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
e0a0: 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
e0b0: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
e0c0: 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
e0d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e0e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
e0f0: 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
e100: 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
e110: 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
e120: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f  NativeMethods.co
e130: 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
e140: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
e150: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
e1b0: 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
e1c0: 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
e1d0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
e1e0: 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
e1f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
e200: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e210: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
e220: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
e230: 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
e240: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
e250: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e260: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
e270: 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  n (handle == Int
e280: 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
e290: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
e2a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
e2b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
e2c0: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
e300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
e310: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
e320: 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
e330: 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
e340: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
e350: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
e360: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e370: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
e380: 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
e390: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
e3a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e3b0: 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e    return handle.
e3c0: 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
e3d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e3e0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
e3f0: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
e400: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e450: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
e460: 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 61  region SQLiteSta
e470: 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c 61  tementHandle Cla
e480: 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69  ss..    // Provi
e490: 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
e4a0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d   support for unm
e4b0: 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73 74  anaged SQLite st
e4c0: 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20 69  atements...    i
e4d0: 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
e4e0: 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61 74 65  lass SQLiteState
e4f0: 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72 69  mentHandle : Cri
e500: 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
e510: 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
e520: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
e530: 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
e540: 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
e550: 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
e560: 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
e570: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
e5d0: 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
e5e0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
e5f0: 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  e cnn;....      
e600: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
e650: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
e660: 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
e670: 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
e680: 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
e690: 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20  e stmt)..       
e6a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e6b0: 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c 6c  if (stmt != null
e6c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
e6d0: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
e6e0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e6f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e700: 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e 63   lock (stmt.sync
e710: 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
e720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
e730: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e740: 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 6d        return stm
e750: 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  t.handle;..     
e760: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
e770: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
e780: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e790: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
e7a0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
e7b0: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
e800: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
e810: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
e820: 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65  ndle(SQLiteConne
e830: 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c  ctionHandle cnn,
e840: 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a 20   IntPtr stmt).. 
e850: 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
e860: 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
e870: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
e880: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e890: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
e8a0: 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
e8b0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
e8c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e8d0: 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e     this.cnn = cn
e8e0: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
e8f0: 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73 74      SetHandle(st
e900: 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mt);..          
e910: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
e920: 0d 0a 20 20 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e970: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
e980: 76 61 74 65 20 53 51 4c 69 74 65 53 74 61 74 65  vate SQLiteState
e990: 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20 20  mentHandle()..  
e9a0: 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
e9b0: 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
e9c0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
e9d0: 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
e9e0: 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
e9f0: 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a  ked.Increment(..
ea00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea10: 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
ea20: 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e  Methods.statemen
ea30: 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  tCount);..#endif
ea40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
ea50: 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
ea90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
eaa0: 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
eab0: 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
eac0: 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
ead0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
eae0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
eaf0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
eb00: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
eb10: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
eb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
eb30: 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
eb40: 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
eb50: 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
eb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
eb70: 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
eb80: 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
eb90: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
eba0: 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
ebb0: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
ebc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebd0: 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c  SQLiteBase.Final
ebe0: 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e  izeStatement(cnn
ebf0: 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
ec00: 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
ec10: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
ec20: 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
ec30: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
ec40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
ec50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec60: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
ec70: 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(String.Forma
ec80: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
ec90: 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
eca0: 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20  alizeStatement: 
ecb0: 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
ecc0: 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e));..          
ecd0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
ece0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
ecf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ed10: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
ed20: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
ed30: 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
ed40: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
ed50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ed60: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
ed70: 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  (handle != IntPt
ed80: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
eda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
edb0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
edc0: 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65  se.FinalizeState
edd0: 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65  ment(cnn, handle
ede0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
edf0: 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
ee00: 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
ee10: 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
ee20: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
ee30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
ee40: 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
ee50: 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
ee60: 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
ee70: 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d  cked.Decrement(.
ee80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ee90: 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e       ref UnsafeN
eea0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61  ativeMethods.sta
eeb0: 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23  tementCount);..#
eec0: 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
eed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eee0: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
eef0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
ef00: 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
ef10: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
ef20: 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
ef30: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
ef40: 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
ef50: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
ef60: 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
ef70: 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
ef80: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
ef90: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
efa0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
efb0: 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
efc0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
efd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
efe0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
eff0: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
f000: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
f010: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
f020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
f030: 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
f040: 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f  t: {0}, exceptio
f050: 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  n: {1}",..      
f060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f070: 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a    handle, e));..
f080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f090: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
f0a0: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
f0b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f0d0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
f0e0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
f0f0: 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
f100: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
f110: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f120: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
f130: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
f140: 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
f150: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
f160: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f170: 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
f180: 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d  dleAsInvalid();.
f190: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f1a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
f1b0: 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  }..#if DEBUG..  
f1c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
f1d0: 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a   false;..#else..
f1e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f1f0: 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
f200: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
f210: 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
f250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f260: 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
f270: 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  LE..        publ
f280: 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73  ic int WasReleas
f290: 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20  edOk()..        
f2a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
f2b0: 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
f2c0: 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20  d.Decrement(..  
f2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f2e0: 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f UnsafeNativeMe
f2f0: 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43  thods.statementC
f300: 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
f310: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
f320: 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
f360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
f370: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
f380: 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
f390: 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
f3a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
f3b0: 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
f3c0: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
f3d0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
f3e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f3f0: 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
f400: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
f410: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f430: 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
f440: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
f450: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
f460: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
f470: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
f480: 0d 0a 20 20 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4d0: 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
f4e0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
f4f0: 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
f500: 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
f510: 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
f520: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f530: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
f540: 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
f550: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
f560: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f570: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
f580: 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
f590: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
f5a0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
f5b0: 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
f5c0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
f5d0: 20 20 20 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 2f 2f 2f  ////////////////
f610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f620: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
f630: 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
f640: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50   Class..    // P
f650: 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
f660: 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
f670: 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
f680: 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73  e backup objects
f690: 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
f6a0: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
f6b0: 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20  iteBackupHandle 
f6c0: 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  : CriticalHandle
f6d0: 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41  ..    {..#if PLA
f6e0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f6f0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
f700: 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c  internal readonl
f710: 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  y object syncRoo
f720: 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
f730: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
f740: 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
f780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
f790: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
f7a0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
f7b0: 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20  Handle cnn;.... 
f7c0: 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
f800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f810: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
f820: 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74   static implicit
f830: 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72   operator IntPtr
f840: 28 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e  (SQLiteBackupHan
f850: 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20 20 20  dle backup)..   
f860: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f870: 20 20 20 20 69 66 20 28 62 61 63 6b 75 70 20 21      if (backup !
f880: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
f890: 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
f8a0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f8b0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
f8c0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 61 63         lock (bac
f8d0: 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  kup.syncRoot)..#
f8e0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
f8f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f910: 74 75 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e 64  turn backup.hand
f920: 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
f930: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
f940: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
f950: 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
f960: 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
f970: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
f9d0: 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42  internal SQLiteB
f9e0: 61 63 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c 69  ackupHandle(SQLi
f9f0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
fa00: 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62  le cnn, IntPtr b
fa10: 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20  ackup)..        
fa20: 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
fa30: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
fa40: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
fa50: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
fa60: 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
fa70: 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
fa80: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
fa90: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
faa0: 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20  .cnn = cnn;..   
fab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
fac0: 48 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b 0d  Handle(backup);.
fad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
fae0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
faf0: 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
fb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
fb40: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
fb50: 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
fb60: 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  le()..          
fb70: 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e    : base(IntPtr.
fb80: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b  Zero)..        {
fb90: 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
fba0: 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
fbb0: 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72  Interlocked.Incr
fbc0: 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
fbd0: 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61          ref Unsa
fbe0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
fbf0: 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23  backupCount);..#
fc00: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
fc10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc60: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
fc70: 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
fc80: 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
fc90: 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
fca0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
fcb0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
fcc0: 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
fcd0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
fce0: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
fcf0: 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
fd00: 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
fd10: 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
fd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd30: 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
fd40: 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
fd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd60: 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
fd70: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
fd80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fd90: 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
fda0: 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e  FinishBackup(cnn
fdb0: 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
fdc0: 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
fdd0: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
fde0: 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
fdf0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
fe00: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
fe10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe20: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
fe30: 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(String.Forma
fe40: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
fe50: 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e              "Fin
fe60: 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c  ishBackup: {0}",
fe70: 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 0d   localHandle));.
fe80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fe90: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
fea0: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
feb0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
fec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
fed0: 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
fee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fef0: 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
ff00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ff10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ff20: 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
ff30: 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
ff40: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
ff50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ff60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff70: 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
ff80: 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20  nishBackup(cnn, 
ff90: 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
ffa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ffb0: 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
ffc0: 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
ffd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
ffe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fff0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
10000 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
10010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
10020 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
10030 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
10040 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
10050 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
10060 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ds.backupCount);
10070 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45  ..#endif..#if DE
10080 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
10090 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
100a0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
100b0 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
100c0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
100d0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
100e0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
100f0 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
10100 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
10110 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
10120 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
10130 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
10140 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
10150 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
10160 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
10170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
10180 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
10190 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
101a0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
101b0 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
101c0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
101d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101e0 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a    "FinishBackup:
101f0 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
10200 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
10210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10220 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a 20 20  handle, e));..  
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
10240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10250 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
10260 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10270 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
10280 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
10290 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
102a0 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
102b0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
102c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
102d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
102e0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
102f0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
10300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10310 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10320 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
10330 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20  eAsInvalid();.. 
10340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
10350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
10360 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
10370 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
10380 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alse;..#else..  
10390 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
103a0 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
103b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
103c0 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
10400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10410 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
10420 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
10430 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64   int WasReleased
10440 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Ok()..        {.
10450 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
10460 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
10470 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Decrement(..    
10480 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
10490 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
104a0 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ods.backupCount)
104b0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
104c0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10510 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
10520 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
10530 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
10540 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
10550 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
10560 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
10570 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
10580 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10590 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
105a0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
105b0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
105c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
105d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
105e0 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
105f0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
10600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
10610 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
10620 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10630 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
10670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10680 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
10690 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
106a0 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
106b0 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
106c0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
106d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
106e0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
106f0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
10700 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
10710 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10720 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
10730 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
10740 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
10750 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
10760 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
10770 72 65 67 69 6f 6e 0d 0a 7d 0d 0a                 region..}..