System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact dbf6c4ae333f8f962041cf4517bb6138ad92f4d7:


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 7d 0d 0a 0d 0a             }....
1a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1a30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a40: 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74 20  // BUGBUG: What 
1a50: 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c  about other appl
1a60: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f  ication domains?
1a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a80: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1a90: 20 20 69 66 20 28 5f 53 51 4c 69 74 65 4d 6f 64    if (_SQLiteMod
1aa0: 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ule == IntPtr.Ze
1ab0: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1ac0: 20 20 20 20 20 20 20 5f 53 51 4c 69 74 65 4d 6f         _SQLiteMo
1ad0: 64 75 6c 65 20 3d 20 50 72 65 4c 6f 61 64 53 51  dule = PreLoadSQ
1ae0: 4c 69 74 65 44 6c 6c 28 6e 75 6c 6c 2c 20 6e 75  LiteDll(null, nu
1af0: 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ll);..          
1b00: 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  }..      }....  
1b10: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
1b60: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1b70: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
1b80: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
1b90: 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  s the base direc
1ba0: 74 6f 72 79 20 6f 66 20 74 68 65 20 63 75 72 72  tory of the curr
1bb0: 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d  ent application.
1bc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69  .      /// domai
1bd0: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
1be0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1bf0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1c00: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73       /// The bas
1c10: 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  e directory for 
1c20: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
1c30: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d  ication domain -
1c40: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a  OR- null if it..
1c50: 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74        /// cannot
1c60: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
1c70: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
1c80: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
1c90: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
1ca0: 6e 67 20 47 65 74 42 61 73 65 44 69 72 65 63 74  ng GetBaseDirect
1cb0: 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ory()..      {..
1cc0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1cd0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1ce0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1cf0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
1d00: 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64   If the "PreLoad
1d10: 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63  SQLite_BaseDirec
1d20: 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  tory" environmen
1d30: 74 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20  t variable..    
1d40: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
1d50: 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76 65  s set, use it ve
1d60: 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62  rbatim for the b
1d70: 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  ase directory...
1d80: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1d90: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
1da0: 69 72 65 63 74 6f 72 79 20 3d 20 45 6e 76 69 72  irectory = Envir
1db0: 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f  onment.GetEnviro
1dc0: 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a  nmentVariable(..
1dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
1de0: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73  reLoadSQLite_Bas
1df0: 65 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 0d  eDirectory");...
1e00: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64  .          if (d
1e10: 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c  irectory != null
1e20: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1e30: 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72   return director
1e40: 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
1e50: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
1e60: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
1e70: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65  reLoadSQLite_Use
1e80: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
1e90: 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a  y" environment..
1ea0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1eb0: 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73     variable is s
1ec0: 65 74 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29  et (to anything)
1ed0: 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65  , attempt to use
1ee0: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 0d 0a   the directory..
1ef0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1f00: 20 20 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68     containing th
1f10: 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  e currently exec
1f20: 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 20 28  uting assembly (
1f30: 69 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  i.e...          
1f40: 2f 2f 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e  //       System.
1f50: 44 61 74 61 2e 53 51 4c 69 74 65 29 20 69 6e 74  Data.SQLite) int
1f60: 73 65 61 64 20 6f 66 20 74 68 65 20 61 70 70 6c  sead of the appl
1f70: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 62  ication domain b
1f80: 61 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ase..          /
1f90: 2f 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72  /       director
1fa0: 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  y...          //
1fb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
1fc0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
1fd0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
1fe0: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
1ff0: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
2000: 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44  ite_UseAssemblyD
2010: 69 72 65 63 74 6f 72 79 22 29 20 21 3d 20 6e 75  irectory") != nu
2020: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
2030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2040: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2050: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2060: 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
2070: 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65   assembly = Asse
2080: 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e  mbly.GetExecutin
2090: 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a  gAssembly();....
20a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b0: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21    if (assembly !
20c0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
20d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f0: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
2100: 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
2110: 79 4e 61 6d 65 28 61 73 73 65 6d 62 6c 79 2e 4c  yName(assembly.L
2120: 6f 63 61 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20  ocation);....   
2130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2140: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
2150: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
2160: 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20  ectory))..      
2170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2180: 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63      return direc
2190: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
21a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
21b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
21c0: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
21d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21f0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
2200: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
2210: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2220: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  }....          /
2230: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
2240: 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
2250: 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69   fallback on usi
2260: 6e 67 20 74 68 65 20 62 61 73 65 20 64 69 72 65  ng the base dire
2270: 63 74 6f 72 79 20 6f 66 20 74 68 65 0d 0a 20 20  ctory of the..  
2280: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2290: 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
22a0: 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20  tion domain...  
22b0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
22c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 41 70 70        return App
22d0: 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
22e0: 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
22f0: 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ry;..#else..    
2300: 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
2310: 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
2320: 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
2330: 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20  ssembly();....  
2340: 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65          if (asse
2350: 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  mbly == null).. 
2360: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2370: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
2380: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e         AssemblyN
2390: 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65  ame assemblyName
23a0: 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e   = assembly.GetN
23b0: 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ame();....      
23c0: 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79      if (assembly
23d0: 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Name == null).. 
23e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
23f0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
2400: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
2410: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2420: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50 61         return Pa
2430: 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
2440: 61 6d 65 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65  ame(assemblyName
2450: 2e 43 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20 20  .CodeBase);..   
2460: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2470: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
2480: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2490: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
24a0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
24b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
24c0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 23 65 6e  eturn null;..#en
24d0: 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  dif..      }....
24e0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
24f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2530: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
2540: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2550: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
2560: 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  e dynamic link l
2570: 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
2580: 20 72 65 71 75 69 72 65 73 20 61 20 73 75 66 66   requires a suff
2590: 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e  ix..      /// an
25a0: 64 20 61 64 64 73 20 69 74 20 69 66 20 6e 65 63  d adds it if nec
25b0: 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  essary...      /
25c0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
25d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
25e0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
25f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
2600: 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63  original dynamic
2610: 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69   link library fi
2620: 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65  le name to inspe
2630: 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ct...      /// <
2640: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
2650: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2660: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61      /// The dyna
2670: 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79  mic link library
2680: 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73   file name, poss
2690: 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f  ibly modified to
26a0: 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20   include an..   
26b0: 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e     /// extension
26c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
26d0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
26e0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
26f0: 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46 69 6c  ring FixUpDllFil
2700: 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eName(..        
2710: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
2720: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
2730: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2740: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
2750: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
2760: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
2770: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2780: 20 20 20 20 50 6c 61 74 66 6f 72 6d 49 44 20 70      PlatformID p
2790: 6c 61 74 66 6f 72 6d 49 64 20 3d 20 45 6e 76 69  latformId = Envi
27a0: 72 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72 73 69 6f  ronment.OSVersio
27b0: 6e 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a 0d 0a 20  n.Platform;.... 
27c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
27d0: 28 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20  ((platformId == 
27e0: 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32  PlatformID.Win32
27f0: 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  S) ||..         
2800: 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f           (platfo
2810: 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d  rmId == Platform
2820: 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29  ID.Win32Windows)
2830: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
2840: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
2850: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
2860: 2e 57 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20  .Win32NT) ||..  
2870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2880: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
2890: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 43 45 29  latformID.WinCE)
28a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
28b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
28c0: 20 20 20 20 20 20 69 66 20 28 21 66 69 6c 65 4e        if (!fileN
28d0: 61 6d 65 2e 45 6e 64 73 57 69 74 68 28 44 6c 6c  ame.EndsWith(Dll
28e0: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a  FileExtension,..
28f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2900: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
2910: 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
2920: 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a  alIgnoreCase))..
2930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2940: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2950: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2960: 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c  n fileName + Dll
2970: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a  FileExtension;..
2980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2990: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
29a0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
29b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
29c0: 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d  eturn fileName;.
29d0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
29e0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2a30: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2a40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
2a50: 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
2a60: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
2a70: 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
2a80: 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20  e current..     
2a90: 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e 0d 0a 20   /// process... 
2aa0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2ab0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
2ac0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2ad0: 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f  /// The processo
2ae0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f  r architecture o
2af0: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
2b00: 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20  ocess -OR- null 
2b10: 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  if it..      ///
2b20: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
2b30: 6d 69 6e 65 64 2e 20 20 41 6c 77 61 79 73 20 72  mined.  Always r
2b40: 65 74 75 72 6e 73 20 61 6e 20 65 6d 70 74 79 20  eturns an empty 
2b50: 73 74 72 69 6e 67 20 77 68 65 6e 20 72 75 6e 6e  string when runn
2b60: 69 6e 67 20 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f  ing on..      //
2b70: 2f 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61  / the .NET Compa
2b80: 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20  ct Framework... 
2b90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2ba0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
2bb0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
2bc0: 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
2bd0: 68 69 74 65 63 74 75 72 65 28 29 0d 0a 20 20 20  hitecture()..   
2be0: 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
2bf0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2c00: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2c10: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
2c20: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50   NOTE: If the "P
2c30: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
2c40: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
2c50: 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  re" environment.
2c60: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
2c70: 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20      variable is 
2c80: 73 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62  set, use it verb
2c90: 61 74 69 6d 20 66 6f 72 20 74 68 65 20 63 75 72  atim for the cur
2ca0: 72 65 6e 74 20 70 72 6f 63 65 73 73 6f 72 0d 0a  rent processor..
2cb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2cc0: 20 20 20 61 72 63 68 69 74 65 63 74 75 72 65 2e     architecture.
2cd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
2ce0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
2cf0: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
2d00: 65 63 74 75 72 65 20 3d 20 45 6e 76 69 72 6f 6e  ecture = Environ
2d10: 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d  ment.GetEnvironm
2d20: 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20 20  entVariable(..  
2d30: 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
2d40: 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65  LoadSQLite_Proce
2d50: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
2d60: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
2d70: 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
2d80: 63 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e 75  chitecture != nu
2d90: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2da0: 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73     return proces
2db0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b  sorArchitecture;
2dc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
2dd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42  ..          // B
2de0: 55 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69 73  UGBUG: Will this
2df0: 20 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69 61   always be relia
2e00: 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  ble?..          
2e10: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  //..          re
2e20: 74 75 72 6e 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  turn Environment
2e30: 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  .GetEnvironmentV
2e40: 61 72 69 61 62 6c 65 28 50 52 4f 43 45 53 53 4f  ariable(PROCESSO
2e50: 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 29 3b  R_ARCHITECTURE);
2e60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
2e70: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2e80: 20 2f 2f 20 42 55 47 42 55 47 3a 20 4e 6f 20 77   // BUGBUG: No w
2e90: 61 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ay to determine 
2ea0: 74 68 69 73 20 76 61 6c 75 65 20 6f 6e 20 74 68  this value on th
2eb0: 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d 0a  e .NET Compact..
2ec0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2ed0: 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 28       Framework (
2ee0: 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e 64 6f  running on Windo
2ef0: 77 73 20 43 45 2c 20 65 74 63 29 2e 0d 0a 20 20  ws CE, etc)...  
2f00: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2f10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
2f20: 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 23 65 6e 64  ing.Empty;..#end
2f30: 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  if..      }.... 
2f40: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2f90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2fa0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47  ry>..      /// G
2fb0: 69 76 65 6e 20 74 68 65 20 70 72 6f 63 65 73 73  iven the process
2fc0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
2fd0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 6d   returns the nam
2fe0: 65 20 6f 66 20 74 68 65 20 70 6c 61 74 66 6f 72  e of the platfor
2ff0: 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  m...      /// </
3000: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3010: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3020: 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  "processorArchit
3030: 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20  ecture">..      
3040: 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f  /// The processo
3050: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74  r architecture t
3060: 6f 20 62 65 20 74 72 61 6e 73 6c 61 74 65 64 20  o be translated 
3070: 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61  to a platform na
3080: 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
3090: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
30a0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
30b0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74      /// The plat
30c0: 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68  form name for th
30d0: 65 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63  e specified proc
30e0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
30f0: 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20  re -OR- null..  
3100: 20 20 20 20 2f 2f 2f 20 69 66 20 69 74 20 63 61      /// if it ca
3110: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
3120: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
3130: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
3140: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
3150: 73 74 72 69 6e 67 20 47 65 74 50 6c 61 74 66 6f  string GetPlatfo
3160: 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  rmName(..       
3170: 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73     string proces
3180: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 0d  sorArchitecture.
3190: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
31a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31b0: 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
31c0: 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65 73  llOrEmpty(proces
31d0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
31e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
31f0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
3200: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
3210: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
3220: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
3230: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3240: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
3250: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
3260: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
3270: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3280: 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
3290: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
32a0: 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a   platformName;..
32b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32c0: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
32d0: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
32e0: 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d  ms.TryGetValue(.
32f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3300: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
3310: 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f 75  Architecture, ou
3320: 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29  t platformName))
3330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3340: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3350: 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61 74       return plat
3360: 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  formName;..     
3370: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
3380: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3390: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
33a0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
33b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
33c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
3400: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3410: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
3420: 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74  tempts to load t
3430: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
3440: 20 6c 69 62 72 61 72 79 20 62 61 73 65 64 20 6f   library based o
3450: 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  n the specified.
3460: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63  .      /// direc
3470: 74 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73 73  tory and process
3480: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e  or architecture.
3490: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
34a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
34b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
34c0: 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20  irectory">..    
34d0: 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64    /// The base d
34e0: 69 72 65 63 74 6f 72 79 20 74 6f 20 75 73 65 2c  irectory to use,
34f0: 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c   null for defaul
3500: 74 20 28 74 68 65 20 62 61 73 65 20 64 69 72 65  t (the base dire
3510: 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20 20 20 20  ctory of..      
3520: 2f 2f 2f 20 74 68 65 20 63 75 72 72 65 6e 74 20  /// the current 
3530: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
3540: 69 6e 29 2e 20 20 54 68 69 73 20 64 69 72 65 63  in).  This direc
3550: 74 6f 72 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74  tory should cont
3560: 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  ain the..      /
3570: 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  // processor arc
3580: 68 69 74 65 63 74 75 72 65 20 73 70 65 63 69 66  hitecture specif
3590: 69 63 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69  ic sub-directori
35a0: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
35b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
35c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
35d0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
35e0: 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f  cture">..      /
35f0: 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74 65 64  // The requested
3600: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
3610: 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f  tecture, null fo
3620: 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 0d 0a  r default (the..
3630: 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
3640: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
3650: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
3660: 70 72 6f 63 65 73 73 29 2e 20 20 54 68 69 73 20  process).  This 
3670: 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20  caller should.. 
3680: 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20       /// almost 
3690: 61 6c 77 61 79 73 20 73 70 65 63 69 66 79 20 6e  always specify n
36a0: 75 6c 6c 20 66 6f 72 20 74 68 69 73 20 70 61 72  ull for this par
36b0: 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f  ameter...      /
36c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
36d0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
36e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
36f0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
3700: 6e 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65 64  ndle as returned
3710: 20 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79 20   by LoadLibrary 
3720: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
3730: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 74  ..      /// if t
3740: 68 65 20 6c 6f 61 64 69 6e 67 20 66 61 69 6c 73  he loading fails
3750: 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e   for any reason.
3760: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
3770: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
3780: 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
3790: 50 74 72 20 50 72 65 4c 6f 61 64 53 51 4c 69 74  Ptr PreLoadSQLit
37a0: 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20  eDll(..         
37b0: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
37c0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  y,..          st
37d0: 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72  ring processorAr
37e0: 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20  chitecture..    
37f0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
3800: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
3810: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
3820: 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66  E: If the specif
3830: 69 65 64 20 62 61 73 65 20 64 69 72 65 63 74 6f  ied base directo
3840: 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20  ry is null, use 
3850: 74 68 65 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20  the default...  
3860: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3870: 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74        if (direct
3880: 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
3890: 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65              dire
38a0: 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73 65 44  ctory = GetBaseD
38b0: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20  irectory();.... 
38c0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
38d0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
38e0: 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
38f0: 71 75 65 72 79 20 74 68 65 20 62 61 73 65 20 64  query the base d
3900: 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70 20 6e  irectory, stop n
3910: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ow...          /
3920: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
3930: 28 64 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  (directory == nu
3940: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
3950: 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
3960: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
3970: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3980: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
3990: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
39a0: 6c 69 62 72 61 72 79 20 65 78 69 73 74 73 20 69  library exists i
39b0: 6e 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  n the base direc
39c0: 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20  tory..          
39d0: 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c  //       itself,
39e0: 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20   stop now...    
39f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
3a00: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
3a10: 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69  ame = FixUpDllFi
3a20: 6c 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62  leName(Path.Comb
3a30: 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a  ine(directory,..
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
3a50: 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20  LITE_DLL));.... 
3a60: 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
3a70: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
3a80: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
3a90: 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
3aa0: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
3ab0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
3ac0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
3ad0: 65 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63  e specified proc
3ae0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
3af0: 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20  re is null, use 
3b00: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
3b10: 2f 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 2e  /       default.
3b20: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
3b30: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
3b40: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
3b50: 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
3b60: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
3b70: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
3b80: 65 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72  e = GetProcessor
3b90: 41 72 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d  Architecture();.
3ba0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
3bb0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
3bc0: 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64  TE: If we failed
3bd0: 20 74 6f 20 71 75 65 72 79 20 74 68 65 20 70 72   to query the pr
3be0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
3bf0: 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  ture, stop now..
3c00: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
3c10: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
3c20: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
3c30: 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re == null)..   
3c40: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3c50: 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
3c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
3c70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
3c80: 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c  E: Build the ful
3c90: 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20  l path and file 
3ca0: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
3cb0: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
3cc0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
3cd0: 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
3ce0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
3cf0: 74 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20  tecture name... 
3d00: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
3d10: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
3d20: 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61  = FixUpDllFileNa
3d30: 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28  me(Path.Combine(
3d40: 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72  Path.Combine(dir
3d50: 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  ectory,..       
3d60: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
3d70: 41 72 63 68 69 74 65 63 74 75 72 65 29 2c 20 53  Architecture), S
3d80: 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a  QLITE_DLL));....
3d90: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3da0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
3db0: 20 49 66 20 74 68 65 20 66 69 6c 65 20 6e 61 6d   If the file nam
3dc0: 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70  e based on the p
3dd0: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
3de0: 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20  cture name..    
3df0: 20 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20        // is not 
3e00: 66 6f 75 6e 64 2c 20 74 72 79 20 75 73 69 6e 67  found, try using
3e10: 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20   the associated 
3e20: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
3e30: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3e40: 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c          if (!Fil
3e50: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
3e60: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
3e70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3e80: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
3e90: 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d    // NOTE: Attem
3ea0: 70 74 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20  pt to translate 
3eb0: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
3ec0: 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 61 0d  chitecture to a.
3ed0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3ee0: 2f 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d  /       platform
3ef0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
3f00: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
3f10: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
3f20: 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65  latformName = Ge
3f30: 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72  tPlatformName(pr
3f40: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
3f50: 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ure);....       
3f60: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
3f70: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
3f80: 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
3f90: 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20  o translate the 
3fa0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73  platform name, s
3fb0: 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
3fc0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
3fd0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 6c            if (pl
3fe0: 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75  atformName == nu
3ff0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
4000: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
4010: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
4020: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
4030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4040: 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65   NOTE: Build the
4050: 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66   full path and f
4060: 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
4070: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
4080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4090: 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75         library u
40a0: 73 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f 72  sing the platfor
40b0: 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20  m name...       
40c0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
40d0: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
40e0: 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65  e = FixUpDllFile
40f0: 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e  Name(Path.Combin
4100: 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64  e(Path.Combine(d
4110: 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20  irectory,..     
4120: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 61               pla
4130: 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 53 51 4c 49  tformName), SQLI
4140: 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20  TE_DLL));....   
4150: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
4160: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
4170: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c  NOTE: If the fil
4180: 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  e does not exist
4190: 2c 20 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f  , skip trying to
41a0: 20 6c 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20   load it...     
41b0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
41c0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
41d0: 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
41e0: 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
41f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4200: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
4210: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
4220: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
4230: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4240: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4250: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
4260: 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79 20  E: Show exactly 
4270: 77 68 65 72 65 20 77 65 20 61 72 65 20 74 72 79  where we are try
4280: 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  ing to load the 
4290: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
42a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53        //       S
42b0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 66 72  QLite library fr
42c0: 6f 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  om...           
42d0: 20 20 20 2f 2f 0d 0a 23 69 66 20 21 4e 45 54 5f     //..#if !NET_
42e0: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
42f0: 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20  ACE_PRELOAD..   
4300: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
4310: 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
4320: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
4330: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
4340: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
4350: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
4360: 20 20 20 20 20 20 20 20 20 20 20 20 22 54 72 79              "Try
4370: 69 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69  ing to load nati
4380: 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
4390: 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c 0d 0a  y \"{0}\"...",..
43a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43b0: 20 20 66 69 6c 65 4e 61 6d 65 29 29 3b 0d 0a 23    fileName));..#
43c0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
43d0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
43e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
43f0: 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61  : Attempt to loa
4400: 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  d the native lib
4410: 72 61 72 79 2e 20 20 54 68 69 73 20 77 69 6c 6c  rary.  This will
4420: 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20   either..       
4430: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4440: 72 65 74 75 72 6e 20 61 20 76 61 6c 69 64 20 6e  return a valid n
4450: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
4460: 64 6c 65 2c 20 72 65 74 75 72 6e 20 49 6e 74 50  dle, return IntP
4470: 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20  tr.Zero,..      
4480: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
4490: 20 6f 72 20 74 68 72 6f 77 20 61 6e 20 65 78 63   or throw an exc
44a0: 65 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  eption...       
44b0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
44c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
44d0: 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65  LoadLibrary(file
44e0: 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
44f0: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
4500: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
4510: 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
4520: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
4530: 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
4540: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
4550: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
4560: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
4570: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
4580: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
4590: 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20  PRELOAD..       
45a0: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
45b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
45c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
45d0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
45e0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69       // NOTE: Fi
45f0: 72 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61  rst, grab the la
4600: 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e  st Win32 error n
4610: 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  umber...        
4620: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
4630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4640: 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20  int lastError = 
4650: 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57  Marshal.GetLastW
4660: 69 6e 33 32 45 72 72 6f 72 28 29 3b 0d 0a 0d 0a  in32Error();....
4670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4680: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4690: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
46a0: 20 53 68 6f 77 20 77 68 65 72 65 20 77 65 20 66   Show where we f
46b0: 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 74 68  ailed to load th
46c0: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d  e native SQLite.
46d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
46e0: 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72     //       libr
46f0: 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e 67 20 77  ary from along w
4700: 69 74 68 20 74 68 65 20 57 69 6e 33 32 20 65 72  ith the Win32 er
4710: 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d 0a 20 20  ror code and..  
4720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4730: 2f 2f 20 20 20 20 20 20 20 65 78 63 65 70 74 69  //       excepti
4740: 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d  on information..
4750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4760: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4770: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
4780: 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
4790: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
47a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
47b0: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
47c0: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
47d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47e0: 20 20 22 46 61 69 6c 65 64 20 74 6f 20 6c 6f 61    "Failed to loa
47f0: 64 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  d native SQLite 
4800: 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20  library \"{0}\" 
4810: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
4820: 20 20 20 20 20 20 20 20 20 20 20 22 28 67 65 74             "(get
4830: 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29  LastError = {1})
4840: 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {2}",..       
4850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
4860: 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72  ileName, lastErr
4870: 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  or, e)); /* thro
4880: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
4890: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
48a0: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
48b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
48c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
48d0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
48e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
48f0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
4900: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
4910: 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
4920: 65 72 6f 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  ero;..      }..#
4930: 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20  endif..#endif.. 
4940: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
4950: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49a0: 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
49b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
49c0: 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ORK..    //..   
49d0: 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65   // NOTE: On the
49e0: 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
49f0: 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74  amework, the nat
4a00: 69 76 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ive interop asse
4a10: 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f  mbly must..    /
4a20: 2f 20 20 20 20 20 20 20 62 65 20 75 73 65 64 20  /       be used 
4a30: 62 65 63 61 75 73 65 20 69 74 20 70 72 6f 76 69  because it provi
4a40: 64 65 73 20 73 65 76 65 72 61 6c 20 77 6f 72 6b  des several work
4a50: 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20  arounds to .NET 
4a60: 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20  Compact..    // 
4a70: 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20        Framework 
4a80: 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f  limitations impo
4a90: 72 74 61 6e 74 20 66 6f 72 20 70 72 6f 70 65 72  rtant for proper
4aa0: 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68   operation of th
4ab0: 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20  e core..    //  
4ac0: 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61       System.Data
4ad0: 2e 53 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e  .SQLite function
4ae0: 61 6c 69 74 79 20 28 65 2e 67 2e 20 62 65 69 6e  ality (e.g. bein
4af0: 67 20 61 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a  g able to bind..
4b00: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 61 72      //       par
4b10: 61 6d 65 74 65 72 73 20 61 6e 64 20 68 61 6e 64  ameters and hand
4b20: 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73  le column values
4b30: 20 6f 66 20 74 79 70 65 73 20 49 6e 74 36 34 20   of types Int64 
4b40: 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20  and Double)...  
4b50: 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e    //..    intern
4b60: 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  al const string 
4b70: 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51  SQLITE_DLL = "SQ
4b80: 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 30 38 35  Lite.Interop.085
4b90: 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51  .dll";..#elif SQ
4ba0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
4bb0: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
4bc0: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
4bd0: 66 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53  f the standard S
4be0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73  QLite library is
4bf0: 20 65 6e 61 62 6c 65 64 2c 20 75 73 65 20 69 74   enabled, use it
4c00: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 70  ...    //..    p
4c10: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
4c20: 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d  ing SQLITE_DLL =
4c30: 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c   "sqlite3";..#el
4c40: 69 66 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  if USE_INTEROP_D
4c50: 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  LL..    //..    
4c60: 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
4c70: 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76  se, if the nativ
4c80: 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  e SQLite interop
4c90: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61   assembly is ena
4ca0: 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20  bled,..    //   
4cb0: 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20      use it...   
4cc0: 20 2f 2f 0d 0a 20 20 20 20 70 72 69 76 61 74 65   //..    private
4cd0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
4ce0: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69  LITE_DLL = "SQLi
4cf0: 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b  te.Interop.dll";
4d00: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d  ..#else..    //.
4d10: 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69  .    // NOTE: Fi
4d20: 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68  nally, assume th
4d30: 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64  at the mixed-mod
4d40: 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65  e assembly is be
4d50: 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f  ing used...    /
4d60: 2f 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63  /..    private c
4d70: 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
4d80: 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d  TE_DLL = "System
4d90: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c  .Data.SQLite.dll
4da0: 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  ";..#endif....  
4db0: 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f    // This sectio
4dc0: 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63  n uses interop c
4dd0: 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66  alls that also f
4de0: 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68  etch text length
4df0: 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e   to optimize con
4e00: 76 65 72 73 69 6f 6e 2e 20 20 0d 0a 20 20 20 20  version.  ..    
4e10: 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68  // When using th
4e20: 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20  e standard dll, 
4e30: 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74  we can replace t
4e40: 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20  hese calls with 
4e50: 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61  normal sqlite ca
4e60: 6c 6c 73 20 61 6e 64 20 0d 0a 20 20 20 20 2f 2f  lls and ..    //
4e70: 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20   do unoptimized 
4e80: 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74  conversions inst
4e90: 65 61 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a  ead afterwards..
4ea0: 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65      #region inte
4eb0: 72 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65  rop added textle
4ec0: 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69  ngth calls....#i
4ed0: 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
4ee0: 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  RD....    [DllIm
4ef0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
4f00: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
4f10: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
4f20: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e  tPtr sqlite3_bin
4f30: 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65  d_parameter_name
4f40: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
4f50: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
4f60: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
4f70: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
4f80: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
4f90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4fa0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
4fb0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
4fc0: 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e  database_name_in
4fd0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
4fe0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
4ff0: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
5000: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5010: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
5020: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5030: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
5040: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
5050: 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74  abase_name16_int
5060: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
5070: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
5080: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
5090: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
50a0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
50b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
50c0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
50d0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
50e0: 74 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  type_interop(Int
50f0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
5100: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
5110: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
5120: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
5130: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
5140: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
5150: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
5160: 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69  umn_decltype16_i
5170: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
5180: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
5190: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
51a0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
51b0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
51c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
51d0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
51e0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
51f0: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
5200: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
5210: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
5220: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
5230: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5240: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
5250: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
5260: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
5270: 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  n_name16_interop
5280: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
5290: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
52a0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
52b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
52c0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
52d0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
52e0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
52f0: 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
5300: 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
5310: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
5320: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
5330: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
5340: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5350: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5360: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
5370: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
5380: 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
5390: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
53a0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
53b0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
53c0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
53d0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
53e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
53f0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
5400: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
5410: 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72  table_name_inter
5420: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
5430: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
5440: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
5450: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5460: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
5470: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5480: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
5490: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
54a0: 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
54b0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
54c0: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
54d0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
54e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
54f0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
5500: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
5510: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
5520: 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72  olumn_text_inter
5530: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
5540: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
5550: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
5560: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
5570: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
5580: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
5590: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
55a0: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
55b0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
55c0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
55d0: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
55e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
55f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
5600: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5610: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
5620: 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f   sqlite3_errmsg_
5630: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
5640: 62 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  b, out int len);
5650: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
5660: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5670: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
5680: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
5690: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
56a0: 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65  te3_prepare_inte
56b0: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49  rop(IntPtr db, I
56c0: 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20  ntPtr pSql, int 
56d0: 6e 42 79 74 65 73 2c 20 6f 75 74 20 49 6e 74 50  nBytes, out IntP
56e0: 74 72 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74  tr stmt, out Int
56f0: 50 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 6f  Ptr ptrRemain, o
5700: 75 74 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b  ut int nRemain);
5710: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
5720: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
5730: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
5740: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
5750: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
5760: 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e  te3_table_column
5770: 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f  _metadata_intero
5780: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
5790: 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
57a0: 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
57b0: 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20  [] colName, out 
57c0: 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79  IntPtr ptrDataTy
57d0: 70 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70  pe, out IntPtr p
57e0: 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75 74 20 69  trCollSeq, out i
57f0: 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20  nt notNull, out 
5800: 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  int primaryKey, 
5810: 6f 75 74 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c  out int autoInc,
5820: 20 6f 75 74 20 69 6e 74 20 64 74 4c 65 6e 2c 20   out int dtLen, 
5830: 6f 75 74 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d  out int csLen);.
5840: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
5850: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
5860: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5870: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
5880: 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
5890: 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  text_interop(Int
58a0: 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74 20 6c  Ptr p, out int l
58b0: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
58c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
58d0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
58e0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
58f0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
5900: 61 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65  alue_text16_inte
5910: 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75  rop(IntPtr p, ou
5920: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 23  t int len);....#
5930: 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a  if INTEROP_LOG..
5940: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5950: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5960: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5970: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
5980: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
5990: 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74 65 72  config_log_inter
59a0: 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  op();..#endif..#
59b0: 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
59c0: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
59d0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
59e0: 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e      // These fun
59f0: 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69 73 74  ctions add exist
5a00: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ing functionalit
5a10: 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c 69  y on top of SQLi
5a20: 74 65 20 61 6e 64 20 72 65 71 75 69 72 65 20 61  te and require a
5a30: 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74 20 74   little effort t
5a40: 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20 77 6f  o..    // get wo
5a50: 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69 6e 67  rking when using
5a60: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
5a70: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
5a80: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
5a90: 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74 69 6f  op added functio
5aa0: 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21 53  nality....#if !S
5ab0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
5ac0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
5ad0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
5ae0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5af0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
5b00: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
5b10: 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28  3_close_interop(
5b20: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
5b30: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5b40: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
5b50: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5b60: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
5b70: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
5b80: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69  reate_function_i
5b90: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
5ba0: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
5bb0: 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
5bc0: 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
5bd0: 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
5be0: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
5bf0: 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
5c00: 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
5c10: 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e  lback ffinal, in
5c20: 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d  t needCollSeq);.
5c30: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
5c40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
5c50: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5c60: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
5c70: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
5c80: 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65  e3_finalize_inte
5c90: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
5ca0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
5cb0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
5cc0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
5cd0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
5ce0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
5cf0: 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
5d00: 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sh_interop(IntPt
5d10: 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  r backup);....  
5d20: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5d30: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
5d40: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5d50: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
5d60: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
5d70: 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  en_interop(byte[
5d80: 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
5d90: 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
5da0: 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75 74 20 49  num flags, out I
5db0: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20  ntPtr db);....  
5dc0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
5dd0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
5de0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
5df0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
5e00: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
5e10: 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74  en16_interop(byt
5e20: 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65  e[] utf8Filename
5e30: 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  , SQLiteOpenFlag
5e40: 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75 74  sEnum flags, out
5e50: 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
5e60: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
5e70: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
5e80: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5e90: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
5ea0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
5eb0: 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e  reset_interop(In
5ec0: 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
5ed0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
5ee0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
5ef0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
5f00: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
5f10: 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72  e3_changes_inter
5f20: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
5f30: 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49  #endif..// !SQLI
5f40: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
5f50: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
5f60: 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e  .    // The stan
5f70: 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71  dard api call eq
5f80: 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65  uivalents of the
5f90: 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63   above interop c
5fa0: 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
5fb0: 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73 69  n standard versi
5fc0: 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66  ons of interop f
5fd0: 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20  unctions....#if 
5fe0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
5ff0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
6000: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6010: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6020: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6030: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6040: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6050: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6060: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6070: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6080: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
6090: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
60a0: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
60b0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
60c0: 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
60d0: 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45  .#if !INTEROP_LE
60e0: 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20  GACY_CLOSE..#if 
60f0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
6100: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
6110: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6120: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
6130: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
6140: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
6150: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
6160: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
6170: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
6180: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6190: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
61a0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
61b0: 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e  ite3_close_v2(In
61c0: 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37  tPtr db); /* 3.7
61d0: 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d  .14+ */..#endif.
61e0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
61f0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6200: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
6210: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
6220: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
6230: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
6240: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
6250: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
6260: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
6270: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
6280: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
6290: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
62a0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
62b0: 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50  te_function(IntP
62c0: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
62d0: 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  rName, int nArgs
62e0: 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
62f0: 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
6300: 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
6310: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
6320: 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e  fstep, SQLiteFin
6330: 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61  alCallback ffina
6340: 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  l);....#if !PLAT
6350: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
6360: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
6370: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
6380: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
6390: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
63a0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
63b0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
63c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
63d0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
63e0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
63f0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
6400: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
6410: 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
6420: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
6430: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6440: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6450: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6460: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6470: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6480: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6490: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
64a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
64b0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
64c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
64d0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
64e0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
64f0: 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20  e3_reset(IntPtr 
6500: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
6510: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6520: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6530: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6540: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6550: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6560: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6570: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6580: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6590: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
65a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
65b0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
65c0: 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
65d0: 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e  arameter_name(In
65e0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
65f0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
6600: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6610: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6620: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6630: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6640: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6650: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6660: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6670: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6680: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
6690: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
66a0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
66b0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
66c0: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49  _database_name(I
66d0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
66e0: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
66f0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
6700: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
6710: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6720: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
6730: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
6740: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
6750: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
6760: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
6770: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
6780: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6790: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
67a0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
67b0: 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31  n_database_name1
67c0: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
67d0: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
67e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
67f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
6800: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
6810: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
6820: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
6830: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
6840: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
6850: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
6860: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
6870: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
6880: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
6890: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
68a0: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e  lumn_decltype(In
68b0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
68c0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
68d0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
68e0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
68f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6900: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6910: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6920: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6930: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6940: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6950: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
6960: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6970: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
6980: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
6990: 5f 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50  _decltype16(IntP
69a0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
69b0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
69c0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
69d0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
69e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
69f0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
6a00: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
6a10: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
6a20: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
6a30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6a40: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
6a50: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6a60: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
6a70: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
6a80: 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
6a90: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
6aa0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
6ab0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
6ac0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
6ad0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
6ae0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
6af0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
6b00: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
6b10: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
6b20: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
6b30: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
6b40: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
6b50: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
6b60: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e  column_name16(In
6b70: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
6b80: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
6b90: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6ba0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6bb0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6bc0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6bd0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6be0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6bf0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6c00: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6c10: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
6c20: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6c30: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
6c40: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
6c50: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74  _origin_name(Int
6c60: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
6c70: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
6c80: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
6c90: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
6ca0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6cb0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
6cc0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
6cd0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
6ce0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
6cf0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6d00: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
6d10: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6d20: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
6d30: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
6d40: 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e  origin_name16(In
6d50: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
6d60: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
6d70: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
6d80: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
6d90: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
6da0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
6db0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
6dc0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
6dd0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
6de0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
6df0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
6e00: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
6e10: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
6e20: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
6e30: 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50  _table_name(IntP
6e40: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
6e50: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
6e60: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6e70: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
6e80: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6e90: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
6ea0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
6eb0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
6ec0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
6ed0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6ee0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
6ef0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6f00: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
6f10: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
6f20: 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  able_name16(IntP
6f30: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
6f40: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
6f50: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
6f60: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
6f70: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
6f80: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
6f90: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
6fa0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
6fb0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
6fc0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
6fd0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
6fe0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
6ff0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
7000: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
7010: 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ext(IntPtr stmt,
7020: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
7030: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7040: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7050: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7060: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7070: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7080: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7090: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
70a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
70b0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
70c0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
70d0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
70e0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
70f0: 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e  column_text16(In
7100: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
7110: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
7120: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7130: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
7140: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
7150: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
7160: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
7170: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
7180: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
7190: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
71a0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
71b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
71c0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
71d0: 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  r sqlite3_errmsg
71e0: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
71f0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7200: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7210: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7220: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7230: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7240: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7250: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
7260: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7270: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
7280: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
7290: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
72a0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
72b0: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
72c0: 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
72d0: 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
72e0: 74 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  tes, out IntPtr 
72f0: 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74 72  stmt, out IntPtr
7300: 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a   ptrRemain);....
7310: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
7320: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7330: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
7340: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
7350: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
7360: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
7370: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
7380: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7390: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
73a0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
73b0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
73c0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
73d0: 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
73e0: 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49  olumn_metadata(I
73f0: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
7400: 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
7410: 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
7420: 63 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74  colName, out Int
7430: 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
7440: 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 43   out IntPtr ptrC
7450: 6f 6c 6c 53 65 71 2c 20 6f 75 74 20 69 6e 74 20  ollSeq, out int 
7460: 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74  notNull, out int
7470: 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74   primaryKey, out
7480: 20 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a   int autoInc);..
7490: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
74a0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
74b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
74c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
74d0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
74e0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
74f0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7500: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7510: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7520: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7530: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7540: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
7550: 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74  3_value_text(Int
7560: 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
7570: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7580: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
7590: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
75a0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
75b0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
75c0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
75d0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
75e0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
75f0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
7600: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
7610: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
7620: 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
7630: 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 70  _text16(IntPtr p
7640: 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  );....#endif..//
7650: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
7660: 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
7670: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
7680: 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
7690: 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
76a0: 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
76b0: 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
76c0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20  method...    // 
76d0: 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20  All of them are 
76e0: 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20  "nice to haves" 
76f0: 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72  and not necessar
7700: 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76  ily "need to hav
7710: 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  es"...    #regio
7720: 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  n no equivalent 
7730: 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d  standard method.
7740: 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
7750: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
7760: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
7770: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
7780: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7790: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
77a0: 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65  3_context_collse
77b0: 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  q_interop(IntPtr
77c0: 20 63 6f 6e 74 65 78 74 2c 20 6f 75 74 20 69 6e   context, out in
77d0: 74 20 74 79 70 65 2c 20 6f 75 74 20 69 6e 74 20  t type, out int 
77e0: 65 6e 63 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  enc, out int len
77f0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
7800: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
7810: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
7820: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
7830: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
7840: 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e  t_collcompare_in
7850: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
7860: 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c  text, byte[] p1,
7870: 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65   int p1len, byte
7880: 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e  [] p2, int p2len
7890: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
78a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
78b0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
78c0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
78d0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
78e0: 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77  lite3_cursor_row
78f0: 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
7900: 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73  r stmt, int curs
7910: 6f 72 2c 20 6f 75 74 20 6c 6f 6e 67 20 72 6f 77  or, out long row
7920: 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  id);....    [Dll
7930: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7940: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
7950: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
7960: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
7970: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
7980: 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f  lumn_info_intero
7990: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
79a0: 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74  e[] catalog, byt
79b0: 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62  e[] IndexName, b
79c0: 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65  yte[] ColumnName
79d0: 2c 20 6f 75 74 20 69 6e 74 20 73 6f 72 74 4f 72  , out int sortOr
79e0: 64 65 72 2c 20 6f 75 74 20 69 6e 74 20 6f 6e 45  der, out int onE
79f0: 72 72 6f 72 2c 20 6f 75 74 20 49 6e 74 50 74 72  rror, out IntPtr
7a00: 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 6f 75 74 20   Collation, out 
7a10: 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d  int colllen);...
7a20: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7a30: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
7a40: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
7a50: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
7a60: 6c 69 74 65 33 5f 72 65 73 65 74 61 6c 6c 5f 69  lite3_resetall_i
7a70: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
7a80: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
7a90: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
7aa0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
7ab0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
7ac0: 74 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f  t sqlite3_table_
7ad0: 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49  cursor_interop(I
7ae0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
7af0: 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f  db, int tableRoo
7b00: 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69  tPage);....#endi
7b10: 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54  f..// !SQLITE_ST
7b20: 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65  ANDARD....    #e
7b30: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7b40: 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49 20  // Standard API 
7b50: 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72  calls global acr
7b60: 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54  oss versions.  T
7b70: 68 65 72 65 20 61 72 65 20 61 20 66 65 77 20 69  here are a few i
7b80: 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65  nstances of inte
7b90: 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f  rop calls..    /
7ba0: 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e 20 68  / scattered in h
7bb0: 65 72 65 2c 20 62 75 74 20 74 68 65 79 20 61 72  ere, but they ar
7bc0: 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68  e only active wh
7bd0: 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  en PLATFORM_COMP
7be0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20  ACTFRAMEWORK is 
7bf0: 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23  declared...    #
7c00: 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20  region standard 
7c10: 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73  sqlite api calls
7c20: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
7c30: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7c40: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
7c50: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
7c60: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7c70: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7c80: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
7c90: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
7ca0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7cb0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7cc0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7cd0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
7ce0: 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c  de sqlite3_enabl
7cf0: 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  e_load_extension
7d00: 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
7d10: 72 20 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65  r db, int enable
7d20: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
7d30: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
7d40: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
7d50: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
7d60: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7d70: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
7d80: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
7d90: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
7da0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
7db0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
7dc0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
7dd0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
7de0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c  orCode sqlite3_l
7df0: 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a  oad_extension(..
7e00: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64          IntPtr d
7e10: 62 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61  b, byte[] fileNa
7e20: 6d 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e  me, byte[] procN
7e30: 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
7e40: 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20  pError);....#if 
7e50: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7e60: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7e70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7e80: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7e90: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7ea0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7eb0: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
7ec0: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
7ed0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
7ee0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
7ef0: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
7f00: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
7f10: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
7f20: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
7f30: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
7f40: 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  de sqlite3_win32
7f50: 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28 75  _set_directory(u
7f60: 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e 67  int type, string
7f70: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
7f80: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
7f90: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
7fa0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
7fb0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
7fc0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
7fd0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
7fe0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
7ff0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8000: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
8010: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
8020: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
8030: 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  Ptr sqlite3_libv
8040: 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  ersion();....#if
8050: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8060: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8070: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8080: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
8090: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
80a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
80b0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
80c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
80d0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
80e0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
80f0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
8100: 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72  t sqlite3_libver
8110: 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a  sion_number();..
8120: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
8130: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
8140: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8150: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
8160: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
8170: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8180: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
8190: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
81a0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
81b0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
81c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
81d0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
81e0: 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d  3_sourceid();...
81f0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
8200: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8210: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8220: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
8230: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
8240: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
8250: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
8260: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8270: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
8280: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
8290: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
82a0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
82b0: 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d  _malloc(int n);.
82c0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
82d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
82e0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
82f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
8300: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
8310: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
8320: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
8330: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
8340: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
8350: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
8360: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8370: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
8380: 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74  e3_realloc(IntPt
8390: 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  r p, int n);....
83a0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
83b0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
83c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
83d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
83e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
83f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8400: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
8410: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8420: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
8430: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
8440: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8450: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72   void sqlite3_fr
8460: 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  ee(IntPtr p);...
8470: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
8480: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8490: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
84a0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
84b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
84c0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
84d0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
84e0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
84f0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
8500: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
8510: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
8520: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
8530: 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  e sqlite3_open_v
8540: 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  2(byte[] utf8Fil
8550: 65 6e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74  ename, out IntPt
8560: 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e  r db, SQLiteOpen
8570: 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c  FlagsEnum flags,
8580: 20 49 6e 74 50 74 72 20 76 66 73 29 3b 0d 0a 0d   IntPtr vfs);...
8590: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
85a0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
85b0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
85c0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
85d0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
85e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
85f0: 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
8600: 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
8610: 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  de)]..#else..   
8620: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8630: 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
8640: 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
8650: 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e)]..#endif..   
8660: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8670: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
8680: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
8690: 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66 69  open16(string fi
86a0: 6c 65 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50  leName, out IntP
86b0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
86c0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
86d0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
86e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
86f0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
8700: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
8710: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
8720: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
8730: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8740: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
8750: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
8760: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
8770: 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
8780: 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  pt(IntPtr db);..
8790: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
87a0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
87b0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
87c0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
87d0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
87e0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
87f0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
8800: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8810: 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
8820: 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
8830: 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62 29  rowid(IntPtr db)
8840: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ;..#else..    [D
8850: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
8860: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
8870: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
8880: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c  n void sqlite3_l
8890: 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
88a0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
88b0: 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  db, ref long row
88c0: 49 64 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  Id);..#endif....
88d0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
88e0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
88f0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8900: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
8910: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
8920: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
8930: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
8940: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8950: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
8960: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
8970: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8980: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61   int sqlite3_cha
8990: 6e 67 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b  nges(IntPtr db);
89a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
89b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
89c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
89d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
89e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
89f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
8a00: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
8a10: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8a20: 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
8a30: 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
8a40: 64 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  d();..#else..   
8a50: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8a60: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8a70: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8a80: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
8a90: 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e  3_memory_used_in
8aa0: 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62  terop(ref long b
8ab0: 79 74 65 73 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ytes);..#endif..
8ac0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
8ad0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
8ae0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8af0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
8b00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
8b10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8b20: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
8b30: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8b40: 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
8b50: 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
8b60: 61 74 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c  ater(int resetFl
8b70: 61 67 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ag);..#else..   
8b80: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
8b90: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
8ba0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
8bb0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
8bc0: 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74  3_memory_highwat
8bd0: 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74 20 72  er_interop(int r
8be0: 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f  esetFlag, ref lo
8bf0: 6e 67 20 62 79 74 65 73 29 3b 0d 0a 23 65 6e 64  ng bytes);..#end
8c00: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
8c10: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8c20: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
8c30: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8c40: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8c50: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8c60: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8c70: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
8c80: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8c90: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
8ca0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8cb0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
8cc0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73  orCode sqlite3_s
8cd0: 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69  hutdown();....#i
8ce0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8cf0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8d00: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8d10: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
8d20: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
8d30: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
8d40: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
8d50: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8d60: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
8d70: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
8d80: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
8d90: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
8da0: 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65  qlite3_busy_time
8db0: 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69  out(IntPtr db, i
8dc0: 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  nt ms);....#if !
8dd0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
8de0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
8df0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
8e00: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
8e10: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
8e20: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
8e30: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
8e40: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
8e50: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
8e60: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
8e70: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
8e80: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
8e90: 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e  te3_bind_blob(In
8ea0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
8eb0: 6e 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c  ndex, Byte[] val
8ec0: 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49  ue, int nSize, I
8ed0: 6e 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74  ntPtr nTransient
8ee0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
8ef0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8f00: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
8f10: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8f20: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8f30: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8f40: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8f50: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8f60: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
8f70: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
8f80: 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49  e3_bind_double(I
8f90: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
8fa0: 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61  index, double va
8fb0: 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
8fc0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8fd0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
8fe0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
8ff0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
9000: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
9010: 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  nd_double_intero
9020: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
9030: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f  nt index, ref do
9040: 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
9050: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
9060: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9070: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9080: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9090: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
90a0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
90b0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
90c0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
90d0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
90e0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
90f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9100: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
9110: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
9120: 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72  _bind_int(IntPtr
9130: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
9140: 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d  , int value);...
9150: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
9160: 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c  NOTE: This reall
9170: 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71  y just calls "sq
9180: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b  lite3_bind_int";
9190: 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73   however, it has
91a0: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20   the..    //    
91b0: 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20     correct type 
91c0: 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e  signature for an
91d0: 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62 69   unsigned (32-bi
91e0: 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20  t) integer...   
91f0: 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f   //..#if !PLATFO
9200: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9210: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9220: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9230: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
9240: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c  lite3_bind_int",
9250: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9260: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9270: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9280: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9290: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
92a0: 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
92b0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
92c0: 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
92d0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
92e0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
92f0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
9300: 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74 72  bind_uint(IntPtr
9310: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
9320: 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  , uint value);..
9330: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
9340: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9350: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9360: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
9370: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
9380: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9390: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
93a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
93b0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
93c0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
93d0: 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ind_int64(IntPtr
93e0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
93f0: 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  , long value);..
9400: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9410: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9420: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
9430: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
9440: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
9450: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
9460: 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
9470: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
9480: 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
9490: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
94a0: 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
94b0: 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a  E: This really j
94c0: 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74  ust calls "sqlit
94d0: 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20  e3_bind_int64"; 
94e0: 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20  however, it has 
94f0: 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  the..    //     
9500: 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73    correct type s
9510: 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20  ignature for an 
9520: 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36  unsigned long (6
9530: 34 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d  4-bit) integer..
9540: 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c  .    //..#if !PL
9550: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9560: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
9570: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
9580: 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
9590: 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
95a0: 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nt64", CallingCo
95b0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
95c0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
95d0: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
95e0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
95f0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
9600: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69   sqlite3_bind_ui
9610: 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
9620: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f  , int index, ulo
9630: 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73  ng value);..#els
9640: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9650: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
9660: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
9670: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69  te3_bind_int64_i
9680: 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69  nterop")]..    i
9690: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
96a0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
96b0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
96c0: 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f  nd_uint64_intero
96d0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
96e0: 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c  nt index, ref ul
96f0: 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ong value);..#en
9700: 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
9710: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9720: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9730: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9740: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9750: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9760: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9770: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9780: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9790: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
97a0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
97b0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
97c0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
97d0: 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74 72  bind_null(IntPtr
97e0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
97f0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
9800: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9810: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9820: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9830: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9840: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9850: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9860: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9870: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9880: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
9890: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
98a0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
98b0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
98c0: 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74 72 20  ind_text(IntPtr 
98d0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
98e0: 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
98f0: 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nlen, IntPtr 
9900: 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
9910: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9920: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9930: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9940: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
9950: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
9960: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9970: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
9980: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9990: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
99a0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
99b0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
99c0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
99d0: 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e  d_parameter_coun
99e0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  t(IntPtr stmt);.
99f0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
9a00: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9a10: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
9a20: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
9a30: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
9a40: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
9a50: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
9a60: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
9a70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
9a80: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
9a90: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9aa0: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
9ab0: 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
9ac0: 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74 6d 74  ndex(IntPtr stmt
9ad0: 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
9ae0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
9af0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9b00: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9b10: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9b20: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9b30: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9b40: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9b50: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9b60: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9b70: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
9b80: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9b90: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
9ba0: 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28  e3_column_count(
9bb0: 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
9bc0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
9bd0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
9be0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
9bf0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
9c00: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
9c10: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9c20: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
9c30: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
9c40: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
9c50: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
9c60: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
9c70: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
9c80: 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49  e sqlite3_step(I
9c90: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
9ca0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
9cb0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9cc0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
9cd0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
9ce0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
9cf0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9d00: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
9d10: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9d20: 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
9d30: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c  te3_column_doubl
9d40: 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
9d50: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6c 73  nt index);..#els
9d60: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
9d70: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
9d80: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
9d90: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
9da0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
9db0: 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
9dc0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
9dd0: 6e 64 65 78 2c 20 6f 75 74 20 64 6f 75 62 6c 65  ndex, out double
9de0: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
9df0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
9e00: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9e10: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
9e20: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
9e30: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9e40: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9e50: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
9e60: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
9e70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
9e80: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
9e90: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
9ea0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
9eb0: 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50  _column_int(IntP
9ec0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
9ed0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
9ee0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9ef0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9f00: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9f10: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9f20: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9f30: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
9f40: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9f50: 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
9f60: 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  g sqlite3_column
9f70: 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
9f80: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
9f90: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9fa0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9fb0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
9fc0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9fd0: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c  void sqlite3_col
9fe0: 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  umn_int64_intero
9ff0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
a000: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 6c 6f  nt index, out lo
a010: 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ng value);..#end
a020: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
a030: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
a040: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
a050: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
a060: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
a070: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
a080: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
a090: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
a0a0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a0b0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
a0c0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
a0d0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
a0e0: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f  lite3_column_blo
a0f0: 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
a100: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
a110: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
a120: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
a130: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a140: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
a150: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
a160: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
a170: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
a180: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a190: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
a1a0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
a1b0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
a1c0: 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
a1d0: 6e 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 73  n_bytes(IntPtr s
a1e0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
a1f0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
a200: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a210: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
a220: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
a230: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a240: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
a250: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
a260: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
a270: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
a280: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
a290: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
a2a0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
a2b0: 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28  _column_bytes16(
a2c0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
a2d0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
a2e0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a2f0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a300: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a310: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a320: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a330: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a340: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
a350: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a360: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
a370: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a380: 74 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70  tatic extern Typ
a390: 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65  eAffinity sqlite
a3a0: 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e  3_column_type(In
a3b0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
a3c0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
a3d0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
a3e0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
a3f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
a400: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
a410: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
a420: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
a430: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
a440: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a450: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
a460: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a470: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
a480: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
a490: 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
a4a0: 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ion(IntPtr db, b
a4b0: 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69  yte[] strName, i
a4c0: 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72  nt nType, IntPtr
a4d0: 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43   pvUser, SQLiteC
a4e0: 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d  ollation func);.
a4f0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
a500: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
a510: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
a520: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
a530: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a540: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a550: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
a560: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
a570: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
a580: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
a590: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
a5a0: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
a5b0: 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
a5c0: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
a5d0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
a5e0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a5f0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
a600: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
a610: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a620: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
a630: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
a640: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
a650: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
a660: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
a670: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
a680: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
a690: 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49  te3_value_blob(I
a6a0: 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
a6b0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a6c0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a6d0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a6e0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a6f0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a700: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a710: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a720: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a730: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a740: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a750: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
a760: 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
a770: 62 79 74 65 73 28 49 6e 74 50 74 72 20 70 29 3b  bytes(IntPtr p);
a780: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
a790: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
a7a0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
a7b0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
a7c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
a7d0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
a7e0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
a7f0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
a800: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
a810: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
a820: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
a830: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
a840: 5f 76 61 6c 75 65 5f 62 79 74 65 73 31 36 28 49  _value_bytes16(I
a850: 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
a860: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a870: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a880: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a890: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a8a0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a8b0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a8c0: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
a8d0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
a8e0: 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33  n double sqlite3
a8f0: 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e  _value_double(In
a900: 74 50 74 72 20 70 29 3b 0d 0a 23 65 6c 73 65 0d  tPtr p);..#else.
a910: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a920: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
a930: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a940: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
a950: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
a960: 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
a970: 72 20 70 2c 20 6f 75 74 20 64 6f 75 62 6c 65 20  r p, out double 
a980: 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
a990: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
a9a0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
a9b0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
a9c0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
a9d0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
a9e0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
a9f0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
aa00: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
aa10: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
aa20: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
aa30: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
aa40: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
aa50: 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74 72  value_int(IntPtr
aa60: 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
aa70: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
aa80: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
aa90: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
aaa0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
aab0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
aac0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
aad0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
aae0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
aaf0: 67 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  g sqlite3_value_
ab00: 69 6e 74 36 34 28 49 6e 74 50 74 72 20 70 29 3b  int64(IntPtr p);
ab10: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
ab20: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ab30: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
ab40: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ab50: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61   void sqlite3_va
ab60: 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  lue_int64_intero
ab70: 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74 20  p(IntPtr p, out 
ab80: 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 23  Int64 value);..#
ab90: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
aba0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
abb0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
abc0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
abd0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
abe0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
abf0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ac00: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ac10: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ac20: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
ac30: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ac40: 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
ac50: 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76  finity sqlite3_v
ac60: 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72  alue_type(IntPtr
ac70: 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
ac80: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
ac90: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
aca0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
acb0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
acc0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
acd0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
ace0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
acf0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ad00: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
ad10: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ad20: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
ad30: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
ad40: 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
ad50: 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
ad60: 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74  int nSize, IntPt
ad70: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
ad80: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
ad90: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
ada0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
adb0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
adc0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
add0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ade0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
adf0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
ae00: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
ae10: 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
ae20: 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
ae30: 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
ae40: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
ae50: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ae60: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
ae70: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ae80: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
ae90: 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  sult_double_inte
aea0: 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
aeb0: 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76  xt, ref double v
aec0: 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
aed0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
aee0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
aef0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
af00: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
af10: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
af20: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
af30: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
af40: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
af50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
af60: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
af70: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
af80: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
af90: 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e 74  result_error(Int
afa0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74  Ptr context, byt
afb0: 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74 20  e[] strErr, int 
afc0: 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
afd0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
afe0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
aff0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b000: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b010: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b020: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b030: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b040: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b050: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b060: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b070: 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
b080: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
b090: 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
b0a0: 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  t, int value);..
b0b0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
b0c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
b0d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b0e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
b0f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
b100: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b110: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
b120: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b130: 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
b140: 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
b150: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
b160: 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23   long value);..#
b170: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b180: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b190: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
b1a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
b1b0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b1c0: 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  t_int64_interop(
b1d0: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
b1e0: 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29  ref Int64 value)
b1f0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
b200: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
b210: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b220: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b230: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
b240: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
b250: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
b260: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
b270: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b280: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
b290: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
b2a0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
b2b0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
b2c0: 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f  t_null(IntPtr co
b2d0: 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
b2e0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b2f0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b300: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b310: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b320: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b330: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b340: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b350: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b360: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b370: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b380: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
b390: 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
b3a0: 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  text(IntPtr cont
b3b0: 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75  ext, byte[] valu
b3c0: 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74  e, int nLen, Int
b3d0: 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
b3e0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
b3f0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
b400: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
b410: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
b420: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b430: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
b440: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
b450: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
b460: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
b470: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
b480: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
b490: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
b4a0: 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f  te3_aggregate_co
b4b0: 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e  ntext(IntPtr con
b4c0: 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74 65 73  text, int nBytes
b4d0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
b4e0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
b4f0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
b500: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
b510: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b520: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
b530: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
b540: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
b550: 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65  Unicode)]..#else
b560: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b570: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61  (SQLITE_DLL, Cha
b580: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
b590: 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66  nicode)]..#endif
b5a0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
b5b0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
b5c0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
b5d0: 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36  ite3_bind_text16
b5e0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
b5f0: 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20  t index, string 
b600: 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c  value, int nlen,
b610: 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
b620: 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
b630: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
b640: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
b650: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b660: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
b670: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
b680: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
b690: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
b6a0: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
b6b0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
b6c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
b6d0: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
b6e0: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
b6f0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
b700: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
b710: 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
b720: 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74 50 74  lt_error16(IntPt
b730: 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e  r context, strin
b740: 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  g strName, int n
b750: 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Len);....#if !PL
b760: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b770: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
b780: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
b790: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
b7a0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
b7b0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
b7c0: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
b7d0: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
b7e0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
b7f0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b800: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
b810: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
b820: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
b830: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b840: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
b850: 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50 74  ult_text16(IntPt
b860: 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e  r context, strin
b870: 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  g strName, int n
b880: 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  Len, IntPtr pvRe
b890: 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
b8a0: 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 0d 0a 23  INTEROP_CODEC..#
b8b0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b8c0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b8d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b8e0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
b8f0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
b900: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
b910: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
b920: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b930: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
b940: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
b950: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b960: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
b970: 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74 50  sqlite3_key(IntP
b980: 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65  tr db, byte[] ke
b990: 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d  y, int keylen);.
b9a0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
b9b0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b9c0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
b9d0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
b9e0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
b9f0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
ba00: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
ba10: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
ba20: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ba30: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
ba40: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ba50: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
ba60: 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 6b 65  ode sqlite3_reke
ba70: 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
ba80: 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
ba90: 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  len);..#endif...
baa0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
bab0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
bac0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
bad0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
bae0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
baf0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
bb00: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
bb10: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bb20: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
bb30: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
bb40: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
bb50: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
bb60: 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74  _update_hook(Int
bb70: 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70  Ptr db, SQLiteUp
bb80: 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  dateCallback fun
bb90: 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
bba0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
bbb0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
bbc0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
bbd0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
bbe0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bbf0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
bc00: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
bc10: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
bc20: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
bc30: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
bc40: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
bc50: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
bc60: 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f  lite3_commit_hoo
bc70: 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
bc80: 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63  iteCommitCallbac
bc90: 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
bca0: 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
bcb0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
bcc0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
bcd0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
bce0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
bcf0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
bd00: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
bd10: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
bd20: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bd30: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
bd40: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
bd50: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
bd60: 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  tr sqlite3_trace
bd70: 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
bd80: 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20  teTraceCallback 
bd90: 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
bda0: 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20  ser);....    // 
bdb0: 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f  Since sqlite3_co
bdc0: 6e 66 69 67 28 29 20 74 61 6b 65 73 20 61 20 76  nfig() takes a v
bdd0: 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74  ariable argument
bde0: 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20 74   list, we have t
bdf0: 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61  o overload decla
be00: 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20  rations..    // 
be10: 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65  for all possible
be20: 20 63 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77   calls that we w
be30: 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66  ant to use...#if
be40: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
be50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
be60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
be70: 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
be80: 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
be90: 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nfig", CallingCo
bea0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
beb0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
bec0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
bed0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
bee0: 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
bef0: 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
bf00: 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  nfig")]..#endif.
bf10: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
bf20: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
bf30: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
bf40: 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28  te3_config_none(
bf50: 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45  SQLiteConfigOpsE
bf60: 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20  num op);....#if 
bf70: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
bf80: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
bf90: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
bfa0: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
bfb0: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
bfc0: 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
bfd0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
bfe0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
bff0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
c000: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c010: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
c020: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
c030: 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
c040: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c050: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
c060: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
c070: 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51  e3_config_int(SQ
c080: 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
c090: 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29  m op, int value)
c0a0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
c0b0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
c0c0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
c0d0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c0e0: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
c0f0: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43  lite3_config", C
c100: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c110: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c120: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c130: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c140: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
c150: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
c160: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d  lite3_config")].
c170: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c180: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c190: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
c1a0: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ode sqlite3_conf
c1b0: 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e  ig_log(SQLiteCon
c1c0: 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53  figOpsEnum op, S
c1d0: 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b  QLiteLogCallback
c1e0: 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
c1f0: 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
c200: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c210: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c220: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c230: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c240: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c250: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c260: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c270: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c280: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c290: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c2a0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
c2b0: 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61  r sqlite3_rollba
c2c0: 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  ck_hook(IntPtr d
c2d0: 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63  b, SQLiteRollbac
c2e0: 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  kCallback func, 
c2f0: 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
c300: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c310: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c320: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c330: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c340: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c350: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c360: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c370: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
c380: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
c390: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
c3a0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
c3b0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
c3c0: 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74  e3_db_handle(Int
c3d0: 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
c3e0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
c3f0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
c400: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c410: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
c420: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
c430: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
c440: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
c450: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c460: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
c470: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
c480: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
c490: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e 65  ntPtr sqlite3_ne
c4a0: 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20 64  xt_stmt(IntPtr d
c4b0: 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  b, IntPtr stmt);
c4c0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c4d0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c4e0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c4f0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c500: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c510: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c520: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c530: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c540: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c550: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c560: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c570: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
c580: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 65  Code sqlite3_exe
c590: 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  c(IntPtr db, byt
c5a0: 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74 50  e[] strSql, IntP
c5b0: 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49  tr pvCallback, I
c5c0: 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20 6f  ntPtr pvParam, o
c5d0: 75 74 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67  ut IntPtr errMsg
c5e0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
c5f0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
c600: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
c610: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
c620: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c630: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
c640: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
c650: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
c660: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c670: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
c680: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
c690: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
c6a0: 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69  e3_get_autocommi
c6b0: 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  t(IntPtr db);...
c6c0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
c6d0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
c6e0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c6f0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
c700: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
c710: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
c720: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
c730: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
c740: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
c750: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
c760: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
c770: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
c780: 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  e sqlite3_extend
c790: 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28  ed_result_codes(
c7a0: 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f  IntPtr db, int o
c7b0: 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  noff);....#if !P
c7c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c7d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c7e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c7f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c800: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c810: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c820: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c830: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c840: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c850: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c860: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
c870: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
c880: 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74  e3_errcode(IntPt
c890: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
c8a0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c8b0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c8c0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c8d0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c8e0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c8f0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c900: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c910: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c920: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c930: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c940: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
c950: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
c960: 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
c970: 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ode(IntPtr db);.
c980: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
c990: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c9a0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
c9b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
c9c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
c9d0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
c9e0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
c9f0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
ca00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ca10: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
ca20: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ca30: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
ca40: 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65  e3_errstr(SQLite
ca50: 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f  ErrorCode rc); /
ca60: 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a  * 3.7.15+ */....
ca70: 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
ca80: 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73  ite3_log() takes
ca90: 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75   a variable argu
caa0: 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61  ment list, we ha
cab0: 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64  ve to overload d
cac0: 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20  eclarations..   
cad0: 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73   // for all poss
cae0: 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72  ible calls.  For
caf0: 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c   now, we are onl
cb00: 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e  y exposing a sin
cb10: 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 20  gle string, and 
cb20: 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20  ..    // depend 
cb30: 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f  on the caller to
cb40: 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69   format the stri
cb50: 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ng...#if !PLATFO
cb60: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
cb70: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
cb80: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cb90: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cba0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cbb0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
cbc0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cbd0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
cbe0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cbf0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cc00: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
cc10: 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72  e3_log(SQLiteErr
cc20: 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c  orCode iErrCode,
cc30: 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29   byte[] zFormat)
cc40: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
cc50: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
cc60: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
cc70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cc80: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
cc90: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cca0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ccb0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
ccc0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ccd0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cce0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ccf0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
cd00: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
cd10: 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74  le_control(IntPt
cd20: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62  r db, byte[] zDb
cd30: 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e  Name, int op, In
cd40: 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23  tPtr pArg);....#
cd50: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
cd60: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
cd70: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
cd80: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
cd90: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
cda0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
cdb0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
cdc0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
cdd0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
cde0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
cdf0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
ce00: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
ce10: 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74  ackup_init(IntPt
ce20: 72 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d  r destDb, byte[]
ce30: 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50   zDestName, IntP
ce40: 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74  tr sourceDb, byt
ce50: 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29  e[] zSourceName)
ce60: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
ce70: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ce80: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ce90: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
cea0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ceb0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
cec0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ced0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
cee0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
cef0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
cf00: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
cf10: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
cf20: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61  rCode sqlite3_ba
cf30: 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72  ckup_step(IntPtr
cf40: 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61   backup, int nPa
cf50: 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ge);....#if !PLA
cf60: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
cf70: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
cf80: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cf90: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
cfa0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
cfb0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
cfc0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
cfd0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cfe0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
cff0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
d000: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
d010: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
d020: 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 28 49  _backup_finish(I
d030: 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
d040: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d050: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d060: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d070: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
d080: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
d090: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d0a0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
d0b0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
d0c0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
d0d0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
d0e0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
d0f0: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
d100: 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28  ackup_remaining(
d110: 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d  IntPtr backup);.
d120: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
d130: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
d140: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
d150: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
d160: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
d170: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
d180: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
d190: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
d1a0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d1b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
d1c0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
d1d0: 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
d1e0: 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74  backup_pagecount
d1f0: 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
d200: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
d210: 0d 0a 20 20 7d 0d 0a 0d 0a 23 69 66 20 50 4c 41  ..  }....#if PLA
d220: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
d230: 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e  MEWORK..  intern
d240: 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73  al abstract clas
d250: 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  s CriticalHandle
d260: 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a   : IDisposable..
d270: 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65    {..    private
d280: 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b   bool _isClosed;
d290: 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
d2a0: 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a  IntPtr handle;..
d2b0: 20 20 20 20 0d 0a 20 20 20 20 70 72 6f 74 65 63      ..    protec
d2c0: 74 65 64 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ted CriticalHand
d2d0: 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61 6c 69  le(IntPtr invali
d2e0: 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20  dHandleValue).. 
d2f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64     {..      hand
d300: 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64  le = invalidHand
d310: 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  leValue;..      
d320: 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73  _isClosed = fals
d330: 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
d340: 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65   ~CriticalHandle
d350: 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
d360: 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b   Dispose(false);
d370: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
d380: 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c 65 61  rivate void Clea
d390: 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  nup()..    {..  
d3a0: 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f 73 65      if (!IsClose
d3b0: 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  d)..      {..   
d3c0: 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f       this._isClo
d3d0: 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
d3e0: 20 20 20 20 20 69 66 20 28 21 49 73 49 6e 76 61       if (!IsInva
d3f0: 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lid)..        {.
d400: 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 61  .          Relea
d410: 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20  seHandle();..   
d420: 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
d430: 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
d440: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
d450: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
d460: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
d470: 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  Close()..    {..
d480: 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
d490: 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ue);..    }.... 
d4a0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
d4b0: 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d  ispose()..    {.
d4c0: 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74  .      Dispose(t
d4d0: 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rue);..    }....
d4e0: 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
d4f0: 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f  rtual void Dispo
d500: 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e  se(bool disposin
d510: 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  g)..    {..     
d520: 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20   Cleanup();..   
d530: 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63   }....    protec
d540: 74 65 64 20 61 62 73 74 72 61 63 74 20 62 6f 6f  ted abstract boo
d550: 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
d560: 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63  );....    protec
d570: 74 65 64 20 76 6f 69 64 20 53 65 74 48 61 6e 64  ted void SetHand
d580: 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75 65 29  le(IntPtr value)
d590: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68  ..    {..      h
d5a0: 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a  andle = value;..
d5b0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
d5c0: 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61 6e 64  lic void SetHand
d5d0: 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20  leAsInvalid().. 
d5e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43     {..      _isC
d5f0: 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
d600: 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
d610: 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
d620: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
d630: 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73  blic bool IsClos
d640: 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ed..    {..     
d650: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f 69   get { return _i
d660: 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20  sClosed; }..    
d670: 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
d680: 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73  abstract bool Is
d690: 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a  Invalid..    {..
d6a0: 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20        get;..    
d6b0: 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65 6e 64  }....  }....#end
d6c0: 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  if....    //////
d6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d710: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
d720: 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65  gion SQLiteConne
d730: 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73  ctionHandle Clas
d740: 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65  s..    // Handle
d750: 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20  s the unmanaged 
d760: 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72  database pointer
d770: 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66  , and provides f
d780: 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20  inalization..   
d790: 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f 72 20   // support for 
d7a0: 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  it...    interna
d7b0: 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
d7c0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
d7d0: 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
d7e0: 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
d7f0: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
d800: 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f  RD && !PLATFORM_
d810: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d820: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
d830: 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64  al delegate void
d840: 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   CloseConnection
d850: 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Callback(..     
d860: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
d870: 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64  nectionHandle hd
d880: 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  l, IntPtr db);..
d890: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
d8a0: 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73 65 43  al static CloseC
d8b0: 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63  onnectionCallbac
d8c0: 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  k closeConnectio
d8d0: 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n =..           
d8e0: 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
d8f0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65  eConnection;..#e
d900: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
d910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d950: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50  ///////....#if P
d960: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d970: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
d980: 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f    internal reado
d990: 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  nly object syncR
d9a0: 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
d9b0: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ();..#endif.... 
d9c0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
d9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
da10: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
da20: 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74   static implicit
da30: 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72   operator IntPtr
da40: 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
da50: 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20  nHandle db)..   
da60: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
da70: 20 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75      if (db != nu
da80: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
da90: 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
daa0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
dab0: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
dac0: 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63     lock (db.sync
dad0: 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
dae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
daf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e        return db.
db10: 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  handle;..       
db20: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
db30: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
db40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
db50: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
db60: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
db70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
db80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
db90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbb0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
dbc0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
dbd0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
dbe0: 64 6c 65 28 49 6e 74 50 74 72 20 64 62 29 0d 0a  dle(IntPtr db)..
dbf0: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
dc00: 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
dc10: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
dc20: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
dc30: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
dc40: 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
dc50: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
dc60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
dc70: 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62      SetHandle(db
dc80: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
dc90: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
dca0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
dcb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dcc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dcd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
dcf0: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
dd00: 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
dd10: 69 6f 6e 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  ionHandle()..   
dd20: 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28           : base(
dd30: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
dd40: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55        {..#if COU
dd50: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
dd60: 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
dd70: 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Increment(.. 
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
dd90: 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
dda0: 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f  ethods.connectio
ddb0: 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  nCount);..#endif
ddc0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
ddd0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
dde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
de20: 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
de30: 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
de40: 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
de50: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
de60: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
de70: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
de80: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
de90: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
deb0: 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
dec0: 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
ded0: 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
dee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
def0: 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
df00: 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53  .Zero);....#if S
df10: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
df20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df30: 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
df40: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
df50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df60: 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63       closeConnec
df70: 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c  tion(this, local
df80: 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d  Handle);..#else.
df90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dfa0: 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
dfb0: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
dfc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dfd0: 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
dfe0: 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
dff0: 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
e000: 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  le);..#endif....
e010: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
e020: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
e030: 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
e040: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
e050: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
e060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e070: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
e080: 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
e090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e0a0: 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43           "CloseC
e0b0: 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c  onnection: {0}",
e0c0: 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 0d   localHandle));.
e0d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e0e0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
e0f0: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
e100: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
e110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
e120: 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
e130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e140: 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
e150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e160: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e170: 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
e180: 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
e190: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
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 20                  
e1c0: 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
e1d0: 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
e1e0: 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  is, handle);..  
e1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e200: 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
e210: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
e220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e230: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
e240: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
e250: 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
e260: 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
e270: 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
e280: 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
e290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
e2a0: 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
e2b0: 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69 6f  ethods.connectio
e2c0: 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  nCount);..#endif
e2d0: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
e2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
e2f0: 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
e300: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
e310: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
e320: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
e330: 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
e340: 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
e350: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
e360: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
e370: 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
e380: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
e390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
e3a0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
e3b0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
e3c0: 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
e3d0: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
e3e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e400: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
e410: 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
e420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e430: 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
e440: 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c  Connection: {0},
e450: 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22   exception: {1}"
e460: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
e470: 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c             handl
e480: 65 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  e, e));..       
e490: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
e4b0: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
e4c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e4d0: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
e4e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
e4f0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
e500: 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
e510: 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
e520: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
e530: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
e540: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
e550: 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
e560: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e580: 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e     SetHandleAsIn
e590: 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20  valid();..      
e5a0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
e5b0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
e5c0: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
e5d0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
e5e0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
e5f0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
e600: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
e610: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e660: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43  ///////....#if C
e670: 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
e680: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
e690: 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d  WasReleasedOk().
e6a0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
e6b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
e6c0: 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
e6d0: 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
e6e0: 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66         ref Unsaf
e6f0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63  eNativeMethods.c
e700: 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b  onnectionCount);
e710: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
e720: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
e730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e770: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
e780: 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
e790: 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
e7a0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
e7b0: 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
e7c0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
e7d0: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
e7e0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
e7f0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
e800: 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
e810: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
e820: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e830: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
e840: 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
e850: 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
e860: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e870: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
e880: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e890: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
e8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
e8e0: 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
e8f0: 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
e900: 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
e910: 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
e920: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
e930: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e940: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
e950: 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
e960: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
e970: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e980: 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
e990: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
e9a0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
e9b0: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
e9c0: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
e9d0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
e9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea20: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
ea30: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74  #region SQLiteSt
ea40: 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c  atementHandle Cl
ea50: 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76  ass..    // Prov
ea60: 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f  ides finalizatio
ea70: 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e  n support for un
ea80: 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73  managed SQLite s
ea90: 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20  tatements...    
eaa0: 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
eab0: 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61 74  class SQLiteStat
eac0: 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72  ementHandle : Cr
ead0: 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
eae0: 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
eaf0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
eb00: 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
eb10: 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
eb20: 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
eb30: 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
eb40: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
eb50: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
eb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb90: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
eba0: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
ebb0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
ebc0: 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20  le cnn;....     
ebd0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
ebe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
ec20: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
ec30: 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
ec40: 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
ec50: 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
ec60: 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20  le stmt)..      
ec70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ec80: 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c   if (stmt != nul
ec90: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
eca0: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
ecb0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
ecc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ecd0: 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e    lock (stmt.syn
ece0: 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
ecf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ed10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74         return st
ed20: 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  mt.handle;..    
ed30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
ed40: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
ed50: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
ed60: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
ed70: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
ed80: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
ed90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
edd0: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
ede0: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
edf0: 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e  andle(SQLiteConn
ee00: 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e  ectionHandle cnn
ee10: 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a  , IntPtr stmt)..
ee20: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
ee30: 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
ee40: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
ee50: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ee60: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
ee70: 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
ee80: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
ee90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
eea0: 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
eeb0: 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
eec0: 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73       SetHandle(s
eed0: 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tmt);..         
eee0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
eef0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
ef00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef40: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
ef50: 69 76 61 74 65 20 53 51 4c 69 74 65 53 74 61 74  ivate SQLiteStat
ef60: 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20  ementHandle().. 
ef70: 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
ef80: 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
ef90: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
efa0: 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
efb0: 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
efc0: 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 0d  cked.Increment(.
efd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
efe0: 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76   ref UnsafeNativ
eff0: 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65  eMethods.stateme
f000: 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  ntCount);..#endi
f010: 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
f020: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
f030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
f070: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
f080: 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
f090: 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
f0a0: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
f0b0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
f0c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
f0d0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f0e0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
f100: 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
f110: 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
f120: 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
f130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
f140: 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
f150: 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
f160: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
f170: 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
f180: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
f190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1a0: 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61   SQLiteBase.Fina
f1b0: 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e  lizeStatement(cn
f1c0: 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  n, localHandle);
f1d0: 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
f1e0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
f1f0: 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
f200: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
f210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f230: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
f240: 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
f250: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
f260: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
f270: 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a  nalizeStatement:
f280: 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
f290: 6c 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  le));..         
f2a0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
f2b0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
f2c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f2d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f2e0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
f2f0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
f300: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
f310: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
f320: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
f340: 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
f350: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
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 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
f390: 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74  ase.FinalizeStat
f3a0: 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c  ement(cnn, handl
f3b0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
f3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
f3d0: 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
f3e0: 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
f3f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
f400: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f410: 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
f420: 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
f430: 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
f440: 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
f450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f460: 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66 65        ref Unsafe
f470: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74  NativeMethods.st
f480: 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
f490: 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
f4a0: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
f4b0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
f4c0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
f4d0: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
f4e0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
f4f0: 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
f500: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
f510: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
f520: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
f530: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
f540: 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
f550: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
f560: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
f570: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
f580: 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
f590: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
f5a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f5b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f5c0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
f5d0: 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
f5e0: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
f5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f600: 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  "FinalizeStateme
f610: 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  nt: {0}, excepti
f620: 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
f630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f640: 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d     handle, e));.
f650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f660: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
f670: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
f680: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f6a0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
f6b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
f6c0: 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
f6d0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
f6e0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f6f0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
f700: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
f710: 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
f720: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
f730: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f740: 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
f750: 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
f760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f770: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
f780: 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
f790: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
f7a0: 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
f7b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
f7c0: 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
f7d0: 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
f7e0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
f7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
f830: 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
f840: 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
f850: 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
f860: 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
f870: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f880: 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
f890: 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
f8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
f8b0: 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
f8c0: 65 74 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74  ethods.statement
f8d0: 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  Count);..       
f8e0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
f8f0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
f900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
f940: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
f950: 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
f960: 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20  Invalid..       
f970: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f980: 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
f990: 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
f9a0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f9b0: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
f9c0: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
f9d0: 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
f9e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
f9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa00: 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c     return (handl
fa10: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
fa20: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
fa30: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
fa40: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
fa50: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
fa60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faa0: 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d  //....#if DEBUG.
fab0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
fac0: 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20  override string 
fad0: 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20  ToString()..    
fae0: 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
faf0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
fb00: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
fb10: 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
fb20: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
fb30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
fb40: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
fb50: 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67   handle.ToString
fb60: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
fb70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23   }..        }..#
fb80: 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20  endif..    }..  
fb90: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
fba0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
fbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
fbf0: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
fc00: 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
fc10: 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20  e Class..    // 
fc20: 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a  Provides finaliz
fc30: 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f  ation support fo
fc40: 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69  r unmanaged SQLi
fc50: 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74  te backup object
fc60: 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s...    internal
fc70: 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
fc80: 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
fc90: 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
fca0: 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
fcb0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
fcc0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
fcd0: 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
fce0: 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
fcf0: 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
fd00: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
fd10: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
fd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
fd60: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
fd70: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
fd80: 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
fd90: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
fda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
fde0: 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
fdf0: 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
fe00: 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
fe10: 72 28 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  r(SQLiteBackupHa
fe20: 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20 20  ndle backup)..  
fe30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
fe40: 20 20 20 20 20 69 66 20 28 62 61 63 6b 75 70 20       if (backup 
fe50: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
fe60: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
fe70: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
fe80: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
fe90: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 61          lock (ba
fea0: 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a  ckup.syncRoot)..
feb0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
fec0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
fed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
fee0: 65 74 75 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e  eturn backup.han
fef0: 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
ff00: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
ff10: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
ff20: 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
ff30: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
ff40: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
ff50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff90: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
ffa0: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
ffb0: 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c  BackupHandle(SQL
ffc0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
ffd0: 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20  dle cnn, IntPtr 
ffe0: 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20  backup)..       
fff0: 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
10000 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
10010 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10020 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
10030 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
10040 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
10050 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10060 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
10070 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
10080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
10090 74 48 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b  tHandle(backup);
100a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
100b0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
100c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
100d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10110 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
10120 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
10130 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  dle()..         
10140 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72     : base(IntPtr
10150 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
10160 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  {..#if COUNT_HAN
10170 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
10180 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63   Interlocked.Inc
10190 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
101a0 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
101b0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
101c0 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a  .backupCount);..
101d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
101e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
101f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10230 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
10240 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
10250 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
10260 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
10270 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10280 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
10290 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
102a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
102b0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
102c0 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
102d0 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
102e0 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
102f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10300 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
10310 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
10320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10330 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
10340 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
10350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10360 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
10370 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e  .FinishBackup(cn
10380 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  n, localHandle);
10390 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
103a0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
103b0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
103c0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
103d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
103e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
103f0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
10400 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
10410 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
10420 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
10430 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22  nishBackup: {0}"
10440 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
10450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10460 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
10470 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
10480 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
104a0 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
104b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
104c0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
104d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
104e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
104f0 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
10500 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
10510 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
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 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
10550 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c  inishBackup(cnn,
10560 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
10570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10580 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
10590 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
105a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105b0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
105c0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
105d0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
105e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105f0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
10600 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
10610 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
10620 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
10630 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ods.backupCount)
10640 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44  ;..#endif..#if D
10650 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
10660 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
10670 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
10680 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
10690 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
106a0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
106b0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
106c0 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
106d0 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
106e0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
106f0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
10700 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
10710 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
10720 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
10730 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
10740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
10750 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
10760 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10770 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
10780 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e  .WriteLine(Strin
10790 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
107a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107b0 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70     "FinishBackup
107c0 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
107d0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
107e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107f0 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 0d 0a 20   handle, e));.. 
10800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
10810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10820 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
10830 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10840 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
10850 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
10860 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
10870 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
10880 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
10890 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
108a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
108b0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
108c0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
108d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
108e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
108f0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
10900 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
10910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10920 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
10930 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
10940 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10950 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
10960 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10970 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
10980 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
10990 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
109a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
109e0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
109f0 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
10a00 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
10a10 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
10a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
10a30 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
10a40 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20  .Decrement(..   
10a50 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
10a60 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
10a70 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74  hods.backupCount
10a80 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
10a90 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
10aa0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ae0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
10af0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
10b00 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
10b10 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
10b20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
10b30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
10b40 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
10b50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
10b70 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
10b80 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
10b90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10bb0 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
10bc0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
10bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
10be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
10bf0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
10c00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
10c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10c50 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
10c60 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
10c70 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
10c80 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
10c90 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
10ca0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10cb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
10cc0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
10cd0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
10ce0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10cf0 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
10d00 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
10d10 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
10d20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
10d30 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
10d40 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a              dregion..}..