System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact c2b836627a792b36083b6c2c1c91e37d31286479:


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 20 28 74 6f 0d 0a 20 20 20 20 20 20 20 20 20  t (to..         
14d0: 20 2f 2f 20 20 20 20 20 20 20 61 6e 79 74 68 69   //       anythi
14e0: 6e 67 29 2c 20 73 6b 69 70 20 61 6c 6c 20 6f 75  ng), skip all ou
14f0: 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65 20 61  r special code a
1500: 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75 72 6e  nd simply return
1510: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
1520: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45  .          if (E
1530: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e  nvironment.GetEn
1540: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
1550: 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c  e("No_PreLoadSQL
1560: 69 74 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ite") != null)..
1570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1580: 74 75 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  turn;..#endif...
1590: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
15a0: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
15b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
15d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
15e0: 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73 75 72  / TODO: Make sur
15f0: 65 20 74 68 69 73 20 6c 69 73 74 20 69 73 20 75  e this list is u
1600: 70 64 61 74 65 64 20 69 66 20 74 68 65 20 73 75  pdated if the su
1610: 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20 20  pported..       
1620: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1630: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
1640: 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61 6e 64  ecture names and
1650: 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  /or platform nam
1660: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
1670: 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61 6e 67    //       chang
1680: 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es...           
1690: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
16a0: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
16b0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
16c0: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
16d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
16f0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1700: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1710: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6d  TE: Create the m
1720: 61 70 20 6f 66 20 70 72 6f 63 65 73 73 6f 72 20  ap of processor 
1730: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
1740: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
1750: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
1760: 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73  o platform names
1770: 20 75 73 69 6e 67 20 61 20 63 61 73 65 2d 69 6e   using a case-in
1780: 73 65 6e 73 69 74 69 76 65 20 73 74 72 69 6e 67  sensitive string
1790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6d      //       com
17b0: 70 61 72 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  parer...        
17c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
17d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17e0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
17f0: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
1800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1810: 20 20 20 20 20 20 20 20 6e 65 77 20 44 69 63 74          new Dict
1820: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73  ionary<string, s
1830: 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20 20 20 20  tring>(..       
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1850: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 65     StringCompare
1860: 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  r.OrdinalIgnoreC
1870: 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ase);....       
1880: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18a0: 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 75 70 20   // NOTE: Setup 
18b0: 74 68 65 20 6c 69 73 74 20 6f 66 20 70 6c 61 74  the list of plat
18c0: 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73 73 6f 63  form names assoc
18d0: 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
18e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
18f0: 20 20 20 20 20 20 20 74 68 65 20 73 75 70 70 6f         the suppo
1900: 72 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  rted processor a
1910: 72 63 68 69 74 65 63 74 75 72 65 73 2e 0d 0a 20  rchitectures... 
1920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1930: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1940: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
1950: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
1960: 66 6f 72 6d 73 2e 41 64 64 28 22 78 38 36 22 2c  forms.Add("x86",
1970: 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20 20 20 20   "Win32");..    
1980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
1990: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
19a0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
19b0: 28 22 41 4d 44 36 34 22 2c 20 22 78 36 34 22 29  ("AMD64", "x64")
19c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
19d0: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
19e0: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
19f0: 72 6d 73 2e 41 64 64 28 22 49 41 36 34 22 2c 20  rms.Add("IA64", 
1a00: 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a 20 20 20  "Itanium");..   
1a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
1a20: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
1a30: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
1a40: 64 28 22 41 52 4d 22 2c 20 22 57 69 6e 43 45 22  d("ARM", "WinCE"
1a50: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1a60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1a70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1a80: 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47         // BUGBUG
1a90: 3a 20 57 68 61 74 20 61 62 6f 75 74 20 6f 74 68  : What about oth
1aa0: 65 72 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  er application d
1ab0: 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20 20 20 20 20  omains?..       
1ac0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1ad0: 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 53 51           if (_SQ
1ae0: 4c 69 74 65 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e  LiteModule == In
1af0: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 53                _S
1b10: 51 4c 69 74 65 4d 6f 64 75 6c 65 20 3d 20 50 72  QLiteModule = Pr
1b20: 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 6e  eLoadSQLiteDll(n
1b30: 75 6c 6c 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20  ull, null);..   
1b40: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1b50: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
1b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1bb0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1bc0: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
1bd0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 61 73   returns the bas
1be0: 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74  e directory of t
1bf0: 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
1c00: 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f  cation..      //
1c10: 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  / domain...     
1c20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1c30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
1c40: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
1c50: 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  The base directo
1c60: 72 79 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  ry for the curre
1c70: 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
1c80: 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20  omain -OR- null 
1c90: 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  if it..      ///
1ca0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
1cb0: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
1cc0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1cd0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1ce0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 42 61 73  ic string GetBas
1cf0: 65 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  eDirectory()..  
1d00: 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
1d10: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d20: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
1d30: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
1d40: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22  / NOTE: If the "
1d50: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61  PreLoadSQLite_Ba
1d60: 73 65 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76  seDirectory" env
1d70: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
1d80: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
1d90: 20 20 20 20 20 20 69 73 20 73 65 74 2c 20 75 73        is set, us
1da0: 65 20 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f  e it verbatim fo
1db0: 72 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  r the base direc
1dc0: 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  tory...         
1dd0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
1de0: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
1df0: 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65  = Environment.Ge
1e00: 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
1e10: 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  able(..         
1e20: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
1e30: 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72  ite_BaseDirector
1e40: 79 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y");....        
1e50: 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
1e60: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1e70: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
1e80: 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20  irectory;....   
1e90: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1ea0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
1eb0: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
1ec0: 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44  ite_UseAssemblyD
1ed0: 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f  irectory" enviro
1ee0: 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
1ef0: 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62   //       variab
1f00: 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e  le is set (to an
1f10: 79 74 68 69 6e 67 29 2c 20 61 74 74 65 6d 70 74  ything), attempt
1f20: 20 74 6f 20 75 73 65 20 74 68 65 20 64 69 72 65   to use the dire
1f30: 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20  ctory..         
1f40: 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 74 61 69   //       contai
1f50: 6e 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74  ning the current
1f60: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73  ly executing ass
1f70: 65 6d 62 6c 79 20 28 69 2e 65 2e 0d 0a 20 20 20  embly (i.e...   
1f80: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1f90: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
1fa0: 74 65 29 20 69 6e 74 73 65 61 64 20 6f 66 20 74  te) intsead of t
1fb0: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  he application d
1fc0: 6f 6d 61 69 6e 20 62 61 73 65 0d 0a 20 20 20 20  omain base..    
1fd0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
1fe0: 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20  irectory...     
1ff0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2000: 20 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65     if (Environme
2010: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
2020: 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20  tVariable(..    
2030: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
2040: 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
2050: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
2060: 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  ) != null)..    
2070: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2080: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
2090: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
20a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
20b0: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
20c0: 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45   = Assembly.GetE
20d0: 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79  xecutingAssembly
20e0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
20f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
2100: 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  embly != null)..
2110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2120: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2130: 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63             direc
2140: 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44  tory = Path.GetD
2150: 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 61 73 73  irectoryName(ass
2160: 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 29 3b  embly.Location);
2170: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2180: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
2190: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
21a0: 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d  pty(directory)).
21b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
21d0: 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  n directory;..  
21e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2200: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2210: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2220: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2230: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
2240: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
2250: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2260: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2270: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2280: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68      // NOTE: Oth
2290: 65 72 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b  erwise, fallback
22a0: 20 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 62 61   on using the ba
22b0: 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20  se directory of 
22c0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
22d0: 2f 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20  /       current 
22e0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
22f0: 69 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  in...          /
2300: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  /..          ret
2310: 75 72 6e 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75  urn AppDomain.Cu
2320: 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65  rrentDomain.Base
2330: 44 69 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73  Directory;..#els
2340: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73 73  e..          Ass
2350: 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d  embly assembly =
2360: 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65   Assembly.GetExe
2370: 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29  cutingAssembly()
2380: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
2390: 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e  f (assembly == n
23a0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
23b0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
23c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73  ....          As
23d0: 73 65 6d 62 6c 79 4e 61 6d 65 20 61 73 73 65 6d  semblyName assem
23e0: 62 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62  blyName = assemb
23f0: 6c 79 2e 47 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d  ly.GetName();...
2400: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61  .          if (a
2410: 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e  ssemblyName == n
2420: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2430: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
2440: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72  ....          tr
2450: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
2460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2470: 74 75 72 6e 20 50 61 74 68 2e 47 65 74 44 69 72  turn Path.GetDir
2480: 65 63 74 6f 72 79 4e 61 6d 65 28 61 73 73 65 6d  ectoryName(assem
2490: 62 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73 65  blyName.CodeBase
24a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
24b0: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
24c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
24d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
24e0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
24f0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2500: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
2510: 6c 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  l;..#endif..    
2520: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
2530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2570: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
2580: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2590: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
25a0: 73 20 69 66 20 74 68 65 20 64 79 6e 61 6d 69 63  s if the dynamic
25b0: 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69   link library fi
25c0: 6c 65 20 6e 61 6d 65 20 72 65 71 75 69 72 65 73  le name requires
25d0: 20 61 20 73 75 66 66 69 78 0d 0a 20 20 20 20 20   a suffix..     
25e0: 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20 69 74   /// and adds it
25f0: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
2600: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2610: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2620: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
2630: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
2640: 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20  // The original 
2650: 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62  dynamic link lib
2660: 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20 74  rary file name t
2670: 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20  o inspect...    
2680: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2690: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
26a0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
26b0: 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20  he dynamic link 
26c0: 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d  library file nam
26d0: 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f 64 69  e, possibly modi
26e0: 66 69 65 64 20 74 6f 20 69 6e 63 6c 75 64 65 20  fied to include 
26f0: 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78  an..      /// ex
2700: 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  tension...      
2710: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2720: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
2730: 61 74 69 63 20 73 74 72 69 6e 67 20 46 69 78 55  atic string FixU
2740: 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a 20  pDllFileName(.. 
2750: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
2760: 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  fileName..      
2770: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
2780: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
2790: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
27a0: 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  pty(fileName))..
27b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
27c0: 20 20 20 20 20 20 20 20 20 20 20 50 6c 61 74 66             Platf
27d0: 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49 64  ormID platformId
27e0: 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f   = Environment.O
27f0: 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72  SVersion.Platfor
2800: 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  m;....          
2810: 20 20 20 20 69 66 20 28 28 70 6c 61 74 66 6f 72      if ((platfor
2820: 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49  mId == PlatformI
2830: 44 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20  D.Win32S) ||..  
2840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2850: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
2860: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 57  latformID.Win32W
2870: 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a 20 20 20 20  indows) ||..    
2880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
2890: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
28a0: 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 4e 54 29  tformID.Win32NT)
28b0: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
28c0: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
28d0: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
28e0: 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20 20 20 20  .WinCE))..      
28f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2900: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2910: 28 21 66 69 6c 65 4e 61 6d 65 2e 45 6e 64 73 57  (!fileName.EndsW
2920: 69 74 68 28 44 6c 6c 46 69 6c 65 45 78 74 65 6e  ith(DllFileExten
2930: 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  sion,..         
2940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2950: 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
2960: 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
2970: 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
2980: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a0: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
29b0: 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e  e + DllFileExten
29c0: 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  sion;..         
29d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
29e0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
29f0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2a00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c        return fil
2a10: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  eName;..      }.
2a20: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
2a80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
2a90: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
2aa0: 65 74 75 72 6e 73 20 74 68 65 20 70 72 6f 63 65  eturns the proce
2ab0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
2ac0: 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
2ad0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63  ..      /// proc
2ae0: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
2af0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2b00: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
2b20: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
2b30: 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
2b40: 72 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52  rent process -OR
2b50: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20  - null if it..  
2b60: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
2b70: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 20 20 41  e determined.  A
2b80: 6c 77 61 79 73 20 72 65 74 75 72 6e 73 20 61 6e  lways returns an
2b90: 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20 77 68   empty string wh
2ba0: 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 0d 0a 20  en running on.. 
2bb0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 2e 4e 45       /// the .NE
2bc0: 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
2bd0: 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ork...      /// 
2be0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2bf0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2c00: 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65   string GetProce
2c10: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
2c20: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66  ()..      {..#if
2c30: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2c40: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2c50: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2c60: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
2c70: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
2c80: 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
2c90: 68 69 74 65 63 74 75 72 65 22 20 65 6e 76 69 72  hitecture" envir
2ca0: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  onment..        
2cb0: 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61    //       varia
2cc0: 62 6c 65 20 69 73 20 73 65 74 2c 20 75 73 65 20  ble is set, use 
2cd0: 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
2ce0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
2cf0: 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  essor..         
2d00: 20 2f 2f 20 20 20 20 20 20 20 61 72 63 68 69 74   //       archit
2d10: 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ecture...       
2d20: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2d30: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
2d40: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
2d50: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
2d60: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
2d70: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2d80: 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74     "PreLoadSQLit
2d90: 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
2da0: 74 65 63 74 75 72 65 22 29 3b 0d 0a 0d 0a 20 20  tecture");....  
2db0: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
2dc0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
2dd0: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
2de0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2df0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
2e00: 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20  ecture;....     
2e10: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2e20: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69     // BUGBUG: Wi
2e30: 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20 62  ll this always b
2e40: 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20  e reliable?..   
2e50: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2e60: 20 20 20 20 20 72 65 74 75 72 6e 20 45 6e 76 69       return Envi
2e70: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
2e80: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 50  onmentVariable(P
2e90: 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
2ea0: 43 54 55 52 45 29 3b 0d 0a 23 65 6c 73 65 0d 0a  CTURE);..#else..
2eb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2ec0: 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55          // BUGBU
2ed0: 47 3a 20 4e 6f 20 77 61 79 20 74 6f 20 64 65 74  G: No way to det
2ee0: 65 72 6d 69 6e 65 20 74 68 69 73 20 76 61 6c 75  ermine this valu
2ef0: 65 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  e on the .NET Co
2f00: 6d 70 61 63 74 0d 0a 20 20 20 20 20 20 20 20 20  mpact..         
2f10: 20 2f 2f 20 20 20 20 20 20 20 20 20 46 72 61 6d   //         Fram
2f20: 65 77 6f 72 6b 20 28 72 75 6e 6e 69 6e 67 20 6f  ework (running o
2f30: 6e 20 57 69 6e 64 6f 77 73 20 43 45 2c 20 65 74  n Windows CE, et
2f40: 63 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  c)...          /
2f50: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  /..          ret
2f60: 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74 79  urn String.Empty
2f70: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
2f80: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
2f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
2fe0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2ff0: 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65 20    /// Given the 
3000: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
3010: 65 63 74 75 72 65 2c 20 72 65 74 75 72 6e 73 20  ecture, returns 
3020: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
3030: 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20  platform...     
3040: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3050: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
3060: 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f  m name="processo
3070: 72 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d  rArchitecture">.
3080: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70  .      /// The p
3090: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
30a0: 63 74 75 72 65 20 74 6f 20 62 65 20 74 72 61 6e  cture to be tran
30b0: 73 6c 61 74 65 64 20 74 6f 20 61 20 70 6c 61 74  slated to a plat
30c0: 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
30d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
30e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
30f0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
3100: 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  he platform name
3110: 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
3120: 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  ed processor arc
3130: 68 69 74 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e  hitecture -OR- n
3140: 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  ull..      /// i
3150: 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  f it cannot be d
3160: 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
3170: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
3180: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
3190: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
31a0: 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a  tPlatformName(..
31b0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
31c0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
31d0: 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20  ecture..        
31e0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
31f0: 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
3200: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
3210: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
3220: 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20  ecture))..      
3230: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
3240: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
3250: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
3260: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
3270: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3280: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
3290: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
32a0: 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d  tforms == null).
32b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32c0: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
32d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
32e0: 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d   string platform
32f0: 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Name;....       
3300: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
3310: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
3320: 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74  Platforms.TryGet
3330: 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
3340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
3350: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
3360: 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72  ure, out platfor
3370: 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  mName))..       
3380: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3390: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
33a0: 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b  rn platformName;
33b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
33d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
33e0: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
33f0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3440: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
3450: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
3460: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
3470: 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
3480: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
3490: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65  based on the spe
34a0: 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f  cified..      //
34b0: 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20  / directory and 
34c0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
34d0: 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ecture...      /
34e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
34f0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
3500: 6e 61 6d 65 3d 22 64 69 72 65 63 74 6f 72 79 22  name="directory"
3510: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
3520: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
3530: 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f 72  to use, null for
3540: 20 64 65 66 61 75 6c 74 20 28 74 68 65 20 62 61   default (the ba
3550: 73 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 0d  se directory of.
3560: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63  .      /// the c
3570: 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
3580: 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68 69  on domain).  Thi
3590: 73 20 64 69 72 65 63 74 6f 72 79 20 73 68 6f 75  s directory shou
35a0: 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  ld contain the..
35b0: 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
35c0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
35d0: 20 73 70 65 63 69 66 69 63 20 73 75 62 2d 64 69   specific sub-di
35e0: 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20 20  rectories...    
35f0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
3600: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
3610: 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72   name="processor
3620: 41 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a  Architecture">..
3630: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65        /// The re
3640: 71 75 65 73 74 65 64 20 70 72 6f 63 65 73 73 6f  quested processo
3650: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20  r architecture, 
3660: 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74  null for default
3670: 20 28 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f   (the..      ///
3680: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
3690: 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63  tecture of the c
36a0: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 29 2e  urrent process).
36b0: 20 20 54 68 69 73 20 63 61 6c 6c 65 72 20 73 68    This caller sh
36c0: 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ould..      /// 
36d0: 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73 20 73 70  almost always sp
36e0: 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20 74  ecify null for t
36f0: 68 69 73 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a  his parameter...
3700: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
3710: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
3720: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
3730: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
3740: 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20 72  dule handle as r
3750: 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64 4c  eturned by LoadL
3760: 69 62 72 61 72 79 20 2d 4f 52 2d 20 49 6e 74 50  ibrary -OR- IntP
3770: 74 72 2e 5a 65 72 6f 0d 0a 20 20 20 20 20 20 2f  tr.Zero..      /
3780: 2f 2f 20 69 66 20 74 68 65 20 6c 6f 61 64 69 6e  // if the loadin
3790: 67 20 66 61 69 6c 73 20 66 6f 72 20 61 6e 79 20  g fails for any 
37a0: 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f  reason...      /
37b0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
37c0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
37d0: 74 69 63 20 49 6e 74 50 74 72 20 50 72 65 4c 6f  tic IntPtr PreLo
37e0: 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20  adSQLiteDll(..  
37f0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
3800: 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20  irectory,..     
3810: 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63       string proc
3820: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
3830: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
3840: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3850: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3860: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
3870: 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65 20   specified base 
3880: 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c  directory is nul
3890: 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66 61 75  l, use the defau
38a0: 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lt...          /
38b0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
38c0: 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  (directory == nu
38d0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
38e0: 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47     directory = G
38f0: 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28  etBaseDirectory(
3900: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
3910: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
3920: 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
3930: 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
3940: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2c   base directory,
3950: 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20   stop now...    
3960: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
3970: 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72      if (director
3980: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
3990: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
39a0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
39b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
39c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
39d0: 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76 65 20  : If the native 
39e0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 65  SQLite library e
39f0: 78 69 73 74 73 20 69 6e 20 74 68 65 20 62 61 73  xists in the bas
3a00: 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
3a10: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
3a20: 69 74 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f 77  itself, stop now
3a30: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
3a40: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
3a50: 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78  g fileName = Fix
3a60: 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61  UpDllFileName(Pa
3a70: 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63  th.Combine(direc
3a80: 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
3a90: 20 20 20 20 20 53 51 4c 49 54 45 5f 44 4c 4c 29       SQLITE_DLL)
3aa0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
3ab0: 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28  if (File.Exists(
3ac0: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
3ad0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3ae0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
3af0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
3b00: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
3b10: 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69  : If the specifi
3b20: 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  ed processor arc
3b30: 68 69 74 65 63 74 75 72 65 20 69 73 20 6e 75 6c  hitecture is nul
3b40: 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20  l, use the..    
3b50: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
3b60: 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20  efault...       
3b70: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3b80: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
3b90: 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75  chitecture == nu
3ba0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
3bb0: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
3bc0: 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 50 72  itecture = GetPr
3bd0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
3be0: 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ure();....      
3bf0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3c00: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65    // NOTE: If we
3c10: 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79   failed to query
3c20: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
3c30: 72 63 68 69 74 65 63 74 75 72 65 2c 20 73 74 6f  rchitecture, sto
3c40: 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
3c50: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
3c60: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
3c70: 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
3c80: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
3c90: 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
3ca0: 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
3cb0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3cc0: 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20   // NOTE: Build 
3cd0: 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e  the full path an
3ce0: 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20  d file name for 
3cf0: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
3d00: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
3d10: 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73        library us
3d20: 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ing the processo
3d30: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e  r architecture n
3d40: 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ame...          
3d50: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69  //..          fi
3d60: 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c  leName = FixUpDl
3d70: 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43  lFileName(Path.C
3d80: 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f 6d 62  ombine(Path.Comb
3d90: 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a  ine(directory,..
3da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
3db0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
3dc0: 75 72 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c  ure), SQLITE_DLL
3dd0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
3de0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
3df0: 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66  / NOTE: If the f
3e00: 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20 6f  ile name based o
3e10: 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  n the processor 
3e20: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
3e30: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
3e40: 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74 72  is not found, tr
3e50: 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73 6f  y using the asso
3e60: 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d 20  ciated platform 
3e70: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
3e80: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
3e90: 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28  f (!File.Exists(
3ea0: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
3eb0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3ec0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
3ed0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
3ee0: 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72 61  : Attempt to tra
3ef0: 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63 65  nslate the proce
3f00: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
3f10: 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20 20  e to a..        
3f20: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
3f30: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
3f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
3f50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
3f60: 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61  tring platformNa
3f70: 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72 6d  me = GetPlatform
3f80: 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41 72  Name(processorAr
3f90: 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a  chitecture);....
3fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3fb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3fc0: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66  // NOTE: If we f
3fd0: 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c 61  ailed to transla
3fe0: 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20  te the platform 
3ff0: 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  name, stop now..
4000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4010: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4020: 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61 6d   if (platformNam
4030: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
4040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
4050: 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
4060: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
4070: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4080: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75       // NOTE: Bu
4090: 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74  ild the full pat
40a0: 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20  h and file name 
40b0: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
40c0: 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20  QLite..         
40d0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
40e0: 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20  brary using the 
40f0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
4100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4120: 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
4130: 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68  DllFileName(Path
4140: 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e 43 6f  .Combine(Path.Co
4150: 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c  mbine(directory,
4160: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4170: 20 20 20 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65      platformName
4180: 29 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b  ), SQLITE_DLL));
4190: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
41a0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
41b0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
41c0: 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f  the file does no
41d0: 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72  t exist, skip tr
41e0: 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e  ying to load it.
41f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4200: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4210: 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73    if (!File.Exis
4220: 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
4230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4240: 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
4250: 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
4260: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74  }....          t
4270: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
4280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
4290: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
42a0: 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65   // NOTE: Show e
42b0: 78 61 63 74 6c 79 20 77 68 65 72 65 20 77 65 20  xactly where we 
42c0: 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f  are trying to lo
42d0: 61 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  ad the native.. 
42e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
42f0: 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62        SQLite lib
4300: 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20  rary from...    
4310: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 23 69            //..#i
4320: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
4330: 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
4340: 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  AD..            
4350: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
4360: 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
4370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4380: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
4390: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
43a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
43b0: 20 20 20 22 54 72 79 69 6e 67 20 74 6f 20 6c 6f     "Trying to lo
43c0: 61 64 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  ad native SQLite
43d0: 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22   library \"{0}\"
43e0: 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ...",..         
43f0: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
4400: 65 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  e));..#endif....
4410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4430: 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
4440: 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
4450: 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54 68  ive library.  Th
4460: 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d 0a  is will either..
4470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4480: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 20         return a 
4490: 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f 64  valid native mod
44a0: 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74 75  ule handle, retu
44b0: 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d  rn IntPtr.Zero,.
44c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
44d0: 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f 77  /       or throw
44e0: 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 0d 0a   an exception...
44f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4510: 72 65 74 75 72 6e 20 4c 6f 61 64 4c 69 62 72 61  return LoadLibra
4520: 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20  ry(fileName);.. 
4530: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
4540: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
4550: 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
4560: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
4570: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
4580: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
4590: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
45a0: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
45b0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
45c0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
45d0: 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a   TRACE_PRELOAD..
45e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
45f0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
4600: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
4610: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
4620: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
4630: 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61 62  OTE: First, grab
4640: 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32 20   the last Win32 
4650: 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a 20  error number... 
4660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4670: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
4680: 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74 45         int lastE
4690: 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e 47  rror = Marshal.G
46a0: 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f 72  etLastWin32Error
46b0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
46c0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
46d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
46e0: 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65  / NOTE: Show whe
46f0: 72 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  re we failed to 
4700: 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
4710: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
4720: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
4730: 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20     library from 
4740: 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57  along with the W
4750: 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20  in32 error code 
4760: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
4770: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4780: 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d  exception inform
4790: 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
47a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47c0: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
47d0: 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
47e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47f0: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
4800: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
4810: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4820: 20 20 20 20 20 20 20 20 20 22 46 61 69 6c 65 64           "Failed
4830: 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20   to load native 
4840: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c  SQLite library \
4850: 22 7b 30 7d 5c 22 20 22 20 2b 0d 0a 20 20 20 20  "{0}\" " +..    
4860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4870: 20 20 22 28 67 65 74 4c 61 73 74 45 72 72 6f 72    "(getLastError
4880: 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a   = {1}): {2}",..
4890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48a0: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20        fileName, 
48b0: 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b 20  lastError, e)); 
48c0: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
48d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
48e0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
48f0: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
4900: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
4910: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
4920: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
4930: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
4940: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
4950: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
4960: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
4970: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
4980: 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64  ndif..      #end
4990: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
49a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
49f0: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
4a00: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
4a10: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
4a20: 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   On the .NET Com
4a30: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20  pact Framework, 
4a40: 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65 72  the native inter
4a50: 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73 74  op assembly must
4a60: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62  ..    //       b
4a70: 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20 69  e used because i
4a80: 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65 72  t provides sever
4a90: 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20 74  al workarounds t
4aa0: 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d 0a  o .NET Compact..
4ab0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72 61      //       Fra
4ac0: 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69 6f  mework limitatio
4ad0: 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f 72  ns important for
4ae0: 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69 6f   proper operatio
4af0: 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a 20  n of the core.. 
4b00: 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73 74     //       Syst
4b10: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 66  em.Data.SQLite f
4b20: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65 2e  unctionality (e.
4b30: 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74 6f  g. being able to
4b40: 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20 20   bind..    //   
4b50: 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20 61      parameters a
4b60: 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e  nd handle column
4b70: 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65 73   values of types
4b80: 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62 6c   Int64 and Doubl
4b90: 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  e)...    //..   
4ba0: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
4bb0: 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
4bc0: 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65  L = "SQLite.Inte
4bd0: 72 6f 70 2e 30 38 35 2e 64 6c 6c 22 3b 0d 0a 23  rop.085.dll";..#
4be0: 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  elif SQLITE_STAN
4bf0: 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  DARD..    //..  
4c00: 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72    // NOTE: Other
4c10: 77 69 73 65 2c 20 69 66 20 74 68 65 20 73 74 61  wise, if the sta
4c20: 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62  ndard SQLite lib
4c30: 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64 2c  rary is enabled,
4c40: 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f   use it...    //
4c50: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63 6f  ..    private co
4c60: 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
4c70: 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33  E_DLL = "sqlite3
4c80: 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f 49 4e  ";..#elif USE_IN
4c90: 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20 20 2f  TEROP_DLL..    /
4ca0: 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
4cb0: 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68  Otherwise, if th
4cc0: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
4cd0: 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
4ce0: 20 69 73 20 65 6e 61 62 6c 65 64 2c 0d 0a 20 20   is enabled,..  
4cf0: 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 69    //       use i
4d00: 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  t...    //..    
4d10: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
4d20: 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20  ring SQLITE_DLL 
4d30: 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f  = "SQLite.Intero
4d40: 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a  p.dll";..#else..
4d50: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
4d60: 4f 54 45 3a 20 46 69 6e 61 6c 6c 79 2c 20 61 73  OTE: Finally, as
4d70: 73 75 6d 65 20 74 68 61 74 20 74 68 65 20 6d 69  sume that the mi
4d80: 78 65 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c  xed-mode assembl
4d90: 79 20 69 73 20 62 65 69 6e 67 20 75 73 65 64 2e  y is being used.
4da0: 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 70 72  ..    //..    pr
4db0: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
4dc0: 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
4dd0: 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c  "System.Data.SQL
4de0: 69 74 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69  ite.dll";..#endi
4df0: 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69 73  f....    // This
4e00: 20 73 65 63 74 69 6f 6e 20 75 73 65 73 20 69 6e   section uses in
4e10: 74 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61 74  terop calls that
4e20: 20 61 6c 73 6f 20 66 65 74 63 68 20 74 65 78 74   also fetch text
4e30: 20 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74 69 6d   length to optim
4e40: 69 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 20  ize conversion. 
4e50: 20 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e 20 75   ..    // When u
4e60: 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72  sing the standar
4e70: 64 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65  d dll, we can re
4e80: 70 6c 61 63 65 20 74 68 65 73 65 20 63 61 6c 6c  place these call
4e90: 73 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71  s with normal sq
4ea0: 6c 69 74 65 20 63 61 6c 6c 73 20 61 6e 64 20 0d  lite calls and .
4eb0: 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e 6f 70 74  .    // do unopt
4ec0: 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72 73 69 6f  imized conversio
4ed0: 6e 73 20 69 6e 73 74 65 61 64 20 61 66 74 65 72  ns instead after
4ee0: 77 61 72 64 73 0d 0a 20 20 20 20 23 72 65 67 69  wards..    #regi
4ef0: 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64  on interop added
4f00: 20 74 65 78 74 6c 65 6e 67 74 68 20 63 61 6c 6c   textlength call
4f10: 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45  s....#if !SQLITE
4f20: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
4f30: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
4f40: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
4f50: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
4f60: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
4f70: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
4f80: 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  er_name_interop(
4f90: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
4fa0: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
4fb0: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
4fc0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
4fd0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
4fe0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
4ff0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
5000: 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
5010: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
5020: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
5030: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
5040: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
5050: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5060: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
5070: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
5080: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
5090: 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d  umn_database_nam
50a0: 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
50b0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
50c0: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
50d0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
50e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
50f0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5100: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5110: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
5120: 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74 65  mn_decltype_inte
5130: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
5140: 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20   int index, out 
5150: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
5160: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
5170: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
5180: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
5190: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
51a0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
51b0: 79 70 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ype16_interop(In
51c0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
51d0: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
51e0: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
51f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5200: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
5210: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
5220: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
5230: 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  lumn_name_intero
5240: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
5250: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
5260: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
5270: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5280: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
5290: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
52a0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
52b0: 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f  3_column_name16_
52c0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
52d0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
52e0: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
52f0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
5300: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
5310: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
5320: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
5330: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
5340: 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72  rigin_name_inter
5350: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
5360: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
5370: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
5380: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5390: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
53a0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
53b0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
53c0: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
53d0: 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28  _name16_interop(
53e0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
53f0: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
5400: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
5410: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5420: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
5430: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5440: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
5450: 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
5460: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
5470: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
5480: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
5490: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
54a0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
54b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
54c0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
54d0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
54e0: 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e  _table_name16_in
54f0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
5500: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
5510: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
5520: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5530: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
5540: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5550: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
5560: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
5570: 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
5580: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
5590: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
55a0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
55b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
55c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
55d0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
55e0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
55f0: 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
5600: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
5610: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
5620: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
5630: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5640: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
5650: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5660: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
5670: 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28 49  errmsg_interop(I
5680: 6e 74 50 74 72 20 64 62 2c 20 6f 75 74 20 69 6e  ntPtr db, out in
5690: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
56a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
56b0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
56c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
56d0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
56e0: 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  de sqlite3_prepa
56f0: 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  re_interop(IntPt
5700: 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71  r db, IntPtr pSq
5710: 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f  l, int nBytes, o
5720: 75 74 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ut IntPtr stmt, 
5730: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 52 65  out IntPtr ptrRe
5740: 6d 61 69 6e 2c 20 6f 75 74 20 69 6e 74 20 6e 52  main, out int nR
5750: 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  emain);....    [
5760: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
5770: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
5780: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
5790: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
57a0: 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65  de sqlite3_table
57b0: 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61  _column_metadata
57c0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
57d0: 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
57e0: 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
57f0: 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d  e, byte[] colNam
5800: 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74  e, out IntPtr pt
5810: 72 44 61 74 61 54 79 70 65 2c 20 6f 75 74 20 49  rDataType, out I
5820: 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71  ntPtr ptrCollSeq
5830: 2c 20 6f 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c  , out int notNul
5840: 6c 2c 20 6f 75 74 20 69 6e 74 20 70 72 69 6d 61  l, out int prima
5850: 72 79 4b 65 79 2c 20 6f 75 74 20 69 6e 74 20 61  ryKey, out int a
5860: 75 74 6f 49 6e 63 2c 20 6f 75 74 20 69 6e 74 20  utoInc, out int 
5870: 64 74 4c 65 6e 2c 20 6f 75 74 20 69 6e 74 20 63  dtLen, out int c
5880: 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  sLen);....    [D
5890: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
58a0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
58b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
58c0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
58d0: 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65  _value_text_inte
58e0: 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75  rop(IntPtr p, ou
58f0: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
5900: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5910: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
5920: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5930: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
5940: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
5950: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
5960: 72 20 70 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  r p, out int len
5970: 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f  );....#if INTERO
5980: 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49  P_LOG..    [DllI
5990: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
59a0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
59b0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
59c0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
59d0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f  qlite3_config_lo
59e0: 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65  g_interop();..#e
59f0: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  ndif..#endif..//
5a00: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
5a10: 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
5a20: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68  ion....    // Th
5a30: 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64  ese functions ad
5a40: 64 20 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74  d existing funct
5a50: 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20  ionality on top 
5a60: 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65  of SQLite and re
5a70: 71 75 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65  quire a little e
5a80: 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f  ffort to..    //
5a90: 20 67 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65   get working whe
5aa0: 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e  n using the stan
5ab0: 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72  dard SQLite libr
5ac0: 61 72 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  ary...    #regio
5ad0: 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20  n interop added 
5ae0: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d  functionality...
5af0: 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
5b00: 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
5b10: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
5b20: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
5b30: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
5b40: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
5b50: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69   sqlite3_close_i
5b60: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
5b70: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
5b80: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5b90: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
5ba0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
5bb0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
5bc0: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
5bd0: 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e  ction_interop(In
5be0: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
5bf0: 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  strName, int nAr
5c00: 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49  gs, int nType, I
5c10: 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51  ntPtr pvUser, SQ
5c20: 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  LiteCallback fun
5c30: 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  c, SQLiteCallbac
5c40: 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46  k fstep, SQLiteF
5c50: 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69  inalCallback ffi
5c60: 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c  nal, int needCol
5c70: 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  lSeq);....    [D
5c80: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
5c90: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
5ca0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
5cb0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
5cc0: 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  e sqlite3_finali
5cd0: 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  ze_interop(IntPt
5ce0: 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20  r stmt);....    
5cf0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5d00: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
5d10: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5d20: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
5d30: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
5d40: 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f  up_finish_intero
5d50: 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  p(IntPtr backup)
5d60: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
5d70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5d80: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5d90: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
5da0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
5db0: 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f  ite3_open_intero
5dc0: 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  p(byte[] utf8Fil
5dd0: 65 6e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65  ename, SQLiteOpe
5de0: 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73  nFlagsEnum flags
5df0: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29  , out IntPtr db)
5e00: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
5e10: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5e20: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5e30: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
5e40: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
5e50: 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65  ite3_open16_inte
5e60: 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46  rop(byte[] utf8F
5e70: 69 6c 65 6e 61 6d 65 2c 20 53 51 4c 69 74 65 4f  ilename, SQLiteO
5e80: 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61  penFlagsEnum fla
5e90: 67 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64  gs, out IntPtr d
5ea0: 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  b);....    [DllI
5eb0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
5ec0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
5ed0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
5ee0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
5ef0: 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74  qlite3_reset_int
5f00: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
5f10: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
5f20: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5f30: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
5f40: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
5f50: 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  t sqlite3_change
5f60: 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  s_interop(IntPtr
5f70: 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f   db);..#endif../
5f80: 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  / !SQLITE_STANDA
5f90: 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
5fa0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54  gion....    // T
5fb0: 68 65 20 73 74 61 6e 64 61 72 64 20 61 70 69 20  he standard api 
5fc0: 63 61 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74 73  call equivalents
5fd0: 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 69 6e   of the above in
5fe0: 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20  terop calls..   
5ff0: 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72   #region standar
6000: 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e  d versions of in
6010: 74 65 72 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d  terop functions.
6020: 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
6030: 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50  ANDARD....#if !P
6040: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6050: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6060: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6070: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6080: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6090: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
60a0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
60b0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
60c0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
60d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
60e0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
60f0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
6100: 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20  e3_close(IntPtr 
6110: 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54  db);....#if !INT
6120: 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53  EROP_LEGACY_CLOS
6130: 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
6140: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6150: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6160: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6170: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6180: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6190: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
61a0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
61b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
61c0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
61d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
61e0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
61f0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
6200: 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 29 3b  e_v2(IntPtr db);
6210: 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a   /* 3.7.14+ */..
6220: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
6230: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6240: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6250: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6260: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6270: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6280: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6290: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
62a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
62b0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
62c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
62d0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
62e0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
62f0: 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
6300: 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  on(IntPtr db, by
6310: 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e  te[] strName, in
6320: 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79  t nArgs, int nTy
6330: 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  pe, IntPtr pvUse
6340: 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  r, SQLiteCallbac
6350: 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61  k func, SQLiteCa
6360: 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51  llback fstep, SQ
6370: 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63  LiteFinalCallbac
6380: 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69  k ffinal);....#i
6390: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
63a0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
63b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
63c0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
63d0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
63e0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
63f0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
6400: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6410: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
6420: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
6430: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
6440: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
6450: 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
6460: 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
6470: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
6480: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6490: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
64a0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
64b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
64c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
64d0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
64e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
64f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
6500: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
6510: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6520: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
6530: 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28  e sqlite3_reset(
6540: 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
6550: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
6560: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6570: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6580: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
6590: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
65a0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
65b0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
65c0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
65d0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
65e0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
65f0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6600: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
6610: 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
6620: 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
6630: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
6640: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
6650: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6660: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6670: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
6680: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
6690: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
66a0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
66b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
66c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
66d0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
66e0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
66f0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
6700: 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
6710: 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
6720: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
6730: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
6740: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
6750: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6760: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
6770: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
6780: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
6790: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
67a0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
67b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
67c0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
67d0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
67e0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
67f0: 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
6800: 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  e_name16(IntPtr 
6810: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
6820: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
6830: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
6840: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
6850: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
6860: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
6870: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
6880: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
6890: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
68a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
68b0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
68c0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
68d0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
68e0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
68f0: 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74  type(IntPtr stmt
6900: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
6910: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
6920: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6930: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6940: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
6950: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
6960: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
6970: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
6980: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6990: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
69a0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
69b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
69c0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
69d0: 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
69e0: 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
69f0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
6a00: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
6a10: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
6a20: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6a30: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
6a40: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
6a50: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
6a60: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
6a70: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6a80: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
6a90: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
6aa0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6ab0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
6ac0: 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74  olumn_name(IntPt
6ad0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
6ae0: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
6af0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
6b00: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
6b10: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6b20: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
6b30: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
6b40: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
6b50: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
6b60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6b70: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
6b80: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6b90: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
6ba0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
6bb0: 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  me16(IntPtr stmt
6bc0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
6bd0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
6be0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6bf0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6c00: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
6c10: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
6c20: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
6c30: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
6c40: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6c50: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
6c60: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
6c70: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6c80: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
6c90: 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
6ca0: 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
6cb0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
6cc0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
6cd0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
6ce0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6cf0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
6d00: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
6d10: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
6d20: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
6d30: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6d40: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
6d50: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
6d60: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6d70: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
6d80: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
6d90: 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  me16(IntPtr stmt
6da0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
6db0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
6dc0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
6dd0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6de0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
6df0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
6e00: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
6e10: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
6e20: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
6e30: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
6e40: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
6e50: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
6e60: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
6e70: 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
6e80: 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
6e90: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
6ea0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
6eb0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
6ec0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6ed0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
6ee0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
6ef0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
6f00: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
6f10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6f20: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
6f30: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
6f40: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
6f50: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
6f60: 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
6f70: 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
6f80: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
6f90: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
6fa0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
6fb0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6fc0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
6fd0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
6fe0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
6ff0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
7000: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7010: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
7020: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
7030: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7040: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
7050: 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74  olumn_text(IntPt
7060: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
7070: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
7080: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
7090: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
70a0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
70b0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
70c0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
70d0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
70e0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
70f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7100: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
7110: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7120: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
7130: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
7140: 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74  xt16(IntPtr stmt
7150: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
7160: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7170: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7180: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7190: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
71a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
71b0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
71c0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
71d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
71e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
71f0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
7200: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7210: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
7220: 5f 65 72 72 6d 73 67 28 49 6e 74 50 74 72 20 64  _errmsg(IntPtr d
7230: 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
7240: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
7250: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
7260: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7270: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
7280: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
7290: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
72a0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
72b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
72c0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
72d0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
72e0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
72f0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
7300: 70 72 65 70 61 72 65 28 49 6e 74 50 74 72 20 64  prepare(IntPtr d
7310: 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20  b, IntPtr pSql, 
7320: 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f 75 74 20  int nBytes, out 
7330: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 6f 75 74  IntPtr stmt, out
7340: 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69   IntPtr ptrRemai
7350: 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
7360: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
7370: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
7380: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7390: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
73a0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
73b0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
73c0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
73d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
73e0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
73f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7400: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
7410: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
7420: 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
7430: 61 64 61 74 61 28 49 6e 74 50 74 72 20 64 62 2c  adata(IntPtr db,
7440: 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20   byte[] dbName, 
7450: 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20  byte[] tblName, 
7460: 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20  byte[] colName, 
7470: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 44 61  out IntPtr ptrDa
7480: 74 61 54 79 70 65 2c 20 6f 75 74 20 49 6e 74 50  taType, out IntP
7490: 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 6f  tr ptrCollSeq, o
74a0: 75 74 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20  ut int notNull, 
74b0: 6f 75 74 20 69 6e 74 20 70 72 69 6d 61 72 79 4b  out int primaryK
74c0: 65 79 2c 20 6f 75 74 20 69 6e 74 20 61 75 74 6f  ey, out int auto
74d0: 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Inc);....#if !PL
74e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
74f0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7500: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7510: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
7520: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7530: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
7540: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
7550: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7560: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
7570: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7580: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
7590: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
75a0: 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  ext(IntPtr p);..
75b0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
75c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
75d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
75e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
75f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7600: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7610: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7620: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7630: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7640: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7650: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7660: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
7670: 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 28 49  3_value_text16(I
7680: 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e  ntPtr p);....#en
7690: 64 69 66 0d 0a 2f 2f 20 53 51 4c 49 54 45 5f 53  dif..// SQLITE_S
76a0: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
76b0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
76c0: 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74 69   // These functi
76d0: 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d 20 61  ons are custom a
76e0: 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75 69 76  nd have no equiv
76f0: 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6c  alent standard l
7700: 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a  ibrary method...
7710: 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68      // All of th
7720: 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74 6f 20  em are "nice to 
7730: 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e  haves" and not n
7740: 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65 65 64  ecessarily "need
7750: 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20 20 20   to haves"...   
7760: 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69   #region no equi
7770: 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64 20  valent standard 
7780: 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53  method....#if !S
7790: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
77a0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
77b0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
77c0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
77d0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
77e0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
77f0: 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70  _collseq_interop
7800: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
7810: 20 6f 75 74 20 69 6e 74 20 74 79 70 65 2c 20 6f   out int type, o
7820: 75 74 20 69 6e 74 20 65 6e 63 2c 20 6f 75 74 20  ut int enc, out 
7830: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
7840: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7850: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
7860: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7870: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
7880: 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d  _context_collcom
7890: 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  pare_interop(Int
78a0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
78b0: 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31 6c 65  e[] p1, int p1le
78c0: 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e  n, byte[] p2, in
78d0: 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  t p2len);....   
78e0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
78f0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
7900: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7910: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
7920: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 75 72  Code sqlite3_cur
7930: 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f  sor_rowid_intero
7940: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
7950: 6e 74 20 63 75 72 73 6f 72 2c 20 6f 75 74 20 6c  nt cursor, out l
7960: 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20  ong rowid);.... 
7970: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7980: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
7990: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
79a0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
79b0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 69  orCode sqlite3_i
79c0: 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f  ndex_column_info
79d0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
79e0: 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74 61 6c  db, byte[] catal
79f0: 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64 65 78  og, byte[] Index
7a00: 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c  Name, byte[] Col
7a10: 75 6d 6e 4e 61 6d 65 2c 20 6f 75 74 20 69 6e 74  umnName, out int
7a20: 20 73 6f 72 74 4f 72 64 65 72 2c 20 6f 75 74 20   sortOrder, out 
7a30: 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 6f 75 74  int onError, out
7a40: 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f   IntPtr Collatio
7a50: 6e 2c 20 6f 75 74 20 69 6e 74 20 63 6f 6c 6c 6c  n, out int colll
7a60: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
7a70: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7a80: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
7a90: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7aa0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
7ab0: 65 74 61 6c 6c 5f 69 6e 74 65 72 6f 70 28 49 6e  etall_interop(In
7ac0: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
7ad0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7ae0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
7af0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7b00: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
7b10: 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f 69 6e  _table_cursor_in
7b20: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
7b30: 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20 74  t, int db, int t
7b40: 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0d 0a  ableRootPage);..
7b50: 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
7b60: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
7b70: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
7b80: 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64 61  ...    // Standa
7b90: 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f  rd API calls glo
7ba0: 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73 69  bal across versi
7bb0: 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65 20  ons.  There are 
7bc0: 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73 20  a few instances 
7bd0: 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73  of interop calls
7be0: 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74 65 72  ..    // scatter
7bf0: 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75 74 20  ed in here, but 
7c00: 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 61 63  they are only ac
7c10: 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54 46 4f  tive when PLATFO
7c20: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7c30: 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65 64 2e  ORK is declared.
7c40: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74  ..    #region st
7c50: 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20 61 70  andard sqlite ap
7c60: 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 21 50 4c  i calls..#if !PL
7c70: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7c80: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
7c90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
7ca0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
7cb0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
7cc0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
7cd0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
7ce0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7cf0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
7d00: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7d10: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
7d20: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
7d30: 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78  3_enable_load_ex
7d40: 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20  tension(..      
7d50: 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74    IntPtr db, int
7d60: 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66   enable);....#if
7d70: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7d80: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7d90: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7da0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
7db0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
7dc0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
7dd0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
7de0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7df0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
7e00: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
7e10: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
7e20: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
7e30: 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e  lite3_load_exten
7e40: 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  sion(..        I
7e50: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
7e60: 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b   fileName, byte[
7e70: 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20  ] procName, ref 
7e80: 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b 0d  IntPtr pError);.
7e90: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
7ea0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
7eb0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
7ec0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
7ed0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
7ee0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
7ef0: 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53  ion.Cdecl, CharS
7f00: 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
7f10: 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  code)]..#else.. 
7f20: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7f30: 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65  LITE_DLL, CharSe
7f40: 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
7f50: 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ode)]..#endif.. 
7f60: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7f70: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
7f80: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
7f90: 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65  3_win32_set_dire
7fa0: 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70 65 2c  ctory(uint type,
7fb0: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d   string value);.
7fc0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
7fd0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
7fe0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
7ff0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8000: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8010: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8020: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8030: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8040: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8050: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8060: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8070: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
8080: 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b  e3_libversion();
8090: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
80a0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
80b0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
80c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
80d0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
80e0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
80f0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
8100: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
8110: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8120: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
8130: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8140: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
8150: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
8160: 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  er();....#if !PL
8170: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8180: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8190: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
81a0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
81b0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
81c0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
81d0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
81e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
81f0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
8200: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8210: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
8220: 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69   sqlite3_sourcei
8230: 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  d();....#if !PLA
8240: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8250: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
8260: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8270: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8280: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8290: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
82a0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
82b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
82c0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
82d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
82e0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
82f0: 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69  sqlite3_malloc(i
8300: 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nt n);....#if !P
8310: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
8320: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
8330: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8340: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
8350: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
8360: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
8370: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
8380: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8390: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
83a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
83b0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
83c0: 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f  r sqlite3_reallo
83d0: 63 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74 20  c(IntPtr p, int 
83e0: 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
83f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
8400: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
8410: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8420: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
8430: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
8440: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
8450: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
8460: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8470: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
8480: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8490: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
84a0: 69 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72  ite3_free(IntPtr
84b0: 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
84c0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
84d0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
84e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
84f0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8500: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8510: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
8520: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
8530: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8540: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
8550: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8560: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
8570: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
8580: 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20  _open_v2(byte[] 
8590: 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 6f 75  utf8Filename, ou
85a0: 74 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  t IntPtr db, SQL
85b0: 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
85c0: 20 66 6c 61 67 73 2c 20 49 6e 74 50 74 72 20 76   flags, IntPtr v
85d0: 66 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  fs);....#if !PLA
85e0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
85f0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
8600: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8610: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
8620: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8630: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
8640: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
8650: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
8660: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8670: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
8680: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
8690: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
86a0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
86b0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
86c0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
86d0: 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 73 74  qlite3_open16(st
86e0: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 6f  ring fileName, o
86f0: 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  ut IntPtr db);..
8700: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
8710: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
8720: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8730: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
8740: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
8750: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8760: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
8770: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
8780: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8790: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
87a0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
87b0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
87c0: 69 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74 72  interrupt(IntPtr
87d0: 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
87e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
87f0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8800: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8810: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8820: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8830: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8840: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
8850: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
8860: 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  ng sqlite3_last_
8870: 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74  insert_rowid(Int
8880: 50 74 72 20 64 62 29 3b 0d 0a 23 65 6c 73 65 0d  Ptr db);..#else.
8890: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
88a0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
88b0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
88c0: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
88d0: 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
88e0: 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28  t_rowid_interop(
88f0: 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c  IntPtr db, ref l
8900: 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 23 65 6e  ong rowId);..#en
8910: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
8920: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
8930: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
8940: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8950: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
8960: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
8970: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
8980: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
8990: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
89a0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
89b0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
89c0: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
89d0: 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50  te3_changes(IntP
89e0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
89f0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8a00: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
8a10: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8a20: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
8a30: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
8a40: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
8a50: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
8a60: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8a70: 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
8a80: 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6c  ory_used();..#el
8a90: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8aa0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8ab0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
8ac0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
8ad0: 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
8ae0: 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66  used_interop(ref
8af0: 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 23   long bytes);..#
8b00: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
8b10: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
8b20: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
8b30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8b40: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
8b50: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
8b60: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
8b70: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
8b80: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
8b90: 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  ng sqlite3_memor
8ba0: 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74 20  y_highwater(int 
8bb0: 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6c  resetFlag);..#el
8bc0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8bd0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8be0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
8bf0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
8c00: 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
8c10: 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f  highwater_intero
8c20: 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c  p(int resetFlag,
8c30: 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29   ref long bytes)
8c40: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
8c50: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8c60: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8c70: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8c80: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
8c90: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
8ca0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
8cb0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
8cc0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8cd0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
8ce0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
8cf0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
8d00: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
8d10: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
8d20: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
8d30: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8d40: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
8d50: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
8d60: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8d70: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
8d80: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
8d90: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
8da0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
8db0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
8dc0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8dd0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
8de0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75  rCode sqlite3_bu
8df0: 73 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74  sy_timeout(IntPt
8e00: 72 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a  r db, int ms);..
8e10: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
8e20: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
8e30: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8e40: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
8e50: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
8e60: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8e70: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
8e80: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
8e90: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8ea0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
8eb0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
8ec0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
8ed0: 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
8ee0: 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
8ef0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79 74  , int index, Byt
8f00: 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
8f10: 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54 72  Size, IntPtr nTr
8f20: 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66  ansient);....#if
8f30: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8f40: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8f50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8f60: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
8f70: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
8f80: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
8f90: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
8fa0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
8fb0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
8fc0: 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  e sqlite3_bind_d
8fd0: 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  ouble(IntPtr stm
8fe0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f  t, int index, do
8ff0: 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
9000: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9010: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9020: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9030: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
9040: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
9050: 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
9060: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
9070: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
9080: 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
9090: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
90a0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
90b0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
90c0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
90d0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
90e0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
90f0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
9100: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
9110: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9120: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
9130: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
9140: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9150: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
9160: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
9170: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9180: 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c  t index, int val
9190: 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a  ue);....    //..
91a0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
91b0: 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61  s really just ca
91c0: 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  lls "sqlite3_bin
91d0: 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c  d_int"; however,
91e0: 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20   it has the..   
91f0: 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63   //       correc
9200: 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65  t type signature
9210: 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64   for an unsigned
9220: 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67 65   (32-bit) intege
9230: 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20  r...    //..#if 
9240: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
9250: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
9260: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9270: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
9280: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
9290: 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43  d_int", CallingC
92a0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
92b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
92c0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
92d0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
92e0: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
92f0: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
9300: 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64  ind_int")]..#end
9310: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
9320: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
9330: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
9340: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74  qlite3_bind_uint
9350: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9360: 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76 61  t index, uint va
9370: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
9380: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9390: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
93a0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
93b0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
93c0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
93d0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
93e0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
93f0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
9400: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
9410: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
9420: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9430: 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61  t index, long va
9440: 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
9450: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9460: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
9470: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9480: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
9490: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
94a0: 6e 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  nd_int64_interop
94b0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
94c0: 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e  t index, ref lon
94d0: 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  g value);..#endi
94e0: 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  f....    //..   
94f0: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72   // NOTE: This r
9500: 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73  eally just calls
9510: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
9520: 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72 2c 20  nt64"; however, 
9530: 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20  it has the..    
9540: 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74  //       correct
9550: 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20   type signature 
9560: 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20  for an unsigned 
9570: 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20 69 6e  long (64-bit) in
9580: 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  teger...    //..
9590: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
95a0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
95b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
95c0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
95d0: 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
95e0: 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61  _bind_int64", Ca
95f0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9600: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9610: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
9620: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9630: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
9640: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
9650: 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e 74 50  bind_uint64(IntP
9660: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
9670: 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29  ex, ulong value)
9680: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
9690: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
96a0: 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
96b0: 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
96c0: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d  int64_interop")]
96d0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
96e0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
96f0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
9700: 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34  ite3_bind_uint64
9710: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
9720: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
9730: 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65   ref ulong value
9740: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
9750: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
9760: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9770: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9780: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
9790: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
97a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
97b0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
97c0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
97d0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
97e0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
97f0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
9800: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
9810: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c  qlite3_bind_null
9820: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9830: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
9840: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9850: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9860: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9870: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9880: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9890: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
98a0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
98b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
98c0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
98d0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
98e0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
98f0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
9900: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28  lite3_bind_text(
9910: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
9920: 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20 76   index, byte[] v
9930: 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20  alue, int nlen, 
9940: 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65  IntPtr pvReserve
9950: 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
9960: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9970: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9980: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9990: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
99a0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
99b0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
99c0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
99d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
99e0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
99f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9a00: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
9a10: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
9a20: 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  er_count(IntPtr 
9a30: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
9a40: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9a50: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
9a60: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9a70: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9a80: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9a90: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9aa0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9ab0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9ac0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
9ad0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
9ae0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
9af0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
9b00: 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74 50  meter_index(IntP
9b10: 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d 20  tr stmt, byte[] 
9b20: 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  strName);....#if
9b30: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9b40: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9b50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9b60: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9b70: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9b80: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9b90: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9ba0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9bb0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9bc0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9bd0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
9be0: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
9bf0: 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74  _count(IntPtr st
9c00: 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
9c10: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9c20: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9c30: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9c40: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9c50: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9c60: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9c70: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
9c80: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9c90: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
9ca0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9cb0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
9cc0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
9cd0: 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73 74 6d  _step(IntPtr stm
9ce0: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
9cf0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9d00: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9d10: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9d20: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9d30: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9d40: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9d50: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
9d60: 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62  atic extern doub
9d70: 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  le sqlite3_colum
9d80: 6e 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  n_double(IntPtr 
9d90: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
9da0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
9db0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
9dc0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
9dd0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9de0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63  n void sqlite3_c
9df0: 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74  olumn_double_int
9e00: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
9e10: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
9e20: 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
9e30: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
9e40: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
9e50: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
9e60: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9e70: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
9e80: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9e90: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
9ea0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
9eb0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
9ec0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
9ed0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
9ee0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
9ef0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
9f00: 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
9f10: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
9f20: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
9f30: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
9f40: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9f50: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
9f60: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
9f70: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
9f80: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
9f90: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9fa0: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
9fb0: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e  _column_int64(In
9fc0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
9fd0: 6e 64 65 78 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ndex);..#else.. 
9fe0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
9ff0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
a000: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
a010: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
a020: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34  te3_column_int64
a030: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
a040: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
a050: 20 6f 75 74 20 6c 6f 6e 67 20 76 61 6c 75 65 29   out long value)
a060: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
a070: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a080: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a090: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a0a0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a0b0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a0c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a0d0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a0e0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a0f0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a100: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a110: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
a120: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
a130: 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  umn_blob(IntPtr 
a140: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
a150: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
a160: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
a170: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
a180: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
a190: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a1a0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
a1b0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
a1c0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
a1d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
a1e0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
a1f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
a200: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
a210: 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 49  3_column_bytes(I
a220: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
a230: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
a240: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a250: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a260: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a270: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
a280: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
a290: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
a2a0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
a2b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a2c0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
a2d0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a2e0: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
a2f0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
a300: 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 73 74  ytes16(IntPtr st
a310: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
a320: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
a330: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
a340: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
a350: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
a360: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a370: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a380: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
a390: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
a3a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
a3b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
a3c0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
a3d0: 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79  ern TypeAffinity
a3e0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
a3f0: 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74  type(IntPtr stmt
a400: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
a410: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
a420: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
a430: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a440: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
a450: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
a460: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a470: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
a480: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a490: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
a4a0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
a4b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
a4c0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
a4d0: 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
a4e0: 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50 74  _collation(IntPt
a4f0: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
a500: 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65 2c  Name, int nType,
a510: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20   IntPtr pvUser, 
a520: 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20  SQLiteCollation 
a530: 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  func);....#if !P
a540: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
a550: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
a560: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a570: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
a580: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
a590: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
a5a0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
a5b0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a5c0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
a5d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a5e0: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
a5f0: 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
a600: 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f  _count(IntPtr co
a610: 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
a620: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a630: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a640: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a650: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
a660: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
a670: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
a680: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
a690: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a6a0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
a6b0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a6c0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
a6d0: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
a6e0: 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29 3b  _blob(IntPtr p);
a6f0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
a700: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a710: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
a720: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
a730: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a740: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
a750: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
a760: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
a770: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
a780: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
a790: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
a7a0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
a7b0: 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e 74  _value_bytes(Int
a7c0: 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
a7d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
a7e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
a7f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a800: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
a810: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
a820: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
a830: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
a840: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a850: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
a860: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
a870: 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
a880: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
a890: 74 65 73 31 36 28 49 6e 74 50 74 72 20 70 29 3b  tes16(IntPtr p);
a8a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
a8b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a8c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
a8d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
a8e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a8f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
a900: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
a910: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a920: 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20  c extern double 
a930: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
a940: 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  uble(IntPtr p);.
a950: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a960: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a970: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
a980: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
a990: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
a9a0: 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  ue_double_intero
a9b0: 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20  p(IntPtr p, out 
a9c0: 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
a9d0: 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
a9e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
a9f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
aa00: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
aa10: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
aa20: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
aa30: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
aa40: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
aa50: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
aa60: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
aa70: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
aa80: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
aa90: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
aaa0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
aab0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
aac0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
aad0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
aae0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
aaf0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
ab00: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
ab10: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
ab20: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ab30: 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
ab40: 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74  _value_int64(Int
ab50: 50 74 72 20 70 29 3b 0d 0a 23 65 6c 73 65 0d 0a  Ptr p);..#else..
ab60: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ab70: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
ab80: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
ab90: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
aba0: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
abb0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
abc0: 70 2c 20 6f 75 74 20 49 6e 74 36 34 20 76 61 6c  p, out Int64 val
abd0: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
abe0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
abf0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ac00: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ac10: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
ac20: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
ac30: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ac40: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
ac50: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ac60: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
ac70: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ac80: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ac90: 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
aca0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
acb0: 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
acc0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
acd0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
ace0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
acf0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
ad00: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
ad10: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
ad20: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
ad30: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ad40: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
ad50: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
ad60: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
ad70: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
ad80: 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ult_blob(IntPtr 
ad90: 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
ada0: 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
adb0: 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
adc0: 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
add0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ade0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
adf0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ae00: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
ae10: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
ae20: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ae30: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
ae40: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
ae50: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
ae60: 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  t_double(IntPtr 
ae70: 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20  context, double 
ae80: 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
ae90: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
aea0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
aeb0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
aec0: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
aed0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
aee0: 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
aef0: 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64  r context, ref d
af00: 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
af10: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
af20: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
af30: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
af40: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
af50: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
af60: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
af70: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
af80: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
af90: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
afa0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
afb0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
afc0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
afd0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
afe0: 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ror(IntPtr conte
aff0: 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72  xt, byte[] strEr
b000: 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d  r, int nLen);...
b010: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
b020: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
b030: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b040: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
b050: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
b060: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b070: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
b080: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b090: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
b0a0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
b0b0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b0c0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
b0d0: 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72  esult_int(IntPtr
b0e0: 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61   context, int va
b0f0: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
b100: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b110: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
b120: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b130: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
b140: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
b150: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
b160: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
b170: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
b180: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b190: 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63  t_int64(IntPtr c
b1a0: 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c  ontext, long val
b1b0: 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ue);..#else..   
b1c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b1d0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
b1e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
b1f0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
b200: 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69  3_result_int64_i
b210: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
b220: 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74 36 34  ntext, ref Int64
b230: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
b240: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
b250: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
b260: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
b270: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
b280: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b290: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
b2a0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
b2b0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
b2c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
b2d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
b2e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
b2f0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
b300: 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e  3_result_null(In
b310: 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
b320: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
b330: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
b340: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b350: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
b360: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
b370: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b380: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
b390: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
b3a0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
b3b0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
b3c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
b3d0: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
b3e0: 72 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50  result_text(IntP
b3f0: 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65  tr context, byte
b400: 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c  [] value, int nL
b410: 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73  en, IntPtr pvRes
b420: 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  erved);....#if !
b430: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b440: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b450: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b460: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b470: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b480: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b490: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b4a0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b4b0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b4c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b4d0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b4e0: 74 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65  tr sqlite3_aggre
b4f0: 67 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74  gate_context(Int
b500: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
b510: 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66   nBytes);....#if
b520: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
b530: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b540: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b550: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
b560: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
b570: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
b580: 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
b590: 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
b5a0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
b5b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b5c0: 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
b5d0: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
b5e0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
b5f0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b600: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
b610: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
b620: 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
b630: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
b640: 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e  string value, in
b650: 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70  t nlen, IntPtr p
b660: 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
b670: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b680: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b690: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b6a0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
b6b0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
b6c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
b6d0: 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
b6e0: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
b6f0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b700: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b710: 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
b720: 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
b730: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b740: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b750: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
b760: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31  e3_result_error1
b770: 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  6(IntPtr context
b780: 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65  , string strName
b790: 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
b7a0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
b7b0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
b7c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b7d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
b7e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
b7f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b800: 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
b810: 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
b820: 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
b830: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b840: 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
b850: 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
b860: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
b870: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b880: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
b890: 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31  te3_result_text1
b8a0: 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  6(IntPtr context
b8b0: 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65  , string strName
b8c0: 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50  , int nLen, IntP
b8d0: 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
b8e0: 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43  ...#if INTEROP_C
b8f0: 4f 44 45 43 0d 0a 23 69 66 20 21 50 4c 41 54 46  ODEC..#if !PLATF
b900: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
b910: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
b920: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
b930: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b940: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
b950: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
b960: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
b970: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b980: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
b990: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b9a0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
b9b0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6b  orCode sqlite3_k
b9c0: 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ey(IntPtr db, by
b9d0: 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65  te[] key, int ke
b9e0: 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ylen);....#if !P
b9f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
ba00: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
ba10: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ba20: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
ba30: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ba40: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
ba50: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
ba60: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ba70: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
ba80: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
ba90: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
baa0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
bab0: 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72 20  e3_rekey(IntPtr 
bac0: 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20  db, byte[] key, 
bad0: 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65  int keylen);..#e
bae0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
baf0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
bb00: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
bb10: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
bb20: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
bb30: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
bb40: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
bb50: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
bb60: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bb70: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
bb80: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
bb90: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
bba0: 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68  sqlite3_update_h
bbb0: 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
bbc0: 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62  QLiteUpdateCallb
bbd0: 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
bbe0: 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
bbf0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
bc00: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
bc10: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
bc20: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
bc30: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
bc40: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
bc50: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
bc60: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
bc70: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
bc80: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
bc90: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
bca0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d  tPtr sqlite3_com
bcb0: 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20  mit_hook(IntPtr 
bcc0: 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74  db, SQLiteCommit
bcd0: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
bce0: 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
bcf0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
bd00: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
bd10: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bd20: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
bd30: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
bd40: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bd50: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
bd60: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
bd70: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
bd80: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
bd90: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
bda0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
bdb0: 33 5f 74 72 61 63 65 28 49 6e 74 50 74 72 20 64  3_trace(IntPtr d
bdc0: 62 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61  b, SQLiteTraceCa
bdd0: 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
bde0: 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
bdf0: 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
be00: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61  ite3_config() ta
be10: 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
be20: 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
be30: 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
be40: 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
be50: 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
be60: 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68  ossible calls th
be70: 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73  at we want to us
be80: 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  e...#if !PLATFOR
be90: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
bea0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
beb0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
bec0: 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
bed0: 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
bee0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
bef0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
bf00: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
bf10: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
bf20: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
bf30: 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
bf40: 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
bf50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
bf60: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
bf70: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
bf80: 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
bf90: 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e  g_none(SQLiteCon
bfa0: 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d  figOpsEnum op);.
bfb0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
bfc0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
bfd0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
bfe0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
bff0: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
c000: 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
c010: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
c020: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c030: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
c040: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
c050: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
c060: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
c070: 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
c080: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c090: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c0a0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
c0b0: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
c0c0: 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69  _int(SQLiteConfi
c0d0: 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  gOpsEnum op, int
c0e0: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
c0f0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c100: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c110: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c120: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
c130: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
c140: 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
c150: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
c160: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
c170: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
c180: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c190: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
c1a0: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
c1b0: 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
c1c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c1d0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
c1e0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
c1f0: 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51  e3_config_log(SQ
c200: 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
c210: 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43  m op, SQLiteLogC
c220: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
c230: 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
c240: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c250: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c260: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c270: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c280: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c290: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c2a0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c2b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c2c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c2d0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c2e0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c2f0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
c300: 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49  _rollback_hook(I
c310: 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
c320: 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b  RollbackCallback
c330: 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
c340: 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
c350: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c360: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c370: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c380: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c390: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c3a0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c3b0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c3c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c3d0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c3e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c3f0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
c400: 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e  r sqlite3_db_han
c410: 64 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29  dle(IntPtr stmt)
c420: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
c430: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
c440: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
c450: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c460: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c470: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
c480: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
c490: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
c4a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
c4b0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
c4c0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
c4d0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
c4e0: 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49  ite3_next_stmt(I
c4f0: 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
c500: 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
c510: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
c520: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
c530: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c540: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
c550: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
c560: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
c570: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
c580: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c590: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
c5a0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
c5b0: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
c5c0: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
c5d0: 74 65 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20  te3_exec(IntPtr 
c5e0: 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71  db, byte[] strSq
c5f0: 6c 2c 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c  l, IntPtr pvCall
c600: 62 61 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50  back, IntPtr pvP
c610: 61 72 61 6d 2c 20 6f 75 74 20 49 6e 74 50 74 72  aram, out IntPtr
c620: 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66   errMsg);....#if
c630: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
c640: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
c650: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c660: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
c670: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
c680: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
c690: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
c6a0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c6b0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
c6c0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
c6d0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
c6e0: 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75  t sqlite3_get_au
c6f0: 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20  tocommit(IntPtr 
c700: 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
c710: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c720: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
c730: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c740: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
c750: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
c760: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
c770: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
c780: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c790: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
c7a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c7b0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
c7c0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
c7d0: 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74  _extended_result
c7e0: 5f 63 6f 64 65 73 28 49 6e 74 50 74 72 20 64 62  _codes(IntPtr db
c7f0: 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d  , int onoff);...
c800: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c810: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c820: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c830: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c840: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c850: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c860: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c870: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c880: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c890: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c8a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c8b0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
c8c0: 65 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64  e sqlite3_errcod
c8d0: 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
c8e0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c8f0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c900: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c910: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c920: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c930: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c940: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c950: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c960: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c970: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c980: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c990: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
c9a0: 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  e sqlite3_extend
c9b0: 65 64 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74  ed_errcode(IntPt
c9c0: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
c9d0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c9e0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c9f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ca00: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
ca10: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ca20: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
ca30: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
ca40: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ca50: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
ca60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
ca70: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
ca80: 72 20 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72  r sqlite3_errstr
ca90: 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  (SQLiteErrorCode
caa0: 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b   rc); /* 3.7.15+
cab0: 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69   */....    // Si
cac0: 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28  nce sqlite3_log(
cad0: 29 20 74 61 6b 65 73 20 61 20 76 61 72 69 61 62  ) takes a variab
cae0: 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74  le argument list
caf0: 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65  , we have to ove
cb00: 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f  rload declaratio
cb10: 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61  ns..    // for a
cb20: 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c  ll possible call
cb30: 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20  s.  For now, we 
cb40: 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e  are only exposin
cb50: 67 20 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e  g a single strin
cb60: 67 2c 20 61 6e 64 20 0d 0a 20 20 20 20 2f 2f 20  g, and ..    // 
cb70: 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 63 61  depend on the ca
cb80: 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74 20 74  ller to format t
cb90: 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20  he string...#if 
cba0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
cbb0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
cbc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
cbd0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
cbe0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
cbf0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
cc00: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
cc10: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
cc20: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
cc30: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
cc40: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
cc50: 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51  d sqlite3_log(SQ
cc60: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 69 45  LiteErrorCode iE
cc70: 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a  rrCode, byte[] z
cc80: 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20  Format);....#if 
cc90: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
cca0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
ccb0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
ccc0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
ccd0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
cce0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
ccf0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
cd00: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
cd10: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
cd20: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
cd30: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
cd40: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
cd50: 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
cd60: 6c 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  l(IntPtr db, byt
cd70: 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74  e[] zDbName, int
cd80: 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 41 72 67   op, IntPtr pArg
cd90: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
cda0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
cdb0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
cdc0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
cdd0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
cde0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
cdf0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ce00: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
ce10: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ce20: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
ce30: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
ce40: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
ce50: 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69  lite3_backup_ini
ce60: 74 28 49 6e 74 50 74 72 20 64 65 73 74 44 62 2c  t(IntPtr destDb,
ce70: 20 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d   byte[] zDestNam
ce80: 65 2c 20 49 6e 74 50 74 72 20 73 6f 75 72 63 65  e, IntPtr source
ce90: 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72  Db, byte[] zSour
cea0: 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  ceName);....#if 
ceb0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
cec0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
ced0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
cee0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
cef0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
cf00: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
cf10: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
cf20: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
cf30: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
cf40: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
cf50: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
cf60: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
cf70: 69 74 65 33 5f 62 61 63 6b 75 70 5f 73 74 65 70  ite3_backup_step
cf80: 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 2c 20  (IntPtr backup, 
cf90: 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23  int nPage);....#
cfa0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
cfb0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
cfc0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
cfd0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
cfe0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
cff0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
d000: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
d010: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d020: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
d030: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
d040: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d050: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
d060: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
d070: 69 6e 69 73 68 28 49 6e 74 50 74 72 20 62 61 63  inish(IntPtr bac
d080: 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
d090: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
d0a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
d0b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d0c0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
d0d0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
d0e0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
d0f0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
d100: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d110: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
d120: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
d130: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
d140: 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d  lite3_backup_rem
d150: 61 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61  aining(IntPtr ba
d160: 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
d170: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d180: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d190: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d1a0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d1b0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d1c0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d1d0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d1e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d1f0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d200: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d210: 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
d220: 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61  qlite3_backup_pa
d230: 67 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62  gecount(IntPtr b
d240: 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 23 65 6e  ackup);..    #en
d250: 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a  dregion..  }....
d260: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
d270: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
d280: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
d290: 63 74 20 63 6c 61 73 73 20 43 72 69 74 69 63 61  ct class Critica
d2a0: 6c 48 61 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f  lHandle : IDispo
d2b0: 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20  sable..  {..    
d2c0: 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73  private bool _is
d2d0: 43 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f  Closed;..    pro
d2e0: 74 65 63 74 65 64 20 49 6e 74 50 74 72 20 68 61  tected IntPtr ha
d2f0: 6e 64 6c 65 3b 0d 0a 20 20 20 20 0d 0a 20 20 20  ndle;..    ..   
d300: 20 70 72 6f 74 65 63 74 65 64 20 43 72 69 74 69   protected Criti
d310: 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  calHandle(IntPtr
d320: 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
d330: 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lue)..    {..   
d340: 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61     handle = inva
d350: 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d  lidHandleValue;.
d360: 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
d370: 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d   = false;..    }
d380: 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69 63 61  ....    ~Critica
d390: 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b  lHandle()..    {
d3a0: 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
d3b0: 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  false);..    }..
d3c0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f  ..    private vo
d3d0: 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20  id Cleanup()..  
d3e0: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 21    {..      if (!
d3f0: 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
d400: 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73   {..        this
d410: 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75  ._isClosed = tru
d420: 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  e;..        if (
d430: 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20  !IsInvalid)..   
d440: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d450: 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28    ReleaseHandle(
d460: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 47 43  );..          GC
d470: 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
d480: 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
d490: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
d4a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
d4b0: 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a  c void Close()..
d4c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
d4d0: 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
d4e0: 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
d4f0: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d   void Dispose().
d500: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
d510: 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
d520: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65    }....    prote
d530: 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69  cted virtual voi
d540: 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
d550: 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b  isposing)..    {
d560: 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75 70 28  ..      Cleanup(
d570: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
d580: 20 70 72 6f 74 65 63 74 65 64 20 61 62 73 74 72   protected abstr
d590: 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  act bool Release
d5a0: 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20  Handle();....   
d5b0: 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20   protected void 
d5c0: 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
d5d0: 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a   value)..    {..
d5e0: 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 76        handle = v
d5f0: 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  alue;..    }....
d600: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
d610: 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
d620: 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  id()..    {..   
d630: 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74     _isClosed = t
d640: 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53  rue;..      GC.S
d650: 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
d660: 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  this);..    }...
d670: 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c  .    public bool
d680: 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b   IsClosed..    {
d690: 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65  ..      get { re
d6a0: 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20  turn _isClosed; 
d6b0: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
d6c0: 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
d6d0: 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
d6e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
d6f0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d  ;..    }....  }.
d700: 0a 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ...#endif....   
d710: 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
d760: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
d770: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
d780: 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  le Class..    //
d790: 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d   Handles the unm
d7a0: 61 6e 61 67 65 64 20 64 61 74 61 62 61 73 65 20  anaged database 
d7b0: 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f  pointer, and pro
d7c0: 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
d7d0: 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f  on..    // suppo
d7e0: 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20  rt for it...    
d7f0: 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
d800: 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e  class SQLiteConn
d810: 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43  ectionHandle : C
d820: 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20  riticalHandle.. 
d830: 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45     {..#if SQLITE
d840: 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c  _STANDARD && !PL
d850: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
d860: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
d870: 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61   internal delega
d880: 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e  te void CloseCon
d890: 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28  nectionCallback(
d8a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
d8b0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
d8c0: 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72  ndle hdl, IntPtr
d8d0: 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   db);....       
d8e0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d8f0: 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   CloseConnection
d900: 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f  Callback closeCo
d910: 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20  nnection =..    
d920: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
d930: 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  se.CloseConnecti
d940: 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  on;..#endif.... 
d950: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
d960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
d9a0: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
d9b0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d9c0: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
d9d0: 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  l readonly objec
d9e0: 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77  t syncRoot = new
d9f0: 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64   object();..#end
da00: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
da10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da50: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
da60: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
da70: 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
da80: 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43 6f   IntPtr(SQLiteCo
da90: 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 64  nnectionHandle d
daa0: 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  b)..        {.. 
dab0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
dac0: 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  b != null)..    
dad0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
dae0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
daf0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
db00: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
db10: 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  db.syncRoot)..#e
db20: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
db30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
db40: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
db50: 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d 0a  urn db.handle;..
db60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db70: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
db80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
db90: 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
dba0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
dbb0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
dbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
dc00: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
dc10: 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  nal SQLiteConnec
dc20: 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50 74  tionHandle(IntPt
dc30: 72 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20 20  r db)..         
dc40: 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
dc50: 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
dc60: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
dc70: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
dc80: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
dc90: 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
dca0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
dcb0: 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
dcc0: 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20  ndle(db);..     
dcd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
dce0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
dcf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd30: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
dd40: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
dd50: 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
dd60: 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
dd70: 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
dd80: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
dd90: 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
dda0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
ddb0: 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d  terlocked.Increm
ddc0: 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
ddd0: 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
dde0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f  NativeMethods.co
ddf0: 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
de00: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
de10: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
de20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de60: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
de70: 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
de80: 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
de90: 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
dea0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
deb0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
dec0: 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
ded0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
dee0: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
def0: 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
df00: 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
df10: 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
df20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df30: 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c       ref handle,
df40: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
df50: 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
df60: 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20  NDARD..         
df70: 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
df80: 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
df90: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
dfa0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73              clos
dfb0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73  eConnection(this
dfc0: 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
dfd0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
dfe0: 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
dff0: 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
e000: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
e010: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
e020: 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e  iteBase.CloseCon
e030: 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f  nection(this, lo
e040: 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e  calHandle);..#en
e050: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  dif....#if !NET_
e060: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
e070: 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
e080: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
e090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e0a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e0b0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
e0c0: 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
e0d0: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0f0: 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
e100: 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
e110: 64 6c 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  dle));..        
e120: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e130: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
e140: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e150: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e160: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
e170: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
e180: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
e190: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
e1a0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
e1c0: 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
e1d0: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
e1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
e1f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e200: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
e210: 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
e220: 74 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c  tion(this, handl
e230: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
e240: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
e250: 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
e260: 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
e270: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
e280: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e290: 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
e2a0: 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
e2b0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
e2c0: 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
e2d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e2e0: 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
e2f0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f  NativeMethods.co
e300: 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
e310: 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
e320: 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
e330: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
e340: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
e350: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
e360: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
e370: 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
e380: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
e390: 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
e3a0: 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
e3b0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
e3c0: 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
e3d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
e3e0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
e3f0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
e400: 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
e410: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
e420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e430: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e440: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
e450: 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
e460: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
e470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e480: 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f   "CloseConnectio
e490: 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f  n: {0}, exceptio
e4a0: 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  n: {1}",..      
e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4c0: 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a    handle, e));..
e4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4e0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
e4f0: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
e500: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
e510: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e520: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
e530: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
e540: 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
e550: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
e560: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
e570: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
e580: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
e590: 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
e5a0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
e5b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e5c0: 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
e5d0: 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d  dleAsInvalid();.
e5e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e5f0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
e600: 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  }..#if DEBUG..  
e610: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e620: 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a   false;..#else..
e630: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
e640: 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
e650: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
e660: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
e670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
e6b0: 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
e6c0: 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  LE..        publ
e6d0: 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73  ic int WasReleas
e6e0: 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20  edOk()..        
e6f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
e700: 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
e710: 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20  d.Decrement(..  
e720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
e730: 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  f UnsafeNativeMe
e740: 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e  thods.connection
e750: 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  Count);..       
e760: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
e770: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
e780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
e7c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
e7d0: 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
e7e0: 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20  Invalid..       
e7f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e800: 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
e810: 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
e820: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
e830: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
e840: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
e850: 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
e860: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e880: 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c     return (handl
e890: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
e8a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
e8b0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
e8c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
e8d0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
e8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e920: 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d  //....#if DEBUG.
e930: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
e940: 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20  override string 
e950: 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20  ToString()..    
e960: 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
e970: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e980: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
e990: 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
e9a0: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
e9b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e9c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e9d0: 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67   handle.ToString
e9e0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
e9f0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23   }..        }..#
ea00: 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20  endif..    }..  
ea10: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
ea20: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
ea30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ea70: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
ea80: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
ea90: 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
eaa0: 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
eab0: 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
eac0: 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
ead0: 51 4c 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73  QLite statements
eae0: 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
eaf0: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
eb00: 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
eb10: 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
eb20: 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
eb30: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
eb40: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
eb50: 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
eb60: 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
eb70: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
eb80: 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
eb90: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
eba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ebe0: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
ebf0: 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
ec00: 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a  ionHandle cnn;..
ec10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
ec20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec60: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
ec70: 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
ec80: 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
ec90: 50 74 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d  Ptr(SQLiteStatem
eca0: 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d  entHandle stmt).
ecb0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
ecc0: 20 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74          if (stmt
ecd0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
ece0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
ecf0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ed00: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
ed10: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
ed20: 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  tmt.syncRoot)..#
ed30: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
ed40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ed50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
ed60: 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65  turn stmt.handle
ed70: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ed80: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
ed90: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
eda0: 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
edb0: 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
edc0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
edd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ede0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee10: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
ee20: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61  ternal SQLiteSta
ee30: 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c  tementHandle(SQL
ee40: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
ee50: 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20  dle cnn, IntPtr 
ee60: 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20  stmt)..         
ee70: 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
ee80: 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
ee90: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
eea0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
eeb0: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
eec0: 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
eed0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
eee0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
eef0: 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20  cnn = cnn;..    
ef00: 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
ef10: 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20  andle(stmt);..  
ef20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
ef30: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
ef40: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
ef50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
ef90: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
efa0: 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
efb0: 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  le()..          
efc0: 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e    : base(IntPtr.
efd0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b  Zero)..        {
efe0: 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
eff0: 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
f000: 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72  Interlocked.Incr
f010: 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
f020: 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61          ref Unsa
f030: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
f040: 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
f050: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
f060: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
f070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
f0c0: 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
f0d0: 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
f0e0: 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
f0f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f100: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
f110: 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
f120: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f130: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
f140: 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
f150: 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
f160: 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
f170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f180: 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
f190: 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
f1a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f1b0: 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
f1c0: 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
f1d0: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
f1e0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
f1f0: 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65  se.FinalizeState
f200: 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48  ment(cnn, localH
f210: 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  andle);....#if !
f220: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
f230: 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
f240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f250: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
f260: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f270: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
f280: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
f290: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
f2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2b0: 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61      "FinalizeSta
f2c0: 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f  tement: {0}", lo
f2d0: 63 61 6c 48 61 6e 64 6c 65 29 29 3b 0d 0a 20 20  calHandle));..  
f2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f2f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f300: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
f310: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f320: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
f330: 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
f340: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
f350: 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
f360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f380: 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
f390: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
f3a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f3b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3d0: 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c  SQLiteBase.Final
f3e0: 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e  izeStatement(cnn
f3f0: 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
f400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f410: 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
f420: 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
f430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f440: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
f450: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
f460: 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
f470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f480: 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
f490: 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
f4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
f4b0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
f4c0: 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f  hods.statementCo
f4d0: 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  unt);..#endif..#
f4e0: 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
f4f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
f500: 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
f510: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
f520: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
f530: 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
f540: 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
f550: 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
f560: 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
f570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
f580: 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
f590: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
f5a0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
f5b0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
f5c0: 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
f5d0: 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
f5e0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
f5f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
f610: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
f620: 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
f630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f640: 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
f650: 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20  Statement: {0}, 
f660: 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
f670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f680: 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
f690: 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  , e));..        
f6a0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
f6b0: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
f6c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f6d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f6e0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
f6f0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
f700: 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
f710: 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
f720: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
f730: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
f740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f750: 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
f760: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
f770: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f790: 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
f7a0: 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
f7b0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
f7c0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
f7d0: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
f7e0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
f7f0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
f800: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
f810: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
f820: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
f830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f870: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
f880: 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
f890: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
f8a0: 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
f8b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f8c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
f8d0: 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
f8e0: 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ent(..          
f8f0: 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
f900: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74  NativeMethods.st
f910: 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
f920: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
f930: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
f940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f980: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
f990: 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
f9a0: 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
f9b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f9c0: 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
f9d0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
f9e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f9f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
fa00: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
fa10: 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
fa20: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
fa30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
fa40: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
fa50: 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
fa60: 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
fa70: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
fa80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
fa90: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
faa0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
fab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
faf0: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
fb00: 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
fb10: 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
fb20: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
fb30: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
fb40: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
fb50: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
fb60: 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
fb70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
fb80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fb90: 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
fba0: 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
fbb0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
fbc0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
fbd0: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
fbe0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
fbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc30: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
fc40: 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b  egion SQLiteBack
fc50: 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  upHandle Class..
fc60: 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
fc70: 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
fc80: 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
fc90: 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70  ed SQLite backup
fca0: 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69   objects...    i
fcb0: 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
fcc0: 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75  lass SQLiteBacku
fcd0: 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  pHandle : Critic
fce0: 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
fcf0: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
fd00: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
fd10: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
fd20: 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
fd30: 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
fd40: 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
fd50: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
fd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fda0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
fdb0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
fdc0: 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
fdd0: 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
fde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
fe30: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
fe40: 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
fe50: 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42  r IntPtr(SQLiteB
fe60: 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b  ackupHandle back
fe70: 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  up)..        {..
fe80: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
fe90: 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d  backup != null).
fea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
feb0: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
fec0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
fed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
fee0: 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63  ock (backup.sync
fef0: 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
ff00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
ff10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ff20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 61 63        return bac
ff30: 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  kup.handle;..   
ff40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
ff50: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
ff60: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
ff70: 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
ff80: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
ff90: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
ffa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
ffe0: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
fff0: 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
10000 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
10010 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
10020 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a  IntPtr backup)..
10030 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
10040 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
10050 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
10060 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10070 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
10080 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
10090 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
100a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
100b0 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
100c0 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
100d0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62       SetHandle(b
100e0 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20  ackup);..       
100f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
10100 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
10110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10150 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
10160 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 61  private SQLiteBa
10170 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20  ckupHandle()..  
10180 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
10190 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
101a0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
101b0 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
101c0 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
101d0 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a  ked.Increment(..
101e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101f0 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
10200 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f  Methods.backupCo
10210 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  unt);..#endif.. 
10220 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10230 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
10280 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
10290 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52   override bool R
102a0 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a  eleaseHandle()..
102b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
102c0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
102d0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#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 49 6e 74 50 74             IntPt
10310 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20  r localHandle = 
10320 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68  Interlocked.Exch
10330 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ange(..         
10340 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68             ref h
10350 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65  andle, IntPtr.Ze
10360 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ro);....        
10370 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
10380 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
10390 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
103a0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
103b0 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61  iteBase.FinishBa
103c0 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48  ckup(cnn, localH
103d0 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  andle);....#if !
103e0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
103f0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
10400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10410 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
10420 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10430 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
10440 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
10450 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
10460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10470 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75      "FinishBacku
10480 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61  p: {0}", localHa
10490 6e 64 6c 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  ndle));..       
104a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
104b0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
104c0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
104d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
104e0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
104f0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
10500 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
10510 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
10520 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10540 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
10550 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
10560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10570 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10580 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
10590 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b  eBase.FinishBack
105a0 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b  up(cnn, handle);
105b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
105c0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
105d0 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  dle(IntPtr.Zero)
105e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
105f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10600 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
10610 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  dif..#if COUNT_H
10620 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
10630 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
10640 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
10650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10660 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
10670 69 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75  iveMethods.backu
10680 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
10690 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
106a0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
106b0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
106c0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
106d0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
106e0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
106f0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
10700 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
10710 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
10720 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
10730 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
10740 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
10750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
10760 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
10770 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
10780 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
10790 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
107a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
107b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107c0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
107d0 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
107e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
107f0 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73            "Finis
10800 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78  hBackup: {0}, ex
10810 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a  ception: {1}",..
10820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10830 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20          handle, 
10840 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e));..          
10850 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10860 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
10870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10880 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10890 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
108a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
108b0 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
108c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
108d0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
108e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
108f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10900 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
10910 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
10920 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10940 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
10950 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
10960 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10970 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
10980 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
10990 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
109a0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
109b0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
109c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
109d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
109e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a20 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
10a30 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
10a40 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
10a50 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
10a60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10a70 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
10a80 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
10a90 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
10aa0 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
10ab0 74 69 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b  tiveMethods.back
10ac0 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  upCount);..     
10ad0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
10ae0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
10af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
10b30 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
10b40 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
10b50 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
10b60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10b70 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
10b80 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
10b90 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10ba0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
10bb0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
10bc0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
10bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10bf0 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
10c00 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
10c10 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
10c20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10c30 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
10c40 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
10c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c90 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
10ca0 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
10cb0 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
10cc0 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
10cd0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
10ce0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10cf0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
10d00 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
10d10 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
10d20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10d30 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
10d40 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
10d50 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
10d60 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
10d70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
10d80 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
10d90 7d 0d 0a                                         }..