System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 0bfc2a1b0248ea2afa3fb47e53abfabd1252346a:


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 49 4e 54 45 52 4f 50  ....#if !INTEROP
5cf0: 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23  _LEGACY_CLOSE..#
5d00: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
5d10: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
5d20: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5d30: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
5d40: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
5d50: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
5d60: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
5d70: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5d80: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
5d90: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
5da0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
5db0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
5dc0: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
5dd0: 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20  (IntPtr db); /* 
5de0: 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64  3.7.14+ */..#end
5df0: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
5e00: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
5e10: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
5e20: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
5e30: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
5e40: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
5e50: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
5e60: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
5e70: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5e80: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
5e90: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5ea0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
5eb0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
5ec0: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49  reate_function(I
5ed0: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
5ee0: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
5ef0: 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
5f00: 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
5f10: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
5f20: 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
5f30: 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
5f40: 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
5f50: 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  inal);....#if !P
5f60: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
5f70: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
5f80: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5f90: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
5fa0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
5fb0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
5fc0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
5fd0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5fe0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
5ff0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6000: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
6010: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
6020: 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50  e3_finalize(IntP
6030: 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
6040: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6050: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6060: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6070: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6080: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6090: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
60a0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
60b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
60c0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
60d0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
60e0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
60f0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
6100: 6c 69 74 65 33 5f 72 65 73 65 74 28 49 6e 74 50  lite3_reset(IntP
6110: 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
6120: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6130: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6140: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6150: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6160: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6170: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6180: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6190: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
61a0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
61b0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
61c0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
61d0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e  tPtr sqlite3_bin
61e0: 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65  d_parameter_name
61f0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
6200: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
6210: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6220: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6230: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6240: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6250: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6260: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6270: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6280: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6290: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
62a0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
62b0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
62c0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
62d0: 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
62e0: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
62f0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
6300: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
6310: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
6320: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6330: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
6340: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
6350: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
6360: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
6370: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6380: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
6390: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
63a0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
63b0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
63c0: 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
63d0: 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  me16(IntPtr stmt
63e0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
63f0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
6400: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6410: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6420: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
6430: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
6440: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
6450: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
6460: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6470: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
6480: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
6490: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
64a0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
64b0: 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
64c0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
64d0: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
64e0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
64f0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6500: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6510: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6520: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6530: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6540: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6550: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6560: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
6570: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
6580: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
6590: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
65a0: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 49  umn_decltype16(I
65b0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
65c0: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
65d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
65e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
65f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6600: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
6610: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
6620: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
6630: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
6640: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6650: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
6660: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6670: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
6680: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
6690: 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  n_name(IntPtr st
66a0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
66b0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
66c0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
66d0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
66e0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
66f0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6700: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6710: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6720: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6730: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6740: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
6750: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6760: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6770: 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36  e3_column_name16
6780: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
6790: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
67a0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
67b0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
67c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
67d0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
67e0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
67f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6800: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6810: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6820: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
6830: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
6840: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
6850: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
6860: 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28  umn_origin_name(
6870: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
6880: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
6890: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
68a0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
68b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
68c0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
68d0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
68e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
68f0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
6900: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6910: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
6920: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6930: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
6940: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
6950: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
6960: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
6970: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
6980: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6990: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
69a0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
69b0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
69c0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
69d0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
69e0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
69f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6a00: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
6a10: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
6a20: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
6a30: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
6a40: 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49  umn_table_name(I
6a50: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
6a60: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
6a70: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
6a80: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
6a90: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6aa0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
6ab0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
6ac0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
6ad0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
6ae0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6af0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
6b00: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6b10: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
6b20: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
6b30: 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49  n_table_name16(I
6b40: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
6b50: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
6b60: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
6b70: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
6b80: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6b90: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
6ba0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
6bb0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
6bc0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
6bd0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6be0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
6bf0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6c00: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
6c10: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
6c20: 6e 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73 74  n_text(IntPtr st
6c30: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
6c40: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
6c50: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6c60: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6c70: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6c80: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6c90: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6ca0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6cb0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6cc0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6cd0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
6ce0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6cf0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
6d00: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
6d10: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
6d20: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
6d30: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
6d40: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
6d50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6d60: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
6d70: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
6d80: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
6d90: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
6da0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6db0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
6dc0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
6dd0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
6de0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72  tPtr sqlite3_err
6df0: 6d 73 67 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  msg(IntPtr db);.
6e00: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
6e10: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6e20: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6e30: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6e40: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6e50: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6e60: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6e70: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6e80: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6e90: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
6ea0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6eb0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
6ec0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  ode sqlite3_prep
6ed0: 61 72 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  are(IntPtr db, I
6ee0: 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20  ntPtr pSql, int 
6ef0: 6e 42 79 74 65 73 2c 20 6f 75 74 20 49 6e 74 50  nBytes, out IntP
6f00: 74 72 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74  tr stmt, out Int
6f10: 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d  Ptr ptrRemain);.
6f20: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
6f30: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6f40: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6f50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6f60: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6f70: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6f80: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6f90: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6fa0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6fb0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
6fc0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6fd0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
6fe0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  ode sqlite3_tabl
6ff0: 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74  e_column_metadat
7000: 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  a(IntPtr db, byt
7010: 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
7020: 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
7030: 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20  [] colName, out 
7040: 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79  IntPtr ptrDataTy
7050: 70 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70  pe, out IntPtr p
7060: 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75 74 20 69  trCollSeq, out i
7070: 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20  nt notNull, out 
7080: 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  int primaryKey, 
7090: 6f 75 74 20 69 6e 74 20 61 75 74 6f 49 6e 63 29  out int autoInc)
70a0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
70b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
70c0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
70d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
70e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
70f0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
7100: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
7110: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
7120: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
7130: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
7140: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
7150: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
7160: 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28  ite3_value_text(
7170: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
7180: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
7190: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
71a0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
71b0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
71c0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
71d0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
71e0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
71f0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7200: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
7210: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
7220: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
7230: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
7240: 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74 50 74  lue_text16(IntPt
7250: 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d  r p);....#endif.
7260: 0a 2f 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  .// SQLITE_STAND
7270: 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
7280: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
7290: 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
72a0: 61 72 65 20 63 75 73 74 6f 6d 20 61 6e 64 20 68  are custom and h
72b0: 61 76 65 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e  ave no equivalen
72c0: 74 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61  t standard libra
72d0: 72 79 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  ry method...    
72e0: 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61  // All of them a
72f0: 72 65 20 22 6e 69 63 65 20 74 6f 20 68 61 76 65  re "nice to have
7300: 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73  s" and not neces
7310: 73 61 72 69 6c 79 20 22 6e 65 65 64 20 74 6f 20  sarily "need to 
7320: 68 61 76 65 73 22 2e 0d 0a 20 20 20 20 23 72 65  haves"...    #re
7330: 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65  gion no equivale
7340: 6e 74 20 73 74 61 6e 64 61 72 64 20 6d 65 74 68  nt standard meth
7350: 6f 64 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54  od....#if !SQLIT
7360: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
7370: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7380: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
7390: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
73a0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
73b0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c  ite3_context_col
73c0: 6c 73 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74  lseq_interop(Int
73d0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 6f 75 74  Ptr context, out
73e0: 20 69 6e 74 20 74 79 70 65 2c 20 6f 75 74 20 69   int type, out i
73f0: 6e 74 20 65 6e 63 2c 20 6f 75 74 20 69 6e 74 20  nt enc, out int 
7400: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
7410: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7420: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
7430: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
7440: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e   int sqlite3_con
7450: 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65  text_collcompare
7460: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
7470: 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
7480: 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62  p1, int p1len, b
7490: 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32  yte[] p2, int p2
74a0: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
74b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
74c0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
74d0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
74e0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
74f0: 20 73 71 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f   sqlite3_cursor_
7500: 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e  rowid_interop(In
7510: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 63  tPtr stmt, int c
7520: 75 72 73 6f 72 2c 20 6f 75 74 20 6c 6f 6e 67 20  ursor, out long 
7530: 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b  rowid);....    [
7540: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7550: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
7560: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7570: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
7580: 64 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  de sqlite3_index
7590: 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74  _column_info_int
75a0: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
75b0: 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20  byte[] catalog, 
75c0: 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65  byte[] IndexName
75d0: 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e  , byte[] ColumnN
75e0: 61 6d 65 2c 20 6f 75 74 20 69 6e 74 20 73 6f 72  ame, out int sor
75f0: 74 4f 72 64 65 72 2c 20 6f 75 74 20 69 6e 74 20  tOrder, out int 
7600: 6f 6e 45 72 72 6f 72 2c 20 6f 75 74 20 49 6e 74  onError, out Int
7610: 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 6f  Ptr Collation, o
7620: 75 74 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b  ut int colllen);
7630: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
7640: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
7650: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
7660: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
7670: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 61 6c   sqlite3_resetal
7680: 6c 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  l_interop(IntPtr
7690: 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c   db);....    [Dl
76a0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
76b0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
76c0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
76d0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 61 62   int sqlite3_tab
76e0: 6c 65 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f  le_cursor_intero
76f0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
7700: 6e 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c 65  nt db, int table
7710: 52 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65  RootPage);....#e
7720: 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45  ndif..// !SQLITE
7730: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
7740: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
7750: 20 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20 41     // Standard A
7760: 50 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20  PI calls global 
7770: 61 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e  across versions.
7780: 20 20 54 68 65 72 65 20 61 72 65 20 61 20 66 65    There are a fe
7790: 77 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 69  w instances of i
77a0: 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20  nterop calls..  
77b0: 20 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20 69    // scattered i
77c0: 6e 20 68 65 72 65 2c 20 62 75 74 20 74 68 65 79  n here, but they
77d0: 20 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76 65   are only active
77e0: 20 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43   when PLATFORM_C
77f0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
7800: 69 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20  is declared...  
7810: 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61    #region standa
7820: 72 64 20 73 71 6c 69 74 65 20 61 70 69 20 63 61  rd sqlite api ca
7830: 6c 6c 73 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  lls..#if !PLATFO
7840: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7850: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
7860: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
7870: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7880: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
7890: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
78a0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
78b0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
78c0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
78d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
78e0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
78f0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e  rCode sqlite3_en
7900: 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  able_load_extens
7910: 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ion(..        In
7920: 74 50 74 72 20 64 62 2c 20 69 6e 74 20 65 6e 61  tPtr db, int ena
7930: 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ble);....#if !PL
7940: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7950: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7960: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7970: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
7980: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7990: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
79a0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
79b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
79c0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
79d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
79e0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
79f0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
7a00: 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  3_load_extension
7a10: 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
7a20: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 66 69 6c  r db, byte[] fil
7a30: 65 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70 72  eName, byte[] pr
7a40: 6f 63 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  ocName, ref IntP
7a50: 74 72 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23  tr pError);....#
7a60: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7a70: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7a80: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7a90: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7aa0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7ab0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7ac0: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
7ad0: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
7ae0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7af0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7b00: 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
7b10: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
7b20: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
7b30: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
7b40: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
7b50: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69  rCode sqlite3_wi
7b60: 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72  n32_set_director
7b70: 79 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72  y(uint type, str
7b80: 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  ing value);....#
7b90: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7ba0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7bb0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7bc0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
7bd0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
7be0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
7bf0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7c00: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7c10: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7c20: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
7c30: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7c40: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c  IntPtr sqlite3_l
7c50: 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a  ibversion();....
7c60: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7c70: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7c80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7c90: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7ca0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7cb0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7cc0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
7cd0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7ce0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
7cf0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
7d00: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
7d10: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62   int sqlite3_lib
7d20: 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
7d30: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
7d40: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7d50: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
7d60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
7d70: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
7d80: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
7d90: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
7da0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
7db0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
7dc0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
7dd0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
7de0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
7df0: 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b  ite3_sourceid();
7e00: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
7e10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
7e20: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
7e30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
7e40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7e50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
7e60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
7e70: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
7e80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7e90: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
7ea0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7eb0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7ec0: 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e  te3_malloc(int n
7ed0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
7ee0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
7ef0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
7f00: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
7f10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7f20: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
7f30: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
7f40: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
7f50: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7f60: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
7f70: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
7f80: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
7f90: 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e  lite3_realloc(In
7fa0: 74 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d  tPtr p, int n);.
7fb0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
7fc0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
7fd0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
7fe0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
7ff0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8000: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8010: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8020: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8030: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8040: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8050: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8060: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
8070: 5f 66 72 65 65 28 49 6e 74 50 74 72 20 70 29 3b  _free(IntPtr p);
8080: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
8090: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
80a0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
80b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
80c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
80d0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
80e0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
80f0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8100: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8110: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8120: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8130: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
8140: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65  Code sqlite3_ope
8150: 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75 74 66 38  n_v2(byte[] utf8
8160: 46 69 6c 65 6e 61 6d 65 2c 20 6f 75 74 20 49 6e  Filename, out In
8170: 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 4f  tPtr db, SQLiteO
8180: 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61  penFlagsEnum fla
8190: 67 73 2c 20 49 6e 74 50 74 72 20 76 66 73 29 3b  gs, IntPtr vfs);
81a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
81b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
81c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
81d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
81e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
81f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8200: 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
8210: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
8220: 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
8230: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8240: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
8250: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
8260: 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
8270: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8280: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
8290: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
82a0: 65 33 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67  e3_open16(string
82b0: 20 66 69 6c 65 4e 61 6d 65 2c 20 6f 75 74 20 49   fileName, out I
82c0: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
82d0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
82e0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
82f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8300: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8310: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8320: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8330: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
8340: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8350: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
8360: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8370: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
8380: 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  oid sqlite3_inte
8390: 72 72 75 70 74 28 49 6e 74 50 74 72 20 64 62 29  rrupt(IntPtr db)
83a0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
83b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
83c0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
83d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
83e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
83f0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8400: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
8410: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8420: 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
8430: 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
8440: 72 74 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20  rt_rowid(IntPtr 
8450: 64 62 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  db);..#else..   
8460: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8470: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8480: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8490: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
84a0: 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
84b0: 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  wid_interop(IntP
84c0: 74 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20  tr db, ref long 
84d0: 72 6f 77 49 64 29 3b 0d 0a 23 65 6e 64 69 66 0d  rowId);..#endif.
84e0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
84f0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8500: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
8510: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8520: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8530: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8540: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8550: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8560: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8570: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8580: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8590: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
85a0: 63 68 61 6e 67 65 73 28 49 6e 74 50 74 72 20 64  changes(IntPtr d
85b0: 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
85c0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
85d0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
85e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
85f0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
8600: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
8610: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
8620: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
8630: 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
8640: 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
8650: 75 73 65 64 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a  used();..#else..
8660: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8670: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
8680: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8690: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
86a0: 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64  ite3_memory_used
86b0: 5f 69 6e 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e  _interop(ref lon
86c0: 67 20 62 79 74 65 73 29 3b 0d 0a 23 65 6e 64 69  g bytes);..#endi
86d0: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
86e0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
86f0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8700: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8710: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8720: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8730: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
8740: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8750: 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
8760: 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
8770: 67 68 77 61 74 65 72 28 69 6e 74 20 72 65 73 65  ghwater(int rese
8780: 74 46 6c 61 67 29 3b 0d 0a 23 65 6c 73 65 0d 0a  tFlag);..#else..
8790: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
87a0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
87b0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
87c0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
87d0: 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
87e0: 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e  water_interop(in
87f0: 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66  t resetFlag, ref
8800: 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 23   long bytes);..#
8810: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
8820: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8830: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8840: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8850: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8860: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8870: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8880: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8890: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
88a0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
88b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
88c0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
88d0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
88e0: 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d  3_shutdown();...
88f0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
8900: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8910: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8920: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
8930: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
8940: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8950: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
8960: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8970: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
8980: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
8990: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
89a0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
89b0: 65 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74  e sqlite3_busy_t
89c0: 69 6d 65 6f 75 74 28 49 6e 74 50 74 72 20 64 62  imeout(IntPtr db
89d0: 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69  , int ms);....#i
89e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
89f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8a00: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8a10: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8a20: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8a30: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8a40: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
8a50: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8a60: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
8a70: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8a80: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
8a90: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
8aa0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62  qlite3_bind_blob
8ab0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
8ac0: 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20  t index, Byte[] 
8ad0: 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
8ae0: 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73 69  , IntPtr nTransi
8af0: 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ent);....#if !PL
8b00: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8b10: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8b20: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8b30: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8b40: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8b50: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8b60: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
8b70: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
8b80: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
8b90: 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c  lite3_bind_doubl
8ba0: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
8bb0: 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65  nt index, double
8bc0: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d   value);..#else.
8bd0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8be0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
8bf0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8c00: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
8c10: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
8c20: 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74  _bind_double_int
8c30: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
8c40: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
8c50: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
8c60: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
8c70: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8c80: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
8c90: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8ca0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
8cb0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
8cc0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
8cd0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
8ce0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8cf0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
8d00: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
8d10: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
8d20: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
8d30: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74  te3_bind_int(Int
8d40: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
8d50: 64 65 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b  dex, int value);
8d60: 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ....    //..    
8d70: 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65  // NOTE: This re
8d80: 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20  ally just calls 
8d90: 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
8da0: 74 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20  t"; however, it 
8db0: 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  has the..    // 
8dc0: 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79        correct ty
8dd0: 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72  pe signature for
8de0: 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32   an unsigned (32
8df0: 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a  -bit) integer...
8e00: 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41      //..#if !PLA
8e10: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8e20: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
8e30: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8e40: 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
8e50: 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
8e60: 74 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  t", CallingConve
8e70: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8e80: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8e90: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
8ea0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8eb0: 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
8ec0: 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
8ed0: 69 6e 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  int")]..#endif..
8ee0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8ef0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
8f00: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
8f10: 65 33 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74  e3_bind_uint(Int
8f20: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
8f30: 64 65 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29  dex, uint value)
8f40: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
8f50: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8f60: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8f70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8f80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8f90: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8fa0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
8fb0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8fc0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
8fd0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
8fe0: 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74  3_bind_int64(Int
8ff0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
9000: 64 65 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29  dex, long value)
9010: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
9020: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9030: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
9040: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9050: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
9060: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  e sqlite3_bind_i
9070: 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74  nt64_interop(Int
9080: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
9090: 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61  dex, ref long va
90a0: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
90b0: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
90c0: 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c  NOTE: This reall
90d0: 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71  y just calls "sq
90e0: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
90f0: 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68  "; however, it h
9100: 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20  as the..    //  
9110: 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70       correct typ
9120: 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20  e signature for 
9130: 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  an unsigned long
9140: 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67 65   (64-bit) intege
9150: 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20  r...    //..#if 
9160: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
9170: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
9180: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9190: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
91a0: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
91b0: 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e  d_int64", Callin
91c0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
91d0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
91e0: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
91f0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9200: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
9210: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
9220: 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73  _uint64(IntPtr s
9230: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
9240: 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23  ulong value);..#
9250: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9260: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9270: 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
9280: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
9290: 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20  4_interop")]..  
92a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
92b0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
92c0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
92d0: 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74  _bind_uint64_int
92e0: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
92f0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
9300: 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
9310: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
9320: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9330: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9340: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9350: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9360: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9370: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9380: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9390: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
93a0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
93b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
93c0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
93d0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
93e0: 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74  e3_bind_null(Int
93f0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
9400: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
9410: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9420: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9430: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9440: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9450: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9460: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
9470: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
9480: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9490: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
94a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
94b0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
94c0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
94d0: 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50  3_bind_text(IntP
94e0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
94f0: 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  ex, byte[] value
9500: 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
9510: 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
9520: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
9530: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9540: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9550: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9560: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9570: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9580: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
9590: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
95a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
95b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
95c0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
95d0: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
95e0: 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63  bind_parameter_c
95f0: 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
9600: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
9610: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9620: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9630: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9640: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9650: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9660: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9670: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9680: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9690: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
96a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
96b0: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
96c0: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
96d0: 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73  r_index(IntPtr s
96e0: 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e  tmt, byte[] strN
96f0: 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
9700: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9710: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9720: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9730: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9740: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9750: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
9760: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
9770: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9780: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
9790: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
97a0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
97b0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
97c0: 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
97d0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
97e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
97f0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
9800: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9810: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9820: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9830: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
9840: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9850: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9860: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
9870: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9880: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
9890: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65  Code sqlite3_ste
98a0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
98b0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
98c0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
98d0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
98e0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
98f0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9900: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9910: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
9920: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9930: 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73   extern double s
9940: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f  qlite3_column_do
9950: 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74  uble(IntPtr stmt
9960: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23  , int index);..#
9970: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9980: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9990: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
99a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
99b0: 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  id sqlite3_colum
99c0: 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  n_double_interop
99d0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
99e0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 64 6f 75  t index, out dou
99f0: 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ble value);..#en
9a00: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
9a10: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9a20: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9a30: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9a40: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9a50: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9a60: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9a70: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9a80: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9a90: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9aa0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9ab0: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
9ac0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49  te3_column_int(I
9ad0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
9ae0: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
9af0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
9b00: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
9b10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9b20: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
9b30: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9b40: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
9b50: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
9b60: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9b70: 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c  long sqlite3_col
9b80: 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  umn_int64(IntPtr
9b90: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
9ba0: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  );..#else..    [
9bb0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9bc0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
9bd0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9be0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
9bf0: 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74  column_int64_int
9c00: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
9c10: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
9c20: 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23   long value);..#
9c30: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
9c40: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9c50: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9c60: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9c70: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
9c80: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
9c90: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
9ca0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
9cb0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9cc0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
9cd0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9ce0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
9cf0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
9d00: 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
9d10: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
9d20: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
9d30: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
9d40: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9d50: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
9d60: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
9d70: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9d80: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
9d90: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9da0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
9db0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
9dc0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9dd0: 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
9de0: 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74  lumn_bytes(IntPt
9df0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
9e00: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
9e10: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9e20: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9e30: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9e40: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9e50: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9e60: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9e70: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9e80: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9e90: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9ea0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9eb0: 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69   extern TypeAffi
9ec0: 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c  nity sqlite3_col
9ed0: 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20  umn_type(IntPtr 
9ee0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
9ef0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
9f00: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9f10: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9f20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9f30: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9f40: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9f50: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9f60: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9f70: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9f80: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9f90: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9fa0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
9fb0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72  rCode sqlite3_cr
9fc0: 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49  eate_collation(I
9fd0: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
9fe0: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54   strName, int nT
9ff0: 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73  ype, IntPtr pvUs
a000: 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74  er, SQLiteCollat
a010: 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69  ion func);....#i
a020: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
a030: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
a040: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a050: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
a060: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
a070: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
a080: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
a090: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a0a0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
a0b0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
a0c0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
a0d0: 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65  nt sqlite3_aggre
a0e0: 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74  gate_count(IntPt
a0f0: 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
a100: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
a110: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
a120: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a130: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
a140: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
a150: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
a160: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
a170: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
a180: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
a190: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
a1a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
a1b0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
a1c0: 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72  alue_blob(IntPtr
a1d0: 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
a1e0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
a1f0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
a200: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a210: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
a220: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
a230: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
a240: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
a250: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
a260: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
a270: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a280: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
a290: 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73  ite3_value_bytes
a2a0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
a2b0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
a2c0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
a2d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a2e0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
a2f0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
a300: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
a310: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
a320: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
a330: 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74  ern double sqlit
a340: 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28  e3_value_double(
a350: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6c 73  IntPtr p);..#els
a360: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
a370: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
a380: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a390: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
a3a0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
a3b0: 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
a3c0: 50 74 72 20 70 2c 20 6f 75 74 20 64 6f 75 62 6c  Ptr p, out doubl
a3d0: 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
a3e0: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
a3f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
a400: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
a410: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
a420: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a430: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
a440: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
a450: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
a460: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
a470: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
a480: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
a490: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
a4a0: 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50  3_value_int(IntP
a4b0: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
a4c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
a4d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
a4e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a4f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
a500: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
a510: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
a520: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
a530: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
a540: 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ong sqlite3_valu
a550: 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 70  e_int64(IntPtr p
a560: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  );..#else..    [
a570: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a580: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
a590: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
a5a0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
a5b0: 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65  value_int64_inte
a5c0: 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75  rop(IntPtr p, ou
a5d0: 74 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d  t Int64 value);.
a5e0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
a5f0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a600: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a610: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a620: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
a630: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
a640: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
a650: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
a660: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a670: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
a680: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a690: 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65  atic extern Type
a6a0: 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33  Affinity sqlite3
a6b0: 5f 76 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50  _value_type(IntP
a6c0: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
a6d0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
a6e0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
a6f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a700: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
a710: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
a720: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
a730: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
a740: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a750: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
a760: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a770: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
a780: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62  sqlite3_result_b
a790: 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lob(IntPtr conte
a7a0: 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  xt, byte[] value
a7b0: 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74  , int nSize, Int
a7c0: 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
a7d0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
a7e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a7f0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
a800: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
a810: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a820: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
a830: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
a840: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a850: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
a860: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
a870: 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ble(IntPtr conte
a880: 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  xt, double value
a890: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  );..#else..    [
a8a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a8b0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
a8c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
a8d0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
a8e0: 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e  result_double_in
a8f0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
a900: 74 65 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65  text, ref double
a910: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
a920: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
a930: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a940: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
a950: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
a960: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a970: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
a980: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
a990: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
a9a0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
a9b0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
a9c0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
a9d0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
a9e0: 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49  3_result_error(I
a9f0: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
aa00: 79 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e  yte[] strErr, in
aa10: 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  t nLen);....#if 
aa20: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
aa30: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
aa40: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
aa50: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
aa60: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
aa70: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
aa80: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
aa90: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
aaa0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
aab0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
aac0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
aad0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
aae0: 5f 69 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  _int(IntPtr cont
aaf0: 65 78 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b  ext, int value);
ab00: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
ab10: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ab20: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
ab30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
ab40: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ab50: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
ab60: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
ab70: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ab80: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
ab90: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
aba0: 36 34 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  64(IntPtr contex
abb0: 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  t, long value);.
abc0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
abd0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
abe0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
abf0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
ac00: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
ac10: 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  ult_int64_intero
ac20: 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  p(IntPtr context
ac30: 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75  , ref Int64 valu
ac40: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
ac50: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
ac60: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
ac70: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
ac80: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
ac90: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
aca0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
acb0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
acc0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
acd0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
ace0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
acf0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
ad00: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
ad10: 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20  ult_null(IntPtr 
ad20: 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
ad30: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
ad40: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
ad50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ad60: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
ad70: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
ad80: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
ad90: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
ada0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
adb0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
adc0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
add0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
ade0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
adf0: 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  t_text(IntPtr co
ae00: 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61  ntext, byte[] va
ae10: 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49  lue, int nLen, I
ae20: 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
ae30: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
ae40: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
ae50: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
ae60: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
ae70: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ae80: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
ae90: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
aea0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
aeb0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
aec0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
aed0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
aee0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
aef0: 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
af00: 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63  context(IntPtr c
af10: 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74  ontext, int nByt
af20: 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  es);....#if !PLA
af30: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
af40: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
af50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
af60: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
af70: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
af80: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
af90: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
afa0: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
afb0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
afc0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
afd0: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
afe0: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
aff0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
b000: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
b010: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
b020: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
b030: 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
b040: 69 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e  int index, strin
b050: 67 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65  g value, int nle
b060: 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
b070: 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
b080: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b090: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b0a0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b0b0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b0c0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b0d0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b0e0: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
b0f0: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
b100: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b110: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
b120: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
b130: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
b140: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
b150: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
b160: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
b170: 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74  sult_error16(Int
b180: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
b190: 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  ing strName, int
b1a0: 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
b1b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b1c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b1d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b1e0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b1f0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b200: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b210: 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
b220: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
b230: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
b240: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b250: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
b260: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
b270: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b280: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b290: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
b2a0: 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74  esult_text16(Int
b2b0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
b2c0: 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  ing strName, int
b2d0: 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nLen, IntPtr pv
b2e0: 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
b2f0: 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 0d  f INTEROP_CODEC.
b300: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b310: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b320: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b330: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b340: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b350: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b360: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b370: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b380: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b390: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b3a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b3b0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
b3c0: 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e  e sqlite3_key(In
b3d0: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
b3e0: 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
b3f0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
b400: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b410: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b420: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b430: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b440: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b450: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b460: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b470: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b480: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b490: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b4a0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
b4b0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
b4c0: 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62  key(IntPtr db, b
b4d0: 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b  yte[] key, int k
b4e0: 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d  eylen);..#endif.
b4f0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
b500: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b510: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
b520: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
b530: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
b540: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
b550: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
b560: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
b570: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
b580: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
b590: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b5a0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
b5b0: 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49  e3_update_hook(I
b5c0: 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
b5d0: 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 66  UpdateCallback f
b5e0: 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
b5f0: 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
b600: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
b610: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
b620: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b630: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
b640: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
b650: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
b660: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
b670: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b680: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
b690: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b6a0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
b6b0: 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68  sqlite3_commit_h
b6c0: 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
b6d0: 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62  QLiteCommitCallb
b6e0: 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
b6f0: 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
b700: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
b710: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b720: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b730: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
b740: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
b750: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
b760: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
b770: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b780: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
b790: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b7a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
b7b0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61  tPtr sqlite3_tra
b7c0: 63 65 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ce(IntPtr db, SQ
b7d0: 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63  LiteTraceCallbac
b7e0: 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
b7f0: 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f  vUser);....    /
b800: 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f  / Since sqlite3_
b810: 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73 20 61  config() takes a
b820: 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65   variable argume
b830: 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65  nt list, we have
b840: 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63   to overload dec
b850: 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f  larations..    /
b860: 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62  / for all possib
b870: 6c 65 20 63 61 6c 6c 73 20 74 68 61 74 20 77 65  le calls that we
b880: 20 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a 23   want to use...#
b890: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b8a0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b8b0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b8c0: 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
b8d0: 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
b8e0: 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
b8f0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
b900: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
b910: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
b920: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b930: 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
b940: 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
b950: 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
b960: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b970: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
b980: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
b990: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e  lite3_config_non
b9a0: 65 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70  e(SQLiteConfigOp
b9b0: 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69  sEnum op);....#i
b9c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
b9d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
b9e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b9f0: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
ba00: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63  int = "sqlite3_c
ba10: 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43  onfig", CallingC
ba20: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
ba30: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
ba40: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
ba50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
ba60: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
ba70: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63  int = "sqlite3_c
ba80: 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66  onfig")]..#endif
ba90: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
baa0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
bab0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
bac0: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74 28  ite3_config_int(
bad0: 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45  SQLiteConfigOpsE
bae0: 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75  num op, int valu
baf0: 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
bb00: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
bb10: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
bb20: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
bb30: 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
bb40: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c  sqlite3_config",
bb50: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bb60: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
bb70: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
bb80: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
bb90: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
bba0: 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
bbb0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29  sqlite3_config")
bbc0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
bbd0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
bbe0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
bbf0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f  rCode sqlite3_co
bc00: 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43  nfig_log(SQLiteC
bc10: 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c  onfigOpsEnum op,
bc20: 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61   SQLiteLogCallba
bc30: 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
bc40: 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
bc50: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
bc60: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
bc70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bc80: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
bc90: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
bca0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
bcb0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
bcc0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
bcd0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
bce0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
bcf0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
bd00: 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c  Ptr sqlite3_roll
bd10: 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  back_hook(IntPtr
bd20: 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62   db, SQLiteRollb
bd30: 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ackCallback func
bd40: 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
bd50: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
bd60: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
bd70: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
bd80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
bd90: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
bda0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
bdb0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
bdc0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
bdd0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
bde0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
bdf0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
be00: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
be10: 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49  ite3_db_handle(I
be20: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
be30: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
be40: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
be50: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
be60: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
be70: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
be80: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
be90: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
bea0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
beb0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
bec0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
bed0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bee0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
bef0: 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72  next_stmt(IntPtr
bf00: 20 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74   db, IntPtr stmt
bf10: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
bf20: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
bf30: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
bf40: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
bf50: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bf60: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
bf70: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
bf80: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
bf90: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
bfa0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
bfb0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
bfc0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
bfd0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
bfe0: 78 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62  xec(IntPtr db, b
bff0: 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e  yte[] strSql, In
c000: 74 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c  tPtr pvCallback,
c010: 20 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c   IntPtr pvParam,
c020: 20 6f 75 74 20 49 6e 74 50 74 72 20 65 72 72 4d   out IntPtr errM
c030: 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  sg);....#if !PLA
c040: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c050: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
c060: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c070: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
c080: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
c090: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
c0a0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
c0b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c0c0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
c0d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c0e0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
c0f0: 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d  ite3_get_autocom
c100: 6d 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  mit(IntPtr db);.
c110: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c120: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c130: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c140: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c150: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c160: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c170: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c180: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c190: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c1a0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c1b0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c1c0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
c1d0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65  ode sqlite3_exte
c1e0: 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65  nded_result_code
c1f0: 73 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74  s(IntPtr db, int
c200: 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20   onoff);....#if 
c210: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c220: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c230: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c240: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c250: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c260: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c270: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
c280: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c290: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
c2a0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c2b0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
c2c0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
c2d0: 69 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74  ite3_errcode(Int
c2e0: 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
c2f0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c300: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c310: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c320: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c330: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c340: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c350: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
c360: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c370: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
c380: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c390: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
c3a0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
c3b0: 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72  ite3_extended_er
c3c0: 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29  rcode(IntPtr db)
c3d0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
c3e0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
c3f0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
c400: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c410: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c420: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
c430: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
c440: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
c450: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c460: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
c470: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c480: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
c490: 69 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69  ite3_errstr(SQLi
c4a0: 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b  teErrorCode rc);
c4b0: 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a   /* 3.7.15+ */..
c4c0: 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73  ..    // Since s
c4d0: 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b  qlite3_log() tak
c4e0: 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72  es a variable ar
c4f0: 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20  gument list, we 
c500: 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64  have to overload
c510: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20   declarations.. 
c520: 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f     // for all po
c530: 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46  ssible calls.  F
c540: 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f  or now, we are o
c550: 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73  nly exposing a s
c560: 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e  ingle string, an
c570: 64 20 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e  d ..    // depen
c580: 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20  d on the caller 
c590: 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74  to format the st
c5a0: 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54  ring...#if !PLAT
c5b0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c5c0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c5d0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c5e0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c5f0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c600: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c610: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c620: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c630: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c640: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c650: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
c660: 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45  ite3_log(SQLiteE
c670: 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64  rrorCode iErrCod
c680: 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61  e, byte[] zForma
c690: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
c6a0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c6b0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c6c0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c6d0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c6e0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c6f0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c700: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c710: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c720: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c730: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c740: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
c750: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
c760: 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74  file_control(Int
c770: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a  Ptr db, byte[] z
c780: 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20  DbName, int op, 
c790: 49 6e 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d  IntPtr pArg);...
c7a0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c7b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c7c0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c7d0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c7e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c7f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c800: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c810: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c820: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c830: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c840: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c850: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
c860: 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74  _backup_init(Int
c870: 50 74 72 20 64 65 73 74 44 62 2c 20 62 79 74 65  Ptr destDb, byte
c880: 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e  [] zDestName, In
c890: 74 50 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62  tPtr sourceDb, b
c8a0: 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d  yte[] zSourceNam
c8b0: 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
c8c0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
c8d0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
c8e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c8f0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
c900: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
c910: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
c920: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
c930: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c940: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
c950: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c960: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
c970: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
c980: 62 61 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50  backup_step(IntP
c990: 74 72 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e  tr backup, int n
c9a0: 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Page);....#if !P
c9b0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c9c0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c9d0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c9e0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c9f0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ca00: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
ca10: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
ca20: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ca30: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
ca40: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
ca50: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
ca60: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
ca70: 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
ca80: 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
ca90: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
caa0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
cab0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
cac0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
cad0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
cae0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
caf0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
cb00: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
cb10: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
cb20: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
cb30: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
cb40: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
cb50: 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e  _backup_remainin
cb60: 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  g(IntPtr backup)
cb70: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
cb80: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
cb90: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
cba0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cbb0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cbc0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cbd0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
cbe0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cbf0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
cc00: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cc10: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cc20: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
cc30: 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75  3_backup_pagecou
cc40: 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  nt(IntPtr backup
cc50: 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  );..    #endregi
cc60: 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 23 69 66 20 50  on..  }....#if P
cc70: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
cc80: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65  RAMEWORK..  inte
cc90: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c  rnal abstract cl
cca0: 61 73 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ass CriticalHand
ccb0: 6c 65 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65  le : IDisposable
ccc0: 0d 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61  ..  {..    priva
ccd0: 74 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65  te bool _isClose
cce0: 64 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65  d;..    protecte
ccf0: 64 20 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b  d IntPtr handle;
cd00: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 70 72 6f 74  ..    ..    prot
cd10: 65 63 74 65 64 20 43 72 69 74 69 63 61 6c 48 61  ected CriticalHa
cd20: 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61  ndle(IntPtr inva
cd30: 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d  lidHandleValue).
cd40: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
cd50: 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61  ndle = invalidHa
cd60: 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20  ndleValue;..    
cd70: 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61    _isClosed = fa
cd80: 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  lse;..    }.... 
cd90: 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64     ~CriticalHand
cda0: 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  le()..    {..   
cdb0: 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
cdc0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
cdd0: 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c   private void Cl
cde0: 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a  eanup()..    {..
cdf0: 20 20 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f        if (!IsClo
ce00: 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  sed)..      {.. 
ce10: 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43         this._isC
ce20: 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
ce30: 20 20 20 20 20 20 20 69 66 20 28 21 49 73 49 6e         if (!IsIn
ce40: 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20  valid)..        
ce50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c  {..          Rel
ce60: 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20  easeHandle();.. 
ce70: 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
ce80: 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
ce90: 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
cea0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
ceb0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
cec0: 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b  d Close()..    {
ced0: 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
cee0: 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  true);..    }...
cef0: 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
cf00: 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
cf10: 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65  {..      Dispose
cf20: 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  (true);..    }..
cf30: 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
cf40: 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73  virtual void Dis
cf50: 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
cf60: 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ing)..    {..   
cf70: 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20     Cleanup();.. 
cf80: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74     }....    prot
cf90: 65 63 74 65 64 20 61 62 73 74 72 61 63 74 20 62  ected abstract b
cfa0: 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
cfb0: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  e();....    prot
cfc0: 65 63 74 65 64 20 76 6f 69 64 20 53 65 74 48 61  ected void SetHa
cfd0: 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75  ndle(IntPtr valu
cfe0: 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
cff0: 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b   handle = value;
d000: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
d010: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61  ublic void SetHa
d020: 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d  ndleAsInvalid().
d030: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69  .    {..      _i
d040: 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
d050: 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65  .      GC.Suppre
d060: 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
d070: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
d080: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c  public bool IsCl
d090: 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  osed..    {..   
d0a0: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
d0b0: 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20  _isClosed; }..  
d0c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
d0d0: 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  c abstract bool 
d0e0: 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b  IsInvalid..    {
d0f0: 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20  ..      get;..  
d100: 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65    }....  }....#e
d110: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  ndif....    ////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d160: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
d170: 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e  region SQLiteCon
d180: 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c  nectionHandle Cl
d190: 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64  ass..    // Hand
d1a0: 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65  les the unmanage
d1b0: 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74  d database point
d1c0: 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73  er, and provides
d1d0: 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20   finalization.. 
d1e0: 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f     // support fo
d1f0: 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72  r it...    inter
d200: 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
d210: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d220: 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  nHandle : Critic
d230: 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
d240: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
d250: 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52  DARD && !PLATFOR
d260: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d270: 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
d280: 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f  rnal delegate vo
d290: 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  id CloseConnecti
d2a0: 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  onCallback(..   
d2b0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
d2c0: 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
d2d0: 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b  hdl, IntPtr db);
d2e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
d2f0: 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73  rnal static Clos
d300: 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
d310: 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74  ack closeConnect
d320: 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ion =..         
d330: 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
d340: 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a  oseConnection;..
d350: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
d360: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
d3b0: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
d3c0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
d3d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
d3e0: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
d3f0: 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
d400: 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
d410: 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
d440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d460: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
d470: 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
d480: 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
d490: 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  tr(SQLiteConnect
d4a0: 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20  ionHandle db).. 
d4b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d4c0: 20 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20        if (db != 
d4d0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
d4e0: 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
d4f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d500: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
d510: 20 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79       lock (db.sy
d520: 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
d530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d540: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d550: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
d560: 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  b.handle;..     
d570: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
d580: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
d590: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
d5a0: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
d5b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d5c0: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
d610: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
d620: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
d630: 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 29  andle(IntPtr db)
d640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
d650: 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
d660: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
d670: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d680: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
d690: 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
d6a0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
d6b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d6c0: 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
d6d0: 64 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  db);..          
d6e0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
d6f0: 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f  ////////////////
d720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d740: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
d750: 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
d760: 63 74 69 6f 6e 48 61 6e 64 6c 65 28 29 0d 0a 20  ctionHandle().. 
d770: 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
d780: 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
d790: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
d7a0: 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
d7b0: 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
d7c0: 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d  cked.Increment(.
d7d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d7e0: 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
d7f0: 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74  eMethods.connect
d800: 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  ionCount);..#end
d810: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
d820: 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
d850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d870: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  ....        prot
d880: 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62  ected override b
d890: 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
d8a0: 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
d8c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
d8d0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
d8e0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
d8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d900: 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64  IntPtr localHand
d910: 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64  le = Interlocked
d920: 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20  .Exchange(..    
d930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d940: 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50  ref handle, IntP
d950: 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66  tr.Zero);....#if
d960: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
d970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d980: 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c    if (localHandl
d990: 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
d9a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d9b0: 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e 6e         closeConn
d9c0: 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63  ection(this, loc
d9d0: 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73  alHandle);..#els
d9e0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
d9f0: 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
da00: 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
da10: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
da20: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
da30: 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  se.CloseConnecti
da40: 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61  on(this, localHa
da50: 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndle);..#endif..
da60: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
da70: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
da80: 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
da90: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
daa0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
dab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dac0: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
dad0: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
dae0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
daf0: 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
db00: 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d  eConnection: {0}
db10: 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
db20: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
db30: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
db40: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
db50: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
db60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db70: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
db80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db90: 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
dba0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dbb0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
dbc0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
dbd0: 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
dbe0: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
dbf0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
dc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc10: 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
dc20: 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  CloseConnection(
dc30: 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  this, handle);..
dc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc50: 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
dc60: 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
dc70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dc80: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
dc90: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
dca0: 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
dcb0: 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
dcc0: 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
dcd0: 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
dce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dcf0: 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
dd00: 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74  eMethods.connect
dd10: 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  ionCount);..#end
dd20: 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
dd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
dd40: 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
dd50: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
dd60: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
dd70: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
dd80: 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
dd90: 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
dda0: 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
ddb0: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
ddc0: 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
ddd0: 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
dde0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
ddf0: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
de00: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
de10: 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
de20: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
de30: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
de40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de50: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
de60: 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(String.Forma
de70: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
de80: 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
de90: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30  seConnection: {0
dea0: 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31  }, exception: {1
deb0: 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
dec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e               han
ded0: 64 6c 65 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20  dle, e));..     
dee0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
def0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
df00: 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
df10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
df20: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
df30: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
df40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
df50: 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
df60: 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
df70: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
df80: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
df90: 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
dfa0: 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
dfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
dfc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dfd0: 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
dfe0: 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
dff0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
e000: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
e010: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
e020: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
e030: 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
e040: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
e050: 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
e060: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e070: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
e0c0: 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
e0d0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
e0e0: 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
e0f0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
e100: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e110: 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
e120: 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
e130: 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
e140: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
e150: 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
e160: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
e170: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
e180: 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
e1d0: 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
e1e0: 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
e1f0: 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
e200: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
e210: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
e220: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
e230: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
e250: 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
e260: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
e270: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
e290: 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
e2a0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
e2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
e2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
e2d0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
e2e0: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
e310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
e330: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
e340: 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
e350: 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
e360: 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
e370: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
e380: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
e3a0: 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
e3b0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
e3c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e3d0: 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
e3e0: 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
e400: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
e410: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
e420: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
e480: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
e490: 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20  StatementHandle 
e4a0: 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72  Class..    // Pr
e4b0: 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
e4c0: 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ion support for 
e4d0: 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65  unmanaged SQLite
e4e0: 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20   statements...  
e4f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
e500: 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74  d class SQLiteSt
e510: 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20  atementHandle : 
e520: 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
e530: 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
e540: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e550: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
e560: 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
e570: 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
e580: 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
e590: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
e5a0: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
e5f0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
e600: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
e610: 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20  ndle cnn;....   
e620: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
e650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e670: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
e680: 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
e690: 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
e6a0: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
e6b0: 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20  ndle stmt)..    
e6c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e6d0: 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e     if (stmt != n
e6e0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
e6f0: 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
e700: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
e710: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
e720: 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73      lock (stmt.s
e730: 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
e740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e750: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e760: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e770: 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20  stmt.handle;..  
e780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
e790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
e7a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
e7b0: 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
e7c0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
e7d0: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
e800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
e820: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
e830: 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  l SQLiteStatemen
e840: 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  tHandle(SQLiteCo
e850: 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
e860: 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  nn, IntPtr stmt)
e870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
e880: 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
e890: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
e8a0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e8b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
e8c0: 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
e8d0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
e8e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e8f0: 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d        this.cnn =
e900: 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20   cnn;..         
e910: 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
e920: 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20  (stmt);..       
e930: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e940: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e990: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
e9a0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74  private SQLiteSt
e9b0: 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d  atementHandle().
e9c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
e9d0: 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
e9e0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
e9f0: 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
ea00: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
ea10: 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
ea20: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
ea30: 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
ea40: 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65  iveMethods.state
ea50: 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  mentCount);..#en
ea60: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
ea70: 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f  ////////////////
eaa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eac0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
ead0: 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
eae0: 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
eaf0: 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
eb00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
eb10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
eb20: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
eb30: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
eb40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eb50: 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
eb60: 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
eb70: 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
eb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb90: 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
eba0: 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
ebb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
ebc0: 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
ebd0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
ebe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebf0: 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
ec00: 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28  nalizeStatement(
ec10: 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
ec20: 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
ec30: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
ec40: 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
ec50: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
ec60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec70: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ec80: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
ec90: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
eca0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
ecc0: 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
ecd0: 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61  t: {0}", localHa
ece0: 6e 64 6c 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  ndle));..       
ecf0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
ed00: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
ed10: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
ed20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ed30: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
ed40: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
ed50: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
ed60: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
ed70: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ed80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed90: 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
eda0: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
edb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
edc0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
edd0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
ede0: 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74  eBase.FinalizeSt
edf0: 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e  atement(cnn, han
ee00: 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
ee20: 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
ee30: 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
ee40: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
ee50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
ee60: 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
ee70: 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
ee80: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
ee90: 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
eea0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
eeb0: 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61          ref Unsa
eec0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
eed0: 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
eee0: 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45  ..#endif..#if DE
eef0: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
ef00: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
ef10: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
ef20: 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
ef30: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
ef40: 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
ef50: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ef60: 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
ef70: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
ef80: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
ef90: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
efa0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
efb0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
efc0: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
efd0: 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
efe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
eff0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
f000: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f010: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
f020: 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
f030: 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
f040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f050: 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65    "FinalizeState
f060: 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70  ment: {0}, excep
f070: 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  tion: {1}",..   
f080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f090: 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29       handle, e))
f0a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
f0b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
f0c0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
f0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0f0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
f100: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
f110: 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
f120: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
f130: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
f140: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f150: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
f160: 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
f170: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
f180: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f190: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
f1a0: 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
f1b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
f1c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
f1d0: 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
f1e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
f1f0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
f200: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
f210: 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
f220: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
f230: 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f  ////////////////
f260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f280: 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
f290: 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
f2a0: 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
f2b0: 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
f2c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f2d0: 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
f2e0: 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d  cked.Decrement(.
f2f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f300: 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
f310: 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65  eMethods.stateme
f320: 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  ntCount);..     
f330: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
f340: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
f370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
f390: 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
f3a0: 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
f3b0: 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
f3c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f3d0: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
f3e0: 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
f3f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
f400: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
f410: 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
f420: 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
f430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f450: 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
f460: 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
f470: 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
f480: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
f490: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
f4a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4f0: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
f500: 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
f510: 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
f520: 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
f530: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
f540: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f550: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
f560: 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
f570: 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
f580: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f590: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f5a0: 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
f5b0: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
f5c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
f5d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
f5e0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
f5f0: 0d 0a 20 20 20 20 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 2f 2f  ////////////////
f620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f640: 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
f650: 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
f660: 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
f670: 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
f680: 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
f690: 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
f6a0: 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65  Lite backup obje
f6b0: 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cts...    intern
f6c0: 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
f6d0: 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
f6e0: 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
f6f0: 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
f700: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f710: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
f720: 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
f730: 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
f740: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
f750: 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
f760: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
f790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
f7b0: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
f7c0: 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
f7d0: 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a  ionHandle cnn;..
f7e0: 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f  ////////////////
f810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f830: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
f840: 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
f850: 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
f860: 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75 70  Ptr(SQLiteBackup
f870: 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a  Handle backup)..
f880: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f890: 20 20 20 20 20 20 20 69 66 20 28 62 61 63 6b 75         if (backu
f8a0: 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  p != null)..    
f8b0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
f8c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f8d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
f8e0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
f8f0: 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29  backup.syncRoot)
f900: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
f910: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f930: 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e 68   return backup.h
f940: 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
f950: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
f960: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
f970: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
f980: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
f990: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
f9f0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
fa00: 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53  teBackupHandle(S
fa10: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
fa20: 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
fa30: 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20  r backup)..     
fa40: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
fa50: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
fa60: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
fa70: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
fa80: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
fa90: 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
fab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
fac0: 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
fad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fae0: 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75 70  SetHandle(backup
faf0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
fb00: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
fb10: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
fb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
fb60: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
fb70: 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  te SQLiteBackupH
fb80: 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
fb90: 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
fba0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
fbb0: 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
fbc0: 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
fbd0: 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
fbe0: 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ncrement(..     
fbf0: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
fc00: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
fc10: 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ds.backupCount);
fc20: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
fc30: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc80: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
fc90: 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
fca0: 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
fcb0: 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
fcc0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
fcd0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
fce0: 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
fcf0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
fd00: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
fd10: 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
fd20: 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
fd30: 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
fd40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fd50: 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
fd60: 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
fd70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
fd80: 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
fd90: 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
fda0: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
fdb0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
fdc0: 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28  se.FinishBackup(
fdd0: 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
fde0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
fdf0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
fe00: 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
fe10: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
fe20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe30: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fe40: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
fe50: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
fe60: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
fe70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
fe80: 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30  FinishBackup: {0
fe90: 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
fea0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
feb0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
fec0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
fed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
fee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fef0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
ff00: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
ff10: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
ff20: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
ff30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ff40: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
ff50: 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
ff60: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
ff70: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
ff80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff90: 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
ffa0: 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e  .FinishBackup(cn
ffb0: 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  n, handle);..   
ffc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ffd0: 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
ffe0: 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
fff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10000 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
10010 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
10020 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
10030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10040 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
10050 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20  crement(..      
10060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10070 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f UnsafeNativeMe
10080 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e  thods.backupCoun
10090 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
100a0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
100b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
100c0 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
100d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
100e0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
100f0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
10100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
10110 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
10120 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
10130 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
10140 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
10150 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
10160 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
10170 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
10180 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
10190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
101a0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
101b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
101c0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
101d0 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
101e0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
101f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10200 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b       "FinishBack
10210 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  up: {0}, excepti
10220 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10240 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d     handle, e));.
10250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10260 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
10270 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
10280 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
102a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
102b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
102c0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
102d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
102e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
102f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
10300 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
10310 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
10320 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
10330 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10340 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
10350 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
10360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10370 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
10380 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
10390 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
103a0 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
103b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
103c0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
103d0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
103e0 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
10410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
10430 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
10440 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
10450 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
10460 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
10470 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10480 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
10490 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
104a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
104b0 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
104c0 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75  ethods.backupCou
104d0 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
104e0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
104f0 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
10540 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
10550 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
10560 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
10570 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
10580 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
10590 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
105a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
105b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105c0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
105d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
105e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
105f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10600 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
10610 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
10620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10630 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
10640 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
10650 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
10680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
106a0 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
106b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
106c0 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
106d0 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
106e0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
106f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10700 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
10710 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
10720 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
10730 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10740 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
10750 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
10760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
10770 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
10780 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
10790 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a        endregion..}..