System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact be97ddf91268e8533a70be5e63ba662abec90771:


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 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   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 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  tion;....#if !NE
0180: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
0190: 28 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20 7c  (TRACE_PRELOAD |
01a0: 7c 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 29 0d  | TRACE_HANDLE).
01b0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
01c0: 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65  Diagnostics;..#e
01d0: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 50 52 45 4c  ndif....#if PREL
01e0: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
01f0: 52 59 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  RY..  using Syst
0200: 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47  em.Collections.G
0210: 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69 6e 67  eneric;..  using
0220: 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20 20 75   System.IO;..  u
0230: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65 66 6c  sing System.Refl
0240: 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
0250: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
0260: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0270: 4b 20 26 26 20 21 44 45 42 55 47 0d 0a 20 20 75  K && !DEBUG..  u
0280: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0290: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
02a0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
02b0: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
02c0: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02d0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
02e0: 54 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f  TFRAMEWORK || CO
02f0: 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73  UNT_HANDLE..  us
0300: 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61  ing System.Threa
0310: 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ding;..#endif...
0320: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0330: 58 6d 6c 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  Xml;....#if !PLA
0340: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
0350: 4d 45 57 4f 52 4b 20 26 26 20 21 44 45 42 55 47  MEWORK && !DEBUG
0360: 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d  ..  [SuppressUnm
0370: 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72 69  anagedCodeSecuri
0380: 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69  ty]..#endif..  i
0390: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
03a0: 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76  lass UnsafeNativ
03b0: 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20  eMethods..  {.. 
03c0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 43 72 69       #region Cri
03d0: 74 69 63 61 6c 20 48 61 6e 64 6c 65 20 43 6f 75  tical Handle Cou
03e0: 6e 74 73 20 28 44 65 62 75 67 20 42 75 69 6c 64  nts (Debug Build
03f0: 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 43 4f 55 4e   Only)..#if COUN
0400: 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
0410: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54  //..      // NOT
0420: 45 3a 20 54 68 65 73 65 20 63 6f 75 6e 74 73 20  E: These counts 
0430: 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 74 6f  represent the to
0440: 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75  tal number of ou
0450: 74 73 74 61 6e 64 69 6e 67 0d 0a 20 20 20 20 20  tstanding..     
0460: 20 2f 2f 20 20 20 20 20 20 20 28 6e 6f 6e 2d 64   //       (non-d
0470: 69 73 70 6f 73 65 64 29 20 43 72 69 74 69 63 61  isposed) Critica
0480: 6c 48 61 6e 64 6c 65 20 64 65 72 69 76 65 64 20  lHandle derived 
0490: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73  object instances
04a0: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
04b0: 20 63 72 65 61 74 65 64 20 62 79 20 74 68 69 73   created by this
04c0: 20 6c 69 62 72 61 72 79 20 61 6e 64 20 61 72 65   library and are
04d0: 20 70 72 69 6d 61 72 69 6c 79 20 66 6f 72 20 75   primarily for u
04e0: 73 65 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 20  se by..      // 
04f0: 20 20 20 20 20 20 74 68 65 20 74 65 73 74 20 73        the test s
0500: 75 69 74 65 2e 20 20 54 68 65 73 65 20 63 6f 75  uite.  These cou
0510: 6e 74 73 20 61 72 65 20 69 6e 63 72 65 6d 65 6e  nts are incremen
0520: 74 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20  ted by the..    
0530: 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 6f 63    //       assoc
0540: 69 61 74 65 64 20 63 6f 6e 73 74 72 75 63 74 6f  iated constructo
0550: 72 73 20 61 6e 64 20 61 72 65 20 64 65 63 72 65  rs and are decre
0560: 6d 65 6e 74 65 64 20 75 70 6f 6e 20 74 68 65 0d  mented upon the.
0570: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
0580: 73 75 63 63 65 73 73 66 75 6c 20 63 6f 6d 70 6c  successful compl
0590: 65 74 69 6f 6e 20 6f 66 20 74 68 65 20 61 73 73  etion of the ass
05a0: 6f 63 69 61 74 65 64 20 52 65 6c 65 61 73 65 48  ociated ReleaseH
05b0: 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 20  andle..      // 
05c0: 20 20 20 20 20 20 6d 65 74 68 6f 64 73 2e 0d 0a        methods...
05d0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
05e0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
05f0: 69 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f  int connectionCo
0600: 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74 65  unt;..      inte
0610: 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20  rnal static int 
0620: 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 3b 0d  statementCount;.
0630: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
0640: 73 74 61 74 69 63 20 69 6e 74 20 62 61 63 6b 75  static int backu
0650: 70 43 6f 75 6e 74 3b 0d 0a 23 65 6e 64 69 66 0d  pCount;..#endif.
0660: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
0670: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
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 2f 2f  ////////////////
06b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
06d0: 65 67 69 6f 6e 20 4f 70 74 69 6f 6e 61 6c 20 4e  egion Optional N
06e0: 61 74 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62  ative SQLite Lib
06f0: 72 61 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67  rary Pre-Loading
0700: 20 43 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 0d   Code..      //.
0710: 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  .      // NOTE: 
0720: 49 66 20 77 65 20 61 72 65 20 6c 6f 6f 6b 69 6e  If we are lookin
0730: 67 20 66 6f 72 20 74 68 65 20 73 74 61 6e 64 61  g for the standa
0740: 72 64 20 53 51 4c 69 74 65 20 44 4c 4c 20 28 22  rd SQLite DLL ("
0750: 73 71 6c 69 74 65 33 2e 64 6c 6c 22 29 2c 0d 0a  sqlite3.dll"),..
0760: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
0770: 68 65 20 69 6e 74 65 72 6f 70 20 44 4c 4c 20 28  he interop DLL (
0780: 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
0790: 64 6c 6c 22 29 2c 20 6f 72 20 77 65 20 61 72 65  dll"), or we are
07a0: 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 0d   running on the.
07b0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
07c0: 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
07d0: 6d 65 77 6f 72 6b 2c 20 77 65 20 73 68 6f 75 6c  mework, we shoul
07e0: 64 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 63  d include this c
07f0: 6f 64 65 20 28 6f 6e 6c 79 20 69 66 20 74 68 65  ode (only if the
0800: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
0810: 20 66 65 61 74 75 72 65 20 68 61 73 20 61 63 74   feature has act
0820: 75 61 6c 6c 79 20 62 65 65 6e 20 65 6e 61 62 6c  ually been enabl
0830: 65 64 29 2e 20 20 54 68 69 73 20 63 6f 64 65 20  ed).  This code 
0840: 77 6f 75 6c 64 20 62 65 20 74 6f 74 61 6c 6c 79  would be totally
0850: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
0860: 20 72 65 64 75 6e 64 61 6e 74 20 69 66 20 74 68   redundant if th
0870: 69 73 20 6d 6f 64 75 6c 65 20 68 61 73 20 62 65  is module has be
0880: 65 6e 20 62 75 6e 64 6c 65 64 20 69 6e 74 6f 20  en bundled into 
0890: 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 0d 0a  the mixed-mode..
08a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
08b0: 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20  ssembly...      
08c0: 2f 2f 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  //..#if SQLITE_S
08d0: 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49  TANDARD || USE_I
08e0: 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c  NTEROP_DLL || PL
08f0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
0900: 41 4d 45 57 4f 52 4b 0d 0a 0d 0a 20 20 20 20 20  AMEWORK....     
0910: 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
0920: 54 45 3a 20 4f 6e 6c 79 20 63 6f 6d 70 69 6c 65  TE: Only compile
0930: 20 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6c   in the native l
0940: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 20  ibrary pre-load 
0950: 63 6f 64 65 20 69 66 20 74 68 65 20 66 65 61 74  code if the feat
0960: 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ure..      //   
0970: 20 20 20 20 68 61 73 20 62 65 65 6e 20 65 6e 61      has been ena
0980: 62 6c 65 64 20 66 6f 72 20 74 68 69 73 20 62 75  bled for this bu
0990: 69 6c 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  ild...      //..
09a0: 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49  #if PRELOAD_NATI
09b0: 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20  VE_LIBRARY..    
09c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
09d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
09e0: 61 6d 65 20 6f 66 20 74 68 65 20 65 6e 76 69 72  ame of the envir
09f0: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
0a00: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70  containing the p
0a10: 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20  rocessor..      
0a20: 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65  /// architecture
0a30: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
0a40: 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  process...      
0a50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0a60: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
0a70: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
0a80: 72 69 6e 67 20 50 52 4f 43 45 53 53 4f 52 5f 41  ring PROCESSOR_A
0a90: 52 43 48 49 54 45 43 54 55 52 45 20 3d 0d 0a 20  RCHITECTURE =.. 
0aa0: 20 20 20 20 20 20 20 20 20 22 50 52 4f 43 45 53           "PROCES
0ab0: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
0ac0: 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  ";....      ////
0ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
0b20: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
0b30: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44 6c  adonly string Dl
0b40: 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d  lFileExtension =
0b50: 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20 20   ".dll";....    
0b60: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
0b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0bb0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
0bc0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
0bd0: 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  ing XmlConfigFil
0be0: 65 4e 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20  eName =..       
0bf0: 20 20 20 74 79 70 65 6f 66 28 55 6e 73 61 66 65     typeof(Unsafe
0c00: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 29 2e 4e  NativeMethods).N
0c10: 61 6d 65 73 70 61 63 65 20 2b 20 22 2e 63 6f 6e  amespace + ".con
0c20: 66 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  fig";....      /
0c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
0c80: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0c90: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
0ca0: 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65   the P/Invoke me
0cb0: 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73 20  thod that wraps 
0cc0: 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33 32  the native Win32
0cd0: 20 4c 6f 61 64 4c 69 62 72 61 72 79 0d 0a 20 20   LoadLibrary..  
0ce0: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
0cf0: 2e 20 20 53 65 65 20 74 68 65 20 4d 53 44 4e 20  .  See the MSDN 
0d00: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
0d10: 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f  r full details o
0d20: 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20  n what it..     
0d30: 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20   /// does...    
0d40: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0d50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
0d60: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
0d70: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
0d80: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  he name of the e
0d90: 78 65 63 75 74 61 62 6c 65 20 6c 69 62 72 61 72  xecutable librar
0da0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
0db0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
0dc0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
0dd0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
0de0: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
0df0: 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52  upon success -OR
0e00: 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e  - IntPtr.Zero on
0e10: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
0e20: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
0e30: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
0e40: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
0e50: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
0e60: 74 28 22 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23  t("kernel32",..#
0e70: 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c  else..      [Dll
0e80: 49 6d 70 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22  Import("coredll"
0e90: 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ,..#endif..     
0ea0: 20 20 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76       CallingConv
0eb0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
0ec0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70  Convention.Winap
0ed0: 69 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  i, CharSet = Cha
0ee0: 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20  rSet.Auto,..#if 
0ef0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
0f00: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
0f10: 20 20 20 20 20 20 42 65 73 74 46 69 74 4d 61 70        BestFitMap
0f20: 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68  ping = false, Th
0f30: 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43  rowOnUnmappableC
0f40: 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e  har = true,..#en
0f50: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 53  dif..          S
0f60: 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72  etLastError = tr
0f70: 75 65 29 5d 0d 0a 20 20 20 20 20 20 70 72 69 76  ue)]..      priv
0f80: 61 74 65 20 73 74 61 74 69 63 20 65 78 74 65 72  ate static exter
0f90: 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  n IntPtr LoadLib
0fa0: 72 61 72 79 28 73 74 72 69 6e 67 20 66 69 6c 65  rary(string file
0fb0: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1010: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
1020: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1030: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1040: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
1050: 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20  is the P/Invoke 
1060: 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70  method that wrap
1070: 73 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e  s the native Win
1080: 33 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f  32 GetSystemInfo
1090: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63  ..      /// func
10a0: 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d  tion.  See the M
10b0: 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
10c0: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
10d0: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
10e0: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
10f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1100: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1110: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79 73  <param name="sys
1120: 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20 20  temInfo">..     
1130: 20 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d 20   /// The system 
1140: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75  information stru
1150: 63 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c 6c  cture to be fill
1160: 65 64 20 69 6e 20 62 79 20 74 68 65 20 66 75 6e  ed in by the fun
1170: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ction...      //
1180: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1190: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f    [DllImport("co
11a0: 72 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67 43  redll", CallingC
11b0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
11c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69  ingConvention.Wi
11d0: 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 70 72  napi)]..      pr
11e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 65 78 74  ivate static ext
11f0: 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79 73 74  ern void GetSyst
1200: 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53 54 45  emInfo(out SYSTE
1210: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
1220: 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  o);....      ///
1230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1270: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
1280: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1290: 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d     /// This enum
12a0: 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73  eration contains
12b0: 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76 61   the possible va
12c0: 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70 72 6f  lues for the pro
12d0: 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  cessor..      //
12e0: 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20 66  / architecture f
12f0: 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79 73 74  ield of the syst
1300: 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73  em information s
1310: 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
1320: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1330: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 65  .      private e
1340: 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72 41 72 63  num ProcessorArc
1350: 68 69 74 65 63 74 75 72 65 20 3a 20 75 73 68 6f  hitecture : usho
1360: 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a 20 57 69  rt /* COMPAT: Wi
1370: 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 7b  n32. */..      {
1380: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 74 65  ..          Inte
1390: 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20 20 20  l = 0,..        
13a0: 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a 20 20 20    MIPS = 1,..   
13b0: 20 20 20 20 20 20 20 41 6c 70 68 61 20 3d 20 32         Alpha = 2
13c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6f 77  ,..          Pow
13d0: 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20 20 20 20  erPC = 3,..     
13e0: 20 20 20 20 20 53 48 78 20 3d 20 34 2c 0d 0a 20       SHx = 4,.. 
13f0: 20 20 20 20 20 20 20 20 20 41 52 4d 20 3d 20 35           ARM = 5
1400: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41 36  ,..          IA6
1410: 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20 20 20 20  4 = 6,..        
1420: 20 20 41 6c 70 68 61 36 34 20 3d 20 37 2c 0d 0a    Alpha64 = 7,..
1430: 20 20 20 20 20 20 20 20 20 20 4d 53 49 4c 20 3d            MSIL =
1440: 20 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41   8,..          A
1450: 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20 20 20 20  MD64 = 9,..     
1460: 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f 57 69 6e       IA32_on_Win
1470: 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20 20 20 20  64 = 10,..      
1480: 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30 78      Unknown = 0x
1490: 46 46 46 46 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  FFFF..      }...
14a0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
14b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
1500: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
1510: 20 54 68 69 73 20 73 74 72 75 63 74 75 72 65 20   This structure 
1520: 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72 6d 61  contains informa
1530: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 63  tion about the c
1540: 75 72 72 65 6e 74 20 63 6f 6d 70 75 74 65 72 2e  urrent computer.
1550: 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f   This..      ///
1560: 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 70 72   includes the pr
1570: 6f 63 65 73 73 6f 72 20 74 79 70 65 2c 20 70 61  ocessor type, pa
1580: 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f 72 79 20  ge size, memory 
1590: 61 64 64 72 65 73 73 65 73 2c 20 65 74 63 2e 0d  addresses, etc..
15a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b 53 74  mary>..      [St
15c0: 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
15d0: 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
15e0: 29 5d 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  )]..      privat
15f0: 65 20 73 74 72 75 63 74 20 53 59 53 54 45 4d 5f  e struct SYSTEM_
1600: 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  INFO..      {.. 
1610: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
1620: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
1630: 63 74 75 72 65 20 77 50 72 6f 63 65 73 73 6f 72  cture wProcessor
1640: 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20  Architecture;.. 
1650: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
1660: 75 73 68 6f 72 74 20 77 52 65 73 65 72 76 65 64  ushort wReserved
1670: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
1680: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
1690: 69 63 20 75 69 6e 74 20 64 77 50 61 67 65 53 69  ic uint dwPageSi
16a0: 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ze; /* NOT USED 
16b0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
16c0: 62 6c 69 63 20 49 6e 74 50 74 72 20 6c 70 4d 69  blic IntPtr lpMi
16d0: 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e  nimumApplication
16e0: 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20  Address; /* NOT 
16f0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
1700: 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
1710: 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70 6c 69 63   lpMaximumApplic
1720: 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a  ationAddress; /*
1730: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
1740: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
1750: 69 6e 74 20 64 77 41 63 74 69 76 65 50 72 6f 63  int dwActiveProc
1760: 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20 4e 4f  essorMask; /* NO
1770: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
1780: 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74       public uint
1790: 20 64 77 4e 75 6d 62 65 72 4f 66 50 72 6f 63 65   dwNumberOfProce
17a0: 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20 55 53  ssors; /* NOT US
17b0: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
17c0: 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50   public uint dwP
17d0: 72 6f 63 65 73 73 6f 72 54 79 70 65 3b 20 2f 2a  rocessorType; /*
17e0: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
17f0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
1800: 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74 69 6f 6e  int dwAllocation
1810: 47 72 61 6e 75 6c 61 72 69 74 79 3b 20 2f 2a 20  Granularity; /* 
1820: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
1830: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73         public us
1840: 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72 4c  hort wProcessorL
1850: 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  evel; /* NOT USE
1860: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
1870: 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50  public ushort wP
1880: 72 6f 63 65 73 73 6f 72 52 65 76 69 73 69 6f 6e  rocessorRevision
1890: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
18a0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
18b0: 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  f....      /////
18c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1900: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
1910: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1920: 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69   /// This lock i
1930: 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63  s used to protec
1940: 74 20 74 68 65 20 73 74 61 74 69 63 20 5f 53 51  t the static _SQ
1950: 4c 69 74 65 4d 6f 64 75 6c 65 20 61 6e 64 0d 0a  LiteModule and..
1960: 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
1970: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
1980: 6c 61 74 66 6f 72 6d 73 20 66 69 65 6c 64 73 2c  latforms fields,
1990: 20 62 65 6c 6f 77 2e 0d 0a 20 20 20 20 20 20 2f   below...      /
19a0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
19b0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
19c0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  tic readonly obj
19d0: 65 63 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f  ect staticSyncRo
19e0: 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
19f0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  );....      ////
1a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a40: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
1a50: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1a60: 20 20 2f 2f 2f 20 53 74 6f 72 65 73 20 74 68 65    /// Stores the
1a70: 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77 65 65   mappings betwee
1a80: 6e 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  n processor arch
1a90: 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61  itecture names a
1aa0: 6e 64 20 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20  nd platform..   
1ab0: 20 20 20 2f 2f 2f 20 6e 61 6d 65 73 2e 0d 0a 20     /// names... 
1ac0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1ad0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
1ae0: 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69 6f  te static Dictio
1af0: 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72  nary<string, str
1b00: 69 6e 67 3e 20 70 72 6f 63 65 73 73 6f 72 41 72  ing> processorAr
1b10: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
1b20: 72 6d 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  rms;....      //
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 2f 2f 2f  ////////////////
1b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b70: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
1b80: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1b90: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1ba0: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
1bb0: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
1bc0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f  SQLite library o
1bd0: 72 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20  r the value..   
1be0: 20 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65     /// IntPtr.Ze
1bf0: 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
1c00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1c10: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
1c20: 49 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4d 6f  IntPtr _SQLiteMo
1c30: 64 75 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  dule = IntPtr.Ze
1c40: 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ro;....      ///
1c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c90: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
1ca0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1cb0: 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20     /// For now, 
1cc0: 74 68 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70  this method simp
1cd0: 6c 79 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69  ly calls the Ini
1ce0: 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d  tialize method..
1cf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
1d00: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61  mary>..      sta
1d10: 74 69 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65  tic UnsafeNative
1d20: 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20  Methods()..     
1d30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
1d40: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20  itialize();..   
1d50: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
1d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
1db0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1dc0: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
1dd0: 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74   to initialize t
1de0: 68 69 73 20 63 6c 61 73 73 20 62 79 20 70 72 65  his class by pre
1df0: 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74  -loading the nat
1e00: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
1e10: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f    /// library fo
1e20: 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  r the processor 
1e30: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
1e40: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
1e50: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
1e60: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1e70: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e80: 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a  c void Initializ
1e90: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  e()..      {..  
1ea0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1eb0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
1ec0: 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f 61  f the "No_PreLoa
1ed0: 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e  dSQLite" environ
1ee0: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73  ment variable is
1ef0: 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20 20   set (to..      
1f00: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 79      //       any
1f10: 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c 6c  thing), skip all
1f20: 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f 64   our special cod
1f30: 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65 74  e and simply ret
1f40: 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  urn...          
1f50: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
1f60: 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75   (GetSettingValu
1f70: 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c  e("No_PreLoadSQL
1f80: 69 74 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ite") != null)..
1f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1fa0: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
1fb0: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
1fc0: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
1fd0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1fe0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1ff0: 20 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20         // TODO: 
2000: 4d 61 6b 65 20 73 75 72 65 20 74 68 69 73 20 6c  Make sure this l
2010: 69 73 74 20 69 73 20 75 70 64 61 74 65 64 20 69  ist is updated i
2020: 66 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 0d  f the supported.
2030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
2040: 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f  /       processo
2050: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e  r architecture n
2060: 61 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74  ames and/or plat
2070: 66 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20 20 20  form names..    
2080: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2090: 20 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20     changes...   
20a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
20b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
20c0: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
20d0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
20e0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
20f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2100: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2120: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61     // NOTE: Crea
2130: 74 65 20 74 68 65 20 6d 61 70 20 6f 66 20 70 72  te the map of pr
2140: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
2150: 74 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20 20 20  ture names..    
2160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2170: 20 20 20 20 20 20 20 74 6f 20 70 6c 61 74 66 6f         to platfo
2180: 72 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67 20 61  rm names using a
2190: 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76   case-insensitiv
21a0: 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  e string..      
21b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
21c0: 20 20 20 20 20 63 6f 6d 70 61 72 65 72 2e 0d 0a       comparer...
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
21f0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
2200: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
2210: 74 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20  tforms =..      
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2230: 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73  new Dictionary<s
2240: 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 0d  tring, string>(.
2250: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2260: 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
2270: 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61  gComparer.Ordina
2280: 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d  lIgnoreCase);...
2290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22a0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
22b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
22c0: 3a 20 53 65 74 75 70 20 74 68 65 20 6c 69 73 74  : Setup the list
22d0: 20 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d   of platform nam
22e0: 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  es associated wi
22f0: 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  th..            
2300: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
2310: 68 65 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f  he supported pro
2320: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
2330: 75 72 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  ures...         
2340: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
2360: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
2370: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64  turePlatforms.Ad
2380: 64 28 22 78 38 36 22 2c 20 22 57 69 6e 33 32 22  d("x86", "Win32"
2390: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
23a0: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
23b0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
23c0: 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22  orms.Add("AMD64"
23d0: 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20  , "x64");..     
23e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
23f0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
2400: 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28  rePlatforms.Add(
2410: 22 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d  "IA64", "Itanium
2420: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
2430: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
2440: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
2450: 66 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c  forms.Add("ARM",
2460: 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20   "WinCE");..    
2470: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2480: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
24a0: 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74 20 61  / BUGBUG: What a
24b0: 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c 69  bout other appli
24c0: 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d  cation domains?.
24d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
24e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
24f0: 20 69 66 20 28 5f 53 51 4c 69 74 65 4d 6f 64 75   if (_SQLiteModu
2500: 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
2510: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2520: 20 20 20 20 20 20 5f 53 51 4c 69 74 65 4d 6f 64        _SQLiteMod
2530: 75 6c 65 20 3d 20 50 72 65 4c 6f 61 64 53 51 4c  ule = PreLoadSQL
2540: 69 74 65 44 6c 6c 28 6e 75 6c 6c 2c 20 6e 75 6c  iteDll(null, nul
2550: 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  l);..          }
2560: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
2570: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
25c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
25d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
25e0: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
25f0: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
2600: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
2610: 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c   for the assembl
2620: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  y..      /// con
2630: 74 61 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61  taining the mana
2640: 67 65 64 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  ged System.Data.
2650: 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74  SQLite component
2660: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
2670: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2680: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
2690: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c       /// The XML
26a0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
26b0: 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75  ile name -OR- nu
26c0: 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  ll if it cannot 
26d0: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20  be determined.. 
26e0: 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73       /// or does
26f0: 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20 20   not exist...   
2700: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2710: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
2720: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
2730: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
2740: 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ame()..      {..
2750: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
2760: 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
2770: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
2780: 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21  leName;....#if !
2790: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27a0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
27b0: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d       directory =
27c0: 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
27d0: 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72  ntDomain.BaseDir
27e0: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
27f0: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 50 61     fileName = Pa
2800: 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63  th.Combine(direc
2810: 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
2820: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
2830: 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
2840: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
2850: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2860: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
2870: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
2880: 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
2890: 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69   = GetAssemblyDi
28a0: 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20  rectory();..    
28b0: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
28c0: 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69   Path.Combine(di
28d0: 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66  rectory, XmlConf
28e0: 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  igFileName);....
28f0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
2900: 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
2910: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
2920: 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
2930: 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
2940: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
2950: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2960: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
29b0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
29c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
29d0: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
29e0: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
29f0: 73 70 65 63 69 66 69 65 64 20 22 63 6f 6e 66 69  specified "confi
2a00: 67 75 72 61 74 69 6f 6e 22 0d 0a 20 20 20 20 20  guration"..     
2a10: 20 2f 2f 2f 20 76 61 72 69 61 62 6c 65 2c 20 75   /// variable, u
2a20: 73 69 6e 67 20 74 68 65 20 58 4d 4c 20 63 6f 6e  sing the XML con
2a30: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
2a40: 61 6e 64 2f 6f 72 20 74 68 65 20 65 6e 76 69 72  and/or the envir
2a50: 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f  onment..      //
2a60: 2f 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20  / variables for 
2a70: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
2a80: 65 73 73 20 61 6e 64 2f 6f 72 20 74 68 65 20 63  ess and/or the c
2a90: 75 72 72 65 6e 74 20 73 79 73 74 65 6d 2c 20 77  urrent system, w
2aa0: 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  hen..      /// a
2ab0: 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20  vailable...     
2ac0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2ad0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
2ae0: 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
2af0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
2b00: 6d 65 20 6f 66 20 74 68 65 20 63 6f 6e 66 69 67  me of the config
2b10: 75 72 61 74 69 6f 6e 20 76 61 72 69 61 62 6c 65  uration variable
2b20: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
2b30: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
2b40: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2b50: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
2b60: 6f 66 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61  of the configura
2b70: 74 69 6f 6e 20 76 61 72 69 61 62 6c 65 20 2d 4f  tion variable -O
2b80: 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61  R- null if it ca
2b90: 6e 6e 6f 74 20 62 65 0d 0a 20 20 20 20 20 20 2f  nnot be..      /
2ba0: 2f 2f 20 64 65 74 65 72 6d 69 6e 65 64 2e 20 20  // determined.  
2bb0: 42 79 20 64 65 66 61 75 6c 74 2c 20 72 65 66 65  By default, refe
2bc0: 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69  rences to existi
2bd0: 6e 67 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 77  ng environment w
2be0: 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62  ill..      /// b
2bf0: 65 20 65 78 70 61 6e 64 65 64 20 77 69 74 68 69  e expanded withi
2c00: 6e 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 76  n the returned v
2c10: 61 6c 75 65 20 75 6e 6c 65 73 73 20 65 69 74 68  alue unless eith
2c20: 65 72 20 74 68 65 20 22 4e 6f 5f 45 78 70 61 6e  er the "No_Expan
2c30: 64 22 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72  d"..      /// or
2c40: 20 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70 61 72   "No_Expand_<par
2c50: 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 61 6d 65  amref name="name
2c60: 22 20 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  " />" environmen
2c70: 74 20 76 61 72 69 61 62 6c 65 73 20 61 72 65 0d  t variables are.
2c80: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 2e 0d  .      /// set..
2c90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
2ca0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74  urns>..      int
2cb0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72  ernal static str
2cc0: 69 6e 67 20 47 65 74 53 65 74 74 69 6e 67 56 61  ing GetSettingVa
2cd0: 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
2ce0: 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20  string name..   
2cf0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2d00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  {..          str
2d10: 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c  ing value = null
2d20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
2d30: 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  f (name == null)
2d40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d50: 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d  return value;...
2d60: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2d70: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2d80: 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
2d90: 65 78 70 61 6e 64 20 3d 20 74 72 75 65 3b 0d 0a  expand = true;..
2da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
2db0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
2dc0: 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
2dd0: 6c 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20  le("No_Expand") 
2de0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2df0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e00: 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61       expand = fa
2e10: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
2e20: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  }..          els
2e30: 65 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e  e if (Environmen
2e40: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
2e50: 56 61 72 69 61 62 6c 65 28 53 74 72 69 6e 67 2e  Variable(String.
2e60: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
2e70: 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 45             "No_E
2e80: 78 70 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65  xpand_{0}", name
2e90: 29 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  )) != null)..   
2ea0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2eb0: 20 20 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d          expand =
2ec0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
2ed0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2ee0: 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f    value = Enviro
2ef0: 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
2f00: 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 6e 61 6d  mentVariable(nam
2f10: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2f20: 20 69 66 20 28 65 78 70 61 6e 64 20 26 26 20 21   if (expand && !
2f30: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
2f40: 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
2f50: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
2f60: 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
2f70: 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e  ExpandEnvironmen
2f80: 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65  tVariables(value
2f90: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2fa0: 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c  if (value != nul
2fb0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2fc0: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
2fd0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
2fe0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2ff0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3000: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
3010: 4e 61 6d 65 20 3d 20 47 65 74 58 6d 6c 43 6f 6e  Name = GetXmlCon
3020: 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a  figFileName();..
3030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3040: 69 66 20 28 66 69 6c 65 4e 61 6d 65 20 3d 3d 20  if (fileName == 
3050: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
3060: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3070: 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
3080: 20 20 20 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d          XmlDocum
3090: 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e  ent document = n
30a0: 65 77 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29  ew XmlDocument()
30b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
30c0: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64     document.Load
30d0: 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  (fileName);.... 
30e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c               Xml
30f0: 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74 20  Element element 
3100: 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65 6c 65 63  = document.Selec
3110: 74 53 69 6e 67 6c 65 4e 6f 64 65 28 53 74 72 69  tSingleNode(Stri
3120: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
3130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f                "/
3140: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61 70  configuration/ap
3150: 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40 6b  pSettings/add[@k
3160: 65 79 3d 27 7b 30 7d 27 5d 22 29 29 20 61 73 20  ey='{0}']")) as 
3170: 58 6d 6c 45 6c 65 6d 65 6e 74 3b 0d 0a 0d 0a 20  XmlElement;.... 
3180: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3190: 28 65 6c 65 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c  (element != null
31a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
31b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31c0: 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
31d0: 74 2e 48 61 73 41 74 74 72 69 62 75 74 65 28 22  t.HasAttribute("
31e0: 76 61 6c 75 65 22 29 29 0d 0a 20 20 20 20 20 20  value"))..      
31f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3200: 76 61 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74 2e  value = element.
3210: 47 65 74 41 74 74 72 69 62 75 74 65 28 22 76 61  GetAttribute("va
3220: 6c 75 65 22 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  lue");....#if !P
3230: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
3240: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
3250: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3260: 65 78 70 61 6e 64 20 26 26 20 21 53 74 72 69 6e  expand && !Strin
3270: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
3280: 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
3290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
32a0: 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65  alue = Environme
32b0: 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e  nt.ExpandEnviron
32c0: 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61  mentVariables(va
32d0: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  lue);..#endif.. 
32e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
32f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
3300: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
3310: 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41   && TRACE_PRELOA
3320: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
3330: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
3340: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
3350: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
3360: 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
3370: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
3380: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
3390: 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
33a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
33b0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
33c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33d0: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
33e0: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
33f0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
3400: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
3410: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
3420: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
3430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3440: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
3450: 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
3460: 64 20 74 6f 20 67 65 74 20 76 61 72 69 61 62 6c  d to get variabl
3470: 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
3480: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 22               "\"
3490: 7b 30 7d 5c 22 20 76 61 6c 75 65 3a 20 7b 31 7d  {0}\" value: {1}
34a0: 22 2c 20 6e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a  ", name, e)); /*
34b0: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
34c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
34d0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
34e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
34f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3500: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
3510: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
3520: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
3530: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
3540: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
3550: 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ue;..      }....
3560: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
35b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
35c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
35d0: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
35e0: 72 6e 73 20 74 68 65 20 64 69 72 65 63 74 6f 72  rns the director
35f0: 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
3600: 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
3610: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78  ng..      /// ex
3620: 65 63 75 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f  ecuted...      /
3630: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3640: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
3650: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
3660: 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  e directory for 
3670: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
3680: 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65  rently being exe
3690: 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  cuted -OR- null 
36a0: 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74  if..      /// it
36b0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
36c0: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
36d0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
36e0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
36f0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 41 73 73  ic string GetAss
3700: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
3710: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
3720: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
3730: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3740: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
3750: 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c  sembly = Assembl
3760: 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73  y.GetExecutingAs
3770: 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  sembly();....   
3780: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
3790: 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
37a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37b0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
37c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37d0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
37e0: 65 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  e;....#if PLATFO
37f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
3800: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
3810: 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20     AssemblyName 
3820: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61  assemblyName = a
3830: 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28  ssembly.GetName(
3840: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
3850: 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79      if (assembly
3860: 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Name == null).. 
3870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3880: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
3890: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
38a0: 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62  ileName = assemb
38b0: 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73 65 3b  lyName.CodeBase;
38c0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
38d0: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
38e0: 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74  = assembly.Locat
38f0: 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ion;..#endif....
3900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
3910: 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
3920: 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
3930: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3940: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
3950: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3960: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
3970: 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69  ory = Path.GetDi
3980: 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65  rectoryName(file
3990: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
39a0: 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
39b0: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
39c0: 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20  (directory))..  
39d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39e0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3a00: 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d  turn directory;.
3a10: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
3a20: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
3a30: 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
3a40: 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  AD..          ca
3a50: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
3a60: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
3a70: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
3a80: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
3a90: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
3aa0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
3ab0: 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
3ac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3ad0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
3ae0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3af0: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
3b00: 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
3b10: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
3b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
3b30: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
3b40: 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b60: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
3b70: 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c   pre-loader fail
3b80: 65 64 20 74 6f 20 67 65 74 20 64 69 72 65 63 74  ed to get direct
3b90: 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ory " +..       
3ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
3bb0: 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
3bc0: 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
3bd0: 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20  : {0}", e)); /* 
3be0: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
3bf0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3c00: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
3c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
3c20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3c30: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
3c40: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
3c50: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
3c60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3c70: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
3c80: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
3c90: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
3ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
3ce0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3cf0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
3d00: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
3d10: 73 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  s the base direc
3d20: 74 6f 72 79 20 6f 66 20 74 68 65 20 63 75 72 72  tory of the curr
3d30: 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d  ent application.
3d40: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69  .      /// domai
3d50: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
3d60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3d70: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3d80: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73       /// The bas
3d90: 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  e directory for 
3da0: 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
3db0: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d  ication domain -
3dc0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a  OR- null if it..
3dd0: 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74        /// cannot
3de0: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
3df0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
3e00: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
3e10: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
3e20: 6e 67 20 47 65 74 42 61 73 65 44 69 72 65 63 74  ng GetBaseDirect
3e30: 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ory()..      {..
3e40: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3e50: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
3e60: 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64   If the "PreLoad
3e70: 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63  SQLite_BaseDirec
3e80: 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  tory" environmen
3e90: 74 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20  t variable..    
3ea0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
3eb0: 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76 65  s set, use it ve
3ec0: 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20 62  rbatim for the b
3ed0: 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  ase directory...
3ee0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
3ef0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
3f00: 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 53 65  irectory = GetSe
3f10: 74 74 69 6e 67 56 61 6c 75 65 28 22 50 72 65 4c  ttingValue("PreL
3f20: 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69  oadSQLite_BaseDi
3f30: 72 65 63 74 6f 72 79 22 29 3b 0d 0a 0d 0a 20 20  rectory");....  
3f40: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65          if (dire
3f50: 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ctory != null)..
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3f70: 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d  turn directory;.
3f80: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
3f90: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
3fa0: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
3fb0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
3fc0: 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c  TE: If the "PreL
3fd0: 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73  oadSQLite_UseAss
3fe0: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
3ff0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
4000: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4010: 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20  variable is set 
4020: 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20 61  (to anything), a
4030: 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68  ttempt to use th
4040: 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
4050: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4060: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63  containing the c
4070: 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
4080: 6e 67 20 61 73 73 65 6d 62 6c 79 20 28 69 2e 65  ng assembly (i.e
4090: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ...          // 
40a0: 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74        System.Dat
40b0: 61 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61  a.SQLite) intsea
40c0: 64 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61  d of the applica
40d0: 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 62 61 73 65  tion domain base
40e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
40f0: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2e 0d       directory..
4100: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
4110: 20 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74           if (Get
4120: 53 65 74 74 69 6e 67 56 61 6c 75 65 28 22 50 72  SettingValue("Pr
4130: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41  eLoadSQLite_UseA
4140: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
4150: 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ") != null)..   
4160: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4170: 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
4180: 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44  y = GetAssemblyD
4190: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20  irectory();.... 
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
41b0: 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75  (directory != nu
41c0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
41d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69         return di
41e0: 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
41f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4200: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4210: 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
4220: 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
4230: 20 75 73 69 6e 67 20 74 68 65 20 62 61 73 65 20   using the base 
4240: 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
4250: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
4260: 20 20 20 20 20 63 75 72 72 65 6e 74 20 61 70 70       current app
4270: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e  lication domain.
4280: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
4290: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
42a0: 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
42b0: 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72  ntDomain.BaseDir
42c0: 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a  ectory;..#else..
42d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
42e0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
42f0: 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c   Otherwise, fall
4300: 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68  back on using th
4310: 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
4320: 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
4330: 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63    //       the c
4340: 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
4350: 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20  ng assembly...  
4360: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4370: 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
4380: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
4390: 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  y();..#endif..  
43a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
43b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
4400: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4410: 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
4420: 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e 61 6d  nes if the dynam
4430: 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
4440: 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75 69 72  file name requir
4450: 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20 20 20  es a suffix..   
4460: 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20     /// and adds 
4470: 69 74 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  it if necessary.
4480: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
4490: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
44a0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
44b0: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
44c0: 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
44d0: 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  l dynamic link l
44e0: 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
44f0: 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20   to inspect...  
4500: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
4510: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
4520: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
4530: 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e   The dynamic lin
4540: 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
4550: 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f  ame, possibly mo
4560: 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c 75 64  dified to includ
4570: 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  e an..      /// 
4580: 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20  extension...    
4590: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
45a0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
45b0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 46 69  static string Fi
45c0: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d  xUpDllFileName(.
45d0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
45e0: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
45f0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
4600: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
4610: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
4620: 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
4630: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
4640: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 6c 61               Pla
4650: 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d  tformID platform
4660: 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74  Id = Environment
4670: 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66  .OSVersion.Platf
4680: 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  orm;....        
4690: 20 20 20 20 20 20 69 66 20 28 28 70 6c 61 74 66        if ((platf
46a0: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
46b0: 6d 49 44 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a  mID.Win32S) ||..
46c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46d0: 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d    (platformId ==
46e0: 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33   PlatformID.Win3
46f0: 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a 20 20  2Windows) ||..  
4700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4710: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
4720: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 4e  latformID.Win32N
4730: 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  T) ||..         
4740: 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f           (platfo
4750: 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d  rmId == Platform
4760: 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20 20  ID.WinCE))..    
4770: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
4790: 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e 45 6e 64  f (!fileName.End
47a0: 73 57 69 74 68 28 44 6c 6c 46 69 6c 65 45 78 74  sWith(DllFileExt
47b0: 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  ension,..       
47c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47d0: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69     StringCompari
47e0: 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
47f0: 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eCase))..       
4800: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4820: 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
4830: 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74  ame + DllFileExt
4840: 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  ension;..       
4850: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
4860: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
4870: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
4880: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
4890: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
48a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
48b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48f0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
4900: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
4910: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
4920: 20 72 65 74 75 72 6e 73 20 74 68 65 20 70 72 6f   returns the pro
4930: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
4940: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
4950: 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  nt..      /// pr
4960: 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ocess...      //
4970: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4980: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4990: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
49a0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
49b0: 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63  tecture of the c
49c0: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20 2d  urrent process -
49d0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a  OR- null if it..
49e0: 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74        /// cannot
49f0: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
4a00: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
4a10: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
4a20: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
4a30: 6e 67 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41  ng GetProcessorA
4a40: 72 63 68 69 74 65 63 74 75 72 65 28 29 0d 0a 20  rchitecture().. 
4a50: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4a60: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
4a70: 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
4a80: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50  "PreLoadSQLite_P
4a90: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
4aa0: 74 75 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e  ture" environmen
4ab0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
4ac0: 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 69        variable i
4ad0: 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76 65  s set, use it ve
4ae0: 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20 63  rbatim for the c
4af0: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 6f 72  urrent processor
4b00: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
4b10: 20 20 20 20 20 61 72 63 68 69 74 65 63 74 75 72       architectur
4b20: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
4b30: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
4b40: 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
4b50: 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 53 65  itecture = GetSe
4b60: 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
4b70: 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c             "PreL
4b80: 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73  oadSQLite_Proces
4b90: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
4ba0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
4bb0: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
4bc0: 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e 75 6c  hitecture != nul
4bd0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
4be0: 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73    return process
4bf0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
4c00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
4c10: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55  .          // BU
4c20: 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69 73 20  GBUG: Will this 
4c30: 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69 61 62  always be reliab
4c40: 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  le?..          /
4c50: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f  /..          pro
4c60: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
4c70: 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
4c80: 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52 5f 41  alue(PROCESSOR_A
4c90: 52 43 48 49 54 45 43 54 55 52 45 29 3b 0d 0a 0d  RCHITECTURE);...
4ca0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
4cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cf0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
4d00: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
4d10: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  RK..          //
4d20: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48  ..          // H
4d30: 41 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20 61  ACK: Check for a
4d40: 6e 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20 73  n "impossible" s
4d50: 69 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74 68  ituation.  If th
4d60: 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a  e pointer size..
4d70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
4d80: 20 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20 74     is 32-bits, t
4d90: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
4da0: 68 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f 74  hitecture cannot
4db0: 20 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20   be "AMD64"...  
4dc0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
4dd0: 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 77   In that case, w
4de0: 65 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65 72  e are almost cer
4df0: 74 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20 61  tainly hitting a
4e00: 20 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20 20   bug in the..   
4e10: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4e20: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
4e30: 20 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20 53   and/or Visual S
4e40: 74 75 64 69 6f 20 74 68 61 74 20 63 61 75 73 65  tudio that cause
4e50: 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  s the..         
4e60: 20 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45 53   //       PROCES
4e70: 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
4e80: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
4e90: 69 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e  iable to contain
4ea0: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
4eb0: 2f 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20 76  //       wrong v
4ec0: 61 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69 72  alue in some cir
4ed0: 63 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c 65  cumstances.  Ple
4ee0: 61 73 65 20 72 65 66 65 72 20 74 6f 20 74 69 63  ase refer to tic
4ef0: 6b 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ket..          /
4f00: 2f 20 20 20 20 20 20 20 5b 39 61 63 39 38 36 32  /       [9ac9862
4f10: 36 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65 72  611] for further
4f20: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20   information... 
4f30: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
4f40: 20 20 20 20 20 20 20 69 66 20 28 28 49 6e 74 50         if ((IntP
4f50: 74 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f  tr.Size == sizeo
4f60: 66 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20 20  f(int)) &&..    
4f70: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
4f80: 2e 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73 6f  .Equals(processo
4f90: 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 22  rArchitecture, "
4fa0: 41 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20 20  AMD64",..       
4fb0: 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
4fc0: 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
4fd0: 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d  nalIgnoreCase)).
4fe0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
4ff0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
5000: 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
5010: 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  AD..            
5020: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5030: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 65      // NOTE: Whe
5040: 6e 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e 61  n tracing is ena
5050: 62 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20 6f  bled, save the o
5060: 72 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63 74  riginally detect
5070: 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
5080: 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
5090: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
50a0: 65 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69 6e  e before changin
50b0: 67 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  g it...         
50c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
50d0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 61         string sa
50e0: 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63 68  vedProcessorArch
50f0: 69 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63 65  itecture = proce
5100: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
5110: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
5120: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5130: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5140: 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74 68  NOTE: We know th
5150: 61 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  at operating sys
5160: 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e  tems that return
5170: 20 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20 20   "AMD64" as..   
5180: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5190: 20 20 20 20 74 68 65 20 70 72 6f 63 65 73 73 6f      the processo
51a0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 61  r architecture a
51b0: 72 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73 75  re actually a su
51c0: 70 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20 20  perset of..     
51d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
51e0: 20 20 74 68 65 20 22 78 38 36 22 20 70 72 6f 63    the "x86" proc
51f0: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
5200: 72 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 72  re; therefore, r
5210: 65 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20 20  eturn..         
5220: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 78       //       "x
5230: 38 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f 69  86" when the poi
5240: 6e 74 65 72 20 73 69 7a 65 20 69 73 20 33 32 2d  nter size is 32-
5250: 62 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  bits...         
5260: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5270: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
5280: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 22  Architecture = "
5290: 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  x86";....#if !NE
52a0: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
52b0: 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
52c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
52d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
52e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
52f0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5300: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
5310: 54 45 3a 20 53 68 6f 77 20 74 68 61 74 20 77 65  TE: Show that we
5320: 20 68 69 74 20 61 20 66 61 69 72 6c 79 20 75 6e   hit a fairly un
5330: 75 73 75 61 6c 20 73 69 74 75 61 74 69 6f 6e 20  usual situation 
5340: 28 69 2e 65 2e 20 74 68 65 0d 0a 20 20 20 20 20  (i.e. the..     
5350: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5360: 20 20 20 20 20 20 22 77 72 6f 6e 67 22 20 70 72        "wrong" pr
5370: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
5380: 74 75 72 65 20 77 61 73 20 64 65 74 65 63 74 65  ture was detecte
5390: 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d)...           
53a0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
53c0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
53d0: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
53e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53f0: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
5400: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
5410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5420: 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
5430: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
5440: 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69   detected {0}-bi
5450: 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20  t pointer " +.. 
5460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5470: 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68 20       "size with 
5480: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
5490: 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20  ecture \"{1}\", 
54a0: 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20  using " +..     
54b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54c0: 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68   "processor arch
54d0: 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22  itecture \"{2}\"
54e0: 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20   instead...",.. 
54f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5500: 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65       IntPtr.Size
5510: 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c   * 8 /* bits */,
5520: 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
5530: 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20  rchitecture,..  
5540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5550: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
5560: 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20  hitecture)); /* 
5570: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
5580: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5590: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
55a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
55b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
55c0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
55d0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
55e0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
55f0: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
5600: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
5610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5650: 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
5660: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
5670: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ORK..          /
5680: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
5690: 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45  NOTE: On the .NE
56a0: 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
56b0: 6f 72 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20  ork, attempt to 
56c0: 75 73 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  use the native..
56d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
56e0: 20 20 20 57 69 6e 33 32 20 41 50 49 20 66 75 6e     Win32 API fun
56f0: 63 74 69 6f 6e 20 28 76 69 61 20 50 2f 49 6e 76  ction (via P/Inv
5700: 6f 6b 65 29 20 74 68 61 74 20 63 61 6e 20 70 72  oke) that can pr
5710: 6f 76 69 64 65 20 75 73 20 77 69 74 68 0d 0a 20  ovide us with.. 
5720: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
5730: 20 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20    the processor 
5740: 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20  architecture... 
5750: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
5760: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
5770: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5780: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5790: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
57a0: 3a 20 54 68 65 20 6f 75 74 70 75 74 20 6f 66 20  : The output of 
57b0: 74 68 65 20 47 65 74 53 79 73 74 65 6d 49 6e 66  the GetSystemInf
57c0: 6f 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20  o function will 
57d0: 62 65 20 70 6c 61 63 65 64 0d 0a 20 20 20 20 20  be placed..     
57e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
57f0: 20 20 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68    here.  Only th
5800: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
5810: 69 74 65 63 74 75 72 65 20 66 69 65 6c 64 20 69  itecture field i
5820: 73 20 75 73 65 64 20 62 79 0d 0a 20 20 20 20 20  s used by..     
5830: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
5840: 20 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a    this method...
5850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5870: 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74  SYSTEM_INFO syst
5880: 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20  emInfo;....     
5890: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
58a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
58b0: 54 45 3a 20 51 75 65 72 79 20 74 68 65 20 73 79  TE: Query the sy
58c0: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
58d0: 20 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74   via P/Invoke, t
58e0: 68 75 73 20 66 69 6c 6c 69 6e 67 0d 0a 20 20 20  hus filling..   
58f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5900: 20 20 20 20 74 68 65 20 73 74 72 75 63 74 75 72      the structur
5910: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
5920: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5930: 20 20 20 20 47 65 74 53 79 73 74 65 6d 49 6e 66      GetSystemInf
5940: 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e 66 6f  o(out systemInfo
5950: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
5960: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
5970: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 52        // NOTE: R
5980: 65 74 75 72 6e 20 74 68 65 20 70 72 6f 63 65 73  eturn the proces
5990: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
59a0: 20 76 61 6c 75 65 20 61 73 20 61 20 73 74 72 69   value as a stri
59b0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
59c0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
59d0: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
59e0: 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a 20 20  chitecture =..  
59f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a00: 73 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63  systemInfo.wProc
5a10: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
5a20: 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
5a30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5a40: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
5a50: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5a60: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
5a70: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
5a80: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
5a90: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
5aa0: 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69  / NOTE: Upon fai
5ab0: 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61 6e 20  lure, return an 
5ac0: 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 0d 0a 20  empty string... 
5ad0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
5ae0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
5af0: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 53  Architecture = S
5b00: 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 23 65  tring.Empty;..#e
5b10: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
5b20: 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73    return process
5b30: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
5b40: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
5b50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
5ba0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5bb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65  ..      /// Give
5bc0: 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  n the processor 
5bd0: 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 72 65  architecture, re
5be0: 74 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f  turns the name o
5bf0: 66 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d  f the platform..
5c00: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
5c10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5c20: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
5c30: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
5c40: 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
5c50: 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   The processor a
5c60: 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 62  rchitecture to b
5c70: 65 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20  e translated to 
5c80: 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e  a platform name.
5c90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
5ca0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
5cb0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
5cc0: 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72   /// The platfor
5cd0: 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73  m name for the s
5ce0: 70 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73  pecified process
5cf0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
5d00: 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20  -OR- null..     
5d10: 20 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f   /// if it canno
5d20: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
5d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
5d40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
5d50: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
5d60: 69 6e 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e  ing GetPlatformN
5d70: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
5d80: 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72  string processor
5d90: 41 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20  Architecture..  
5da0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
5db0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
5dc0: 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
5dd0: 72 45 6d 70 74 79 28 70 72 6f 63 65 73 73 6f 72  rEmpty(processor
5de0: 41 72 63 68 69 74 65 63 74 75 72 65 29 29 0d 0a  Architecture))..
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
5e00: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
5e10: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
5e20: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
5e30: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5e40: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
5e50: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
5e60: 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20  urePlatforms == 
5e70: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
5e80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5e90: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
5ea0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c         string pl
5eb0: 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20  atformName;.... 
5ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
5ed0: 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
5ee0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
5ef0: 54 72 79 47 65 74 56 61 6c 75 65 28 0d 0a 20 20  TryGetValue(..  
5f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f10: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
5f20: 68 69 74 65 63 74 75 72 65 2c 20 6f 75 74 20 70  hitecture, out p
5f30: 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20  latformName)).. 
5f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f60: 20 20 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72    return platfor
5f70: 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  mName;..        
5f80: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5f90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
5fa0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
5fb0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
5fc0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
6010: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6020: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
6030: 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  pts to load the 
6040: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
6050: 62 72 61 72 79 20 62 61 73 65 64 20 6f 6e 20 74  brary based on t
6060: 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
6070: 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72      /// director
6080: 79 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 20  y and processor 
6090: 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20  architecture... 
60a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
60b0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
60c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 72 65  param name="dire
60d0: 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f  ctory">..      /
60e0: 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65  // The base dire
60f0: 63 74 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75  ctory to use, nu
6100: 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28  ll for default (
6110: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
6120: 72 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ry of..      ///
6130: 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
6140: 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29  lication domain)
6150: 2e 20 20 54 68 69 73 20 64 69 72 65 63 74 6f 72  .  This director
6160: 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e  y should contain
6170: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
6180: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
6190: 65 63 74 75 72 65 20 73 70 65 63 69 66 69 63 20  ecture specific 
61a0: 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e  sub-directories.
61b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
61c0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
61d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
61e0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
61f0: 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re">..      /// 
6200: 54 68 65 20 72 65 71 75 65 73 74 65 64 20 70 72  The requested pr
6210: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
6220: 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64  ture, null for d
6230: 65 66 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20  efault (the..   
6240: 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72     /// processor
6250: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
6260: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
6270: 63 65 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c  cess).  This cal
6280: 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20  ler should..    
6290: 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77    /// almost alw
62a0: 61 79 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c  ays specify null
62b0: 20 66 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65   for this parame
62c0: 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ter...      /// 
62d0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
62e0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
62f0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
6300: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
6310: 65 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79  e as returned by
6320: 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 2d 4f 52   LoadLibrary -OR
6330: 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 0d 0a 20  - IntPtr.Zero.. 
6340: 20 20 20 20 20 2f 2f 2f 20 69 66 20 74 68 65 20       /// if the 
6350: 6c 6f 61 64 69 6e 67 20 66 61 69 6c 73 20 66 6f  loading fails fo
6360: 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a 20  r any reason... 
6370: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
6380: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
6390: 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  te static IntPtr
63a0: 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c   PreLoadSQLiteDl
63b0: 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  l(..          st
63c0: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d  ring directory,.
63d0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
63e0: 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  g processorArchi
63f0: 74 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20  tecture..       
6400: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
6410: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6420: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
6430: 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  If the specified
6440: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
6450: 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65  is null, use the
6460: 20 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20   default..      
6470: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e      //       (i.
6480: 65 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75  e. attempt to au
6490: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65  tomatically dete
64a0: 63 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20  ct it)...       
64b0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
64c0: 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d   if (directory =
64d0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
64e0: 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
64f0: 20 3d 20 47 65 74 42 61 73 65 44 69 72 65 63 74   = GetBaseDirect
6500: 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
6510: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6520: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65    // NOTE: If we
6530: 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79   failed to query
6540: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
6550: 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  ory, stop now...
6560: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
6570: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65          if (dire
6580: 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ctory == null)..
6590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
65a0: 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
65b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
65c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
65d0: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 6e 61 74  NOTE: If the nat
65e0: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
65f0: 72 79 20 65 78 69 73 74 73 20 69 6e 20 74 68 65  ry exists in the
6600: 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d   base directory.
6610: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
6620: 20 20 20 20 69 74 73 65 6c 66 2c 20 73 74 6f 70      itself, stop
6630: 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
6640: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
6650: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d  tring fileName =
6660: 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d   FixUpDllFileNam
6670: 65 28 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64  e(Path.Combine(d
6680: 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20  irectory,..     
6690: 20 20 20 20 20 20 20 20 20 53 51 4c 49 54 45 5f           SQLITE_
66a0: 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  DLL));....      
66b0: 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
66c0: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
66d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
66e0: 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
66f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
6700: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
6710: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65  NOTE: If the spe
6720: 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72  cified processor
6730: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69 73   architecture is
6740: 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a   null, use the..
6750: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6760: 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20     default...   
6770: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6780: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
6790: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
67a0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
67b0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
67c0: 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47  Architecture = G
67d0: 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  etProcessorArchi
67e0: 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20  tecture();....  
67f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6800: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
6810: 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71  f we failed to q
6820: 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73 73  uery the process
6830: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
6840: 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20   stop now...    
6850: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6860: 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
6870: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d  rArchitecture ==
6880: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
6890: 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
68a0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
68b0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
68c0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75       // NOTE: Bu
68d0: 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74  ild the full pat
68e0: 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20  h and file name 
68f0: 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
6900: 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20  QLite..         
6910: 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72   //       librar
6920: 79 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 63  y using the proc
6930: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
6940: 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  re name...      
6950: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6960: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78    fileName = Fix
6970: 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61  UpDllFileName(Pa
6980: 74 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68 2e  th.Combine(Path.
6990: 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72  Combine(director
69a0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
69b0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
69c0: 74 65 63 74 75 72 65 29 2c 20 53 51 4c 49 54 45  tecture), SQLITE
69d0: 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  _DLL));....     
69e0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
69f0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
6a00: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61 73  he file name bas
6a10: 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65 73  ed on the proces
6a20: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
6a30: 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20   name..         
6a40: 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64   // is not found
6a50: 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65 20  , try using the 
6a60: 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74 66  associated platf
6a70: 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  orm name...     
6a80: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
6a90: 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
6aa0: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
6ab0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
6ac0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
6ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
6ae0: 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f  NOTE: Attempt to
6af0: 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70   translate the p
6b00: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
6b10: 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20 20  cture to a..    
6b20: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6b30: 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65     platform name
6b40: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6b50: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
6b60: 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f     string platfo
6b70: 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61 74  rmName = GetPlat
6b80: 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73 73  formName(process
6b90: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29 3b  orArchitecture);
6ba0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
6bb0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6bc0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
6bd0: 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72 61  we failed to tra
6be0: 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74 66  nslate the platf
6bf0: 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20 6e  orm name, stop n
6c00: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow...           
6c10: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
6c20: 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f 72       if (platfor
6c30: 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  mName == null)..
6c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c50: 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
6c60: 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
6c70: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6c80: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
6c90: 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c  : Build the full
6ca0: 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e   path and file n
6cb0: 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
6cc0: 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ve SQLite..     
6cd0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6ce0: 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20    library using 
6cf0: 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  the platform nam
6d00: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
6d10: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6d20: 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
6d30: 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
6d40: 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74  Path.Combine(Pat
6d50: 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74  h.Combine(direct
6d60: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
6d70: 20 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d          platform
6d80: 4e 61 6d 65 29 2c 20 53 51 4c 49 54 45 5f 44 4c  Name), SQLITE_DL
6d90: 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  L));....        
6da0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6db0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
6dc0: 20 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65   If the file doe
6dd0: 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69  s not exist, ski
6de0: 70 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64  p trying to load
6df0: 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   it...          
6e00: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6e10: 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e        if (!File.
6e20: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
6e30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
6e40: 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
6e50: 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
6e60: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
6e70: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
6e80: 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
6e90: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
6ea0: 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
6eb0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
6ec0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
6ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ee0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
6ef0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
6f00: 53 68 6f 77 20 65 78 61 63 74 6c 79 20 77 68 65  Show exactly whe
6f10: 72 65 20 77 65 20 61 72 65 20 74 72 79 69 6e 67  re we are trying
6f20: 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
6f30: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ive..           
6f40: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6f50: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 66  SQLite library f
6f60: 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  rom...          
6f70: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
6f90: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74  ace.WriteLine(St
6fa0: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
6fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6fc0: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
6fd0: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
6fe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6ff0: 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
7000: 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
7010: 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20 6c  r is trying to l
7020: 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a  oad native " +..
7030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7040: 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69        "SQLite li
7050: 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e  brary \"{0}\"...
7060: 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20 2f  ", fileName)); /
7070: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
7080: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
7090: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
70a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
70b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
70c0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
70d0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
70e0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
70f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7100: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7110: 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
7120: 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
7130: 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54 68  ive library.  Th
7140: 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d 0a  is will either..
7150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7160: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 20         return a 
7170: 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f 64  valid native mod
7180: 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74 75  ule handle, retu
7190: 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d  rn IntPtr.Zero,.
71a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
71b0: 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f 77  /       or throw
71c0: 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 0d 0a   an exception...
71d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
71e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
71f0: 72 65 74 75 72 6e 20 4c 6f 61 64 4c 69 62 72 61  return LoadLibra
7200: 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20  ry(fileName);.. 
7210: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
7220: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
7230: 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
7240: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
7250: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
7260: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
7270: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
7280: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
7290: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
72a0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
72b0: 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a   TRACE_PRELOAD..
72c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
72d0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
72e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
72f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7300: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
7310: 4f 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61 62  OTE: First, grab
7320: 20 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32 20   the last Win32 
7330: 65 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a 20  error number... 
7340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7350: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
7360: 20 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74 45         int lastE
7370: 72 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e 47  rror = Marshal.G
7380: 65 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f 72  etLastWin32Error
7390: 28 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  (); /* throw */.
73a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
73b0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
73c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
73d0: 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77  TE: Show where w
73e0: 65 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64  e failed to load
73f0: 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
7400: 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  te..            
7410: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
7420: 69 62 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e  ibrary from alon
7430: 67 20 77 69 74 68 20 74 68 65 20 57 69 6e 33 32  g with the Win32
7440: 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d   error code and.
7450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7460: 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78 63 65     //       exce
7470: 70 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f  ption informatio
7480: 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n...            
7490: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
74a0: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
74b0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
74c0: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
74d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74e0: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
74f0: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
7500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7510: 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
7520: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
7530: 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 6e  failed to load n
7540: 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20 20  ative " +..     
7550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7560: 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79   "SQLite library
7570: 20 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c 61 73   \"{0}\" (getLas
7580: 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20 7b  tError = {1}): {
7590: 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  2}",..          
75a0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
75b0: 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72 2c  Name, lastError,
75c0: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
75d0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
75e0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
75f0: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
7600: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7610: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
7620: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
7630: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
7640: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
7650: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
7660: 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
7670: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
7680: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
7690: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
76a0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
76f0: 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
7700: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7710: 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
7720: 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
7730: 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
7740: 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65  work, the native
7750: 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
7760: 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20  y must..    //  
7770: 20 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63       be used bec
7780: 61 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73  ause it provides
7790: 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f   several workaro
77a0: 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d  unds to .NET Com
77b0: 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20  pact..    //    
77c0: 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d     Framework lim
77d0: 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61  itations importa
77e0: 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70  nt for proper op
77f0: 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63  eration of the c
7800: 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ore..    //     
7810: 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51    System.Data.SQ
7820: 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69  Lite functionali
7830: 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61  ty (e.g. being a
7840: 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20  ble to bind..   
7850: 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65   //       parame
7860: 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20  ters and handle 
7870: 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66  column values of
7880: 20 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64   types Int64 and
7890: 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f   Double)...    /
78a0: 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
78b0: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
78c0: 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
78d0: 65 2e 49 6e 74 65 72 6f 70 2e 30 39 30 2e 64 6c  e.Interop.090.dl
78e0: 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54  l";..#elif SQLIT
78f0: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
7900: 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
7910: 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74   Otherwise, if t
7920: 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
7930: 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e  te library is en
7940: 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a  abled, use it...
7950: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
7960: 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
7970: 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
7980: 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66  sqlite3";..#elif
7990: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
79a0: 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ..      //..    
79b0: 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
79c0: 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76  se, if the nativ
79d0: 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  e SQLite interop
79e0: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61   assembly is ena
79f0: 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20  bled,..    //   
7a00: 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20      use it...   
7a10: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
7a20: 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
7a30: 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c  QLITE_DLL = "SQL
7a40: 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22  ite.Interop.dll"
7a50: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f  ;..#else..    //
7a60: 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46  ..    // NOTE: F
7a70: 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74  inally, assume t
7a80: 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f  hat the mixed-mo
7a90: 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62  de assembly is b
7aa0: 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20  eing used...    
7ab0: 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
7ac0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51   const string SQ
7ad0: 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74  LITE_DLL = "Syst
7ae0: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
7af0: 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ll";..#endif....
7b00: 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74      // This sect
7b10: 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70  ion uses interop
7b20: 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f   calls that also
7b30: 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67   fetch text leng
7b40: 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63  th to optimize c
7b50: 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20  onversion...    
7b60: 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68  // When using th
7b70: 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20  e standard dll, 
7b80: 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74  we can replace t
7b90: 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20  hese calls with 
7ba0: 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61  normal sqlite ca
7bb0: 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20  lls and..    // 
7bc0: 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63  do unoptimized c
7bd0: 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65  onversions inste
7be0: 61 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20  ad afterwards.. 
7bf0: 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72     #region inter
7c00: 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e  op added textlen
7c10: 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  gth calls....#if
7c20: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
7c30: 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
7c40: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7c50: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7c60: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
7c70: 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  Ptr sqlite3_bind
7c80: 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f  _parameter_name_
7c90: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
7ca0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
7cb0: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
7cc0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
7cd0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
7ce0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
7cf0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
7d00: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
7d10: 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74  atabase_name_int
7d20: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
7d30: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
7d40: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
7d50: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
7d60: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
7d70: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
7d80: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
7d90: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
7da0: 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  base_name16_inte
7db0: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
7dc0: 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20   int index, out 
7dd0: 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
7de0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
7df0: 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
7e00: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
7e10: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
7e20: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
7e30: 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ype_interop(IntP
7e40: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
7e50: 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29  ex, out int len)
7e60: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
7e70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
7e80: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7e90: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
7ea0: 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
7eb0: 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e  mn_decltype16_in
7ec0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
7ed0: 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75  t, int index, ou
7ee0: 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  t int len);.... 
7ef0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
7f00: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
7f10: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
7f20: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
7f30: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
7f40: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
7f50: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
7f60: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
7f70: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
7f80: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
7f90: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
7fa0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
7fb0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
7fc0: 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28  _name16_interop(
7fd0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
7fe0: 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20   index, out int 
7ff0: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
8000: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
8010: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
8020: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8030: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
8040: 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
8050: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
8060: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
8070: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
8080: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
8090: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
80a0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
80b0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
80c0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
80d0: 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f  n_origin_name16_
80e0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
80f0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
8100: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
8110: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8120: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
8130: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8140: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
8150: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
8160: 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  able_name_intero
8170: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
8180: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
8190: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
81a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
81b0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    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 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
81f0: 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
8200: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
8210: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
8220: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
8230: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8240: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
8250: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
8260: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
8270: 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f  lumn_text_intero
8280: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
8290: 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e  nt index, out in
82a0: 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
82b0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
82c0: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
82d0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
82e0: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
82f0: 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f  3_column_text16_
8300: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
8310: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
8320: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
8330: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8340: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
8350: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8360: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
8370: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69  sqlite3_errmsg_i
8380: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
8390: 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d  , out int len);.
83a0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
83b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
83c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
83d0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
83e0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
83f0: 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72  e3_prepare_inter
8400: 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  op(IntPtr db, In
8410: 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
8420: 42 79 74 65 73 2c 20 6f 75 74 20 49 6e 74 50 74  Bytes, out IntPt
8430: 72 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50  r stmt, out IntP
8440: 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 6f 75  tr ptrRemain, ou
8450: 74 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d  t int nRemain);.
8460: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
8470: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8480: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8490: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
84a0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
84b0: 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
84c0: 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70  metadata_interop
84d0: 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
84e0: 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b  [] dbName, byte[
84f0: 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b  ] tblName, byte[
8500: 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20 49  ] colName, out I
8510: 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79 70  ntPtr ptrDataTyp
8520: 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74  e, out IntPtr pt
8530: 72 43 6f 6c 6c 53 65 71 2c 20 6f 75 74 20 69 6e  rCollSeq, out in
8540: 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20 69  t notNull, out i
8550: 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 6f  nt primaryKey, o
8560: 75 74 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20  ut int autoInc, 
8570: 6f 75 74 20 69 6e 74 20 64 74 4c 65 6e 2c 20 6f  out int dtLen, o
8580: 75 74 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a  ut int csLen);..
8590: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
85a0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
85b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
85c0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
85d0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
85e0: 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ext_interop(IntP
85f0: 74 72 20 70 2c 20 6f 75 74 20 69 6e 74 20 6c 65  tr p, out int le
8600: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
8610: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8620: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
8630: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
8640: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
8650: 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72  lue_text16_inter
8660: 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 6f 75 74  op(IntPtr p, out
8670: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
8680: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
8690: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
86a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
86b0: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
86c0: 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e  3_malloc_size_in
86d0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b  terop(IntPtr p);
86e0: 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
86f0: 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  LOG..    [DllImp
8700: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8710: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
8720: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
8730: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
8740: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f  ite3_config_log_
8750: 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64  interop();..#end
8760: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  if..#endif..// !
8770: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
8780: 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
8790: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  n....    // Thes
87a0: 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20  e functions add 
87b0: 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f  existing functio
87c0: 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66  nality on top of
87d0: 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75   SQLite and requ
87e0: 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66  ire a little eff
87f0: 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67  ort to..    // g
8800: 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20  et working when 
8810: 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61  using the standa
8820: 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  rd SQLite librar
8830: 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  y...    #region 
8840: 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66 75  interop added fu
8850: 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23  nctionality....#
8860: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
8870: 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ARD....    [DllI
8880: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8890: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
88a0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
88b0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69  ntPtr sqlite3_li
88c0: 62 76 65 72 73 69 6f 6e 5f 69 6e 74 65 72 6f 70  bversion_interop
88d0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  ();....    [DllI
88e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
88f0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
8900: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
8910: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73 6f  ntPtr sqlite3_so
8920: 75 72 63 65 69 64 5f 69 6e 74 65 72 6f 70 28 29  urceid_interop()
8930: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
8940: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
8950: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
8960: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
8970: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
8980: 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  ite3_close_inter
8990: 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
89a0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
89b0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
89c0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
89d0: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
89e0: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
89f0: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
8a00: 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  n_interop(IntPtr
8a10: 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e   db, byte[] strN
8a20: 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20  ame, int nArgs, 
8a30: 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74  int nType, IntPt
8a40: 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65  r pvUser, SQLite
8a50: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
8a60: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73  QLiteCallback fs
8a70: 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c  tep, SQLiteFinal
8a80: 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c  Callback ffinal,
8a90: 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71   int needCollSeq
8aa0: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
8ab0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
8ac0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
8ad0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
8ae0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
8af0: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69  lite3_finalize_i
8b00: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
8b10: 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  mt);....    [Dll
8b20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
8b30: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
8b40: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
8b50: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
8b60: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
8b70: 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e  inish_interop(In
8b80: 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
8b90: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8ba0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
8bb0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8bc0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
8bd0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
8be0: 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79  _open_interop(by
8bf0: 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d  te[] utf8Filenam
8c00: 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  e, SQLiteOpenFla
8c10: 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 6f 75  gsEnum flags, ou
8c20: 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  t IntPtr db);...
8c30: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
8c40: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
8c50: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8c60: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
8c70: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
8c80: 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28  _open16_interop(
8c90: 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
8ca0: 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
8cb0: 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
8cc0: 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  out IntPtr db);.
8cd0: 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
8ce0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
8cf0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8d00: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
8d10: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
8d20: 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70  e3_reset_interop
8d30: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
8d40: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
8d50: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
8d60: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8d70: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
8d80: 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e  lite3_changes_in
8d90: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
8da0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ;..#endif..// !S
8db0: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
8dc0: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
8dd0: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73  ....    // The s
8de0: 74 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c  tandard api call
8df0: 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20   equivalents of 
8e00: 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f  the above intero
8e10: 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65  p calls..    #re
8e20: 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65  gion standard ve
8e30: 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f  rsions of intero
8e40: 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23  p functions....#
8e50: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
8e60: 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  RD....#if !PLATF
8e70: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8e80: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
8e90: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
8ea0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8eb0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
8ec0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
8ed0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
8ee0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
8ef0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
8f00: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
8f10: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
8f20: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
8f30: 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b  lose(IntPtr db);
8f40: 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50  ....#if !INTEROP
8f50: 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23  _LEGACY_CLOSE..#
8f60: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
8f70: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8f80: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
8f90: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
8fa0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
8fb0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
8fc0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
8fd0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
8fe0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
8ff0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
9000: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9010: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
9020: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
9030: 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20  (IntPtr db); /* 
9040: 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64  3.7.14+ */..#end
9050: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
9060: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9070: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9080: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9090: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
90a0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
90b0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
90c0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
90d0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
90e0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
90f0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9100: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
9110: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
9120: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49  reate_function(I
9130: 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
9140: 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41   strName, int nA
9150: 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20  rgs, int nType, 
9160: 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53  IntPtr pvUser, S
9170: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
9180: 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  nc, SQLiteCallba
9190: 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65  ck fstep, SQLite
91a0: 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66  FinalCallback ff
91b0: 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  inal);....#if !P
91c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
91d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
91e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
91f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
9200: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9210: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9220: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
9230: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9240: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
9250: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
9260: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
9270: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
9280: 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50  e3_finalize(IntP
9290: 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
92a0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
92b0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
92c0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
92d0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
92e0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
92f0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9300: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9310: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9320: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9330: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9340: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
9350: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
9360: 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
9370: 69 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75  ish(IntPtr backu
9380: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
9390: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
93a0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
93b0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
93c0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
93d0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
93e0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
93f0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9400: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9410: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9420: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9430: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
9440: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
9450: 72 65 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d  reset(IntPtr stm
9460: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
9470: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9480: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9490: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
94a0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
94b0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
94c0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
94d0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
94e0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
94f0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9500: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9510: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
9520: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
9530: 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74  meter_name(IntPt
9540: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
9550: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
9560: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9570: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9580: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9590: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
95a0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
95b0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
95c0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
95d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
95e0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
95f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9600: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
9610: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61  qlite3_column_da
9620: 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50  tabase_name(IntP
9630: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
9640: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
9650: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
9660: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
9670: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9680: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
9690: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
96a0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
96b0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
96c0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
96d0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
96e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
96f0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
9700: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
9710: 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49  atabase_name16(I
9720: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
9730: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
9740: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
9750: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
9760: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
9770: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
9780: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
9790: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
97a0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
97b0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
97c0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
97d0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
97e0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
97f0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
9800: 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74  n_decltype(IntPt
9810: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
9820: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
9830: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9840: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9850: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9860: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9870: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9880: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9890: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
98a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
98b0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
98c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
98d0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
98e0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
98f0: 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72 20  cltype16(IntPtr 
9900: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
9910: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
9920: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9930: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9940: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9950: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9960: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9970: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9980: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9990: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
99a0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
99b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
99c0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
99d0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
99e0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
99f0: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
9a00: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9a10: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9a20: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9a30: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9a40: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9a50: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9a60: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
9a70: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
9a80: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
9a90: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
9aa0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
9ab0: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
9ac0: 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  umn_name16(IntPt
9ad0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
9ae0: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
9af0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9b00: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9b10: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9b20: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9b30: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9b40: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9b50: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9b60: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9b70: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9b80: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9b90: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
9ba0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
9bb0: 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  igin_name(IntPtr
9bc0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
9bd0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
9be0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9bf0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
9c00: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
9c10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9c20: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9c30: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
9c40: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
9c50: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9c60: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
9c70: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9c80: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
9c90: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69  lite3_column_ori
9ca0: 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74  gin_name16(IntPt
9cb0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
9cc0: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
9cd0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9ce0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
9cf0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
9d00: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
9d10: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
9d20: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
9d30: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
9d40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
9d50: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
9d60: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
9d70: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
9d80: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61  qlite3_column_ta
9d90: 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ble_name(IntPtr 
9da0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
9db0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
9dc0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9dd0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9de0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9df0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9e00: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9e10: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9e20: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9e30: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9e40: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9e50: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9e60: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
9e70: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
9e80: 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  e_name16(IntPtr 
9e90: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
9ea0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
9eb0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
9ec0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
9ed0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
9ee0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
9ef0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
9f00: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
9f10: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
9f20: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
9f30: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
9f40: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9f50: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
9f60: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
9f70: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
9f80: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
9f90: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
9fa0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9fb0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
9fc0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
9fd0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
9fe0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
9ff0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a000: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a010: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a020: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a030: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
a040: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
a050: 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74  umn_text16(IntPt
a060: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
a070: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
a080: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a090: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a0a0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a0b0: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a0c0: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a0d0: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a0e0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a0f0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a100: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
a110: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a120: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
a130: 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e  qlite3_errmsg(In
a140: 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
a150: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
a160: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
a170: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a180: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
a190: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
a1a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
a1b0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
a1c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a1d0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
a1e0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
a1f0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
a200: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
a210: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e  lite3_prepare(In
a220: 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
a230: 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
a240: 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 73 74 6d  , out IntPtr stm
a250: 74 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 70 74  t, out IntPtr pt
a260: 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66  rRemain);....#if
a270: 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d   USE_PREPARE_V2.
a280: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
a290: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
a2a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
a2b0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
a2c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
a2d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
a2e0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
a2f0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
a300: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
a310: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
a320: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
a330: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
a340: 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
a350: 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20  e_v2(IntPtr db, 
a360: 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74  IntPtr pSql, int
a370: 20 6e 42 79 74 65 73 2c 20 6f 75 74 20 49 6e 74   nBytes, out Int
a380: 50 74 72 20 73 74 6d 74 2c 20 6f 75 74 20 49 6e  Ptr stmt, out In
a390: 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b  tPtr ptrRemain);
a3a0: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
a3b0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
a3c0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
a3d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
a3e0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
a3f0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
a400: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
a410: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
a420: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
a430: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
a440: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
a450: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
a460: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
a470: 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d  ite3_table_colum
a480: 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74  n_metadata(IntPt
a490: 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
a4a0: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
a4b0: 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
a4c0: 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  ame, out IntPtr 
a4d0: 70 74 72 44 61 74 61 54 79 70 65 2c 20 6f 75 74  ptrDataType, out
a4e0: 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53   IntPtr ptrCollS
a4f0: 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e 6f 74 4e  eq, out int notN
a500: 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20 70 72 69  ull, out int pri
a510: 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20 69 6e 74  maryKey, out int
a520: 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69   autoInc);....#i
a530: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
a540: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
a550: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
a560: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
a570: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
a580: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
a590: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
a5a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
a5b0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
a5c0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
a5d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
a5e0: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61  ntPtr sqlite3_va
a5f0: 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20  lue_text(IntPtr 
a600: 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
a610: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
a620: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
a630: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
a640: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
a650: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
a660: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
a670: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
a680: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a690: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
a6a0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
a6b0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
a6c0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
a6d0: 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t16(IntPtr p);..
a6e0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f  ..#endif..    //
a6f0: 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
a700: 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
a710: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
a720: 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  se functions are
a730: 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65   custom and have
a740: 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73   no equivalent s
a750: 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20  tandard library 
a760: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20  method...    // 
a770: 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20  All of them are 
a780: 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22 20  "nice to haves" 
a790: 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72  and not necessar
a7a0: 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76  ily "need to hav
a7b0: 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f  es"...    #regio
a7c0: 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  n no equivalent 
a7d0: 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d  standard method.
a7e0: 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
a7f0: 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
a800: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
a810: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
a820: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
a830: 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
a840: 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65  3_context_collse
a850: 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  q_interop(IntPtr
a860: 20 63 6f 6e 74 65 78 74 2c 20 6f 75 74 20 69 6e   context, out in
a870: 74 20 74 79 70 65 2c 20 6f 75 74 20 69 6e 74 20  t type, out int 
a880: 65 6e 63 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  enc, out int len
a890: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
a8a0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
a8b0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
a8c0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
a8d0: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
a8e0: 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e  t_collcompare_in
a8f0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e  terop(IntPtr con
a900: 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c  text, byte[] p1,
a910: 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65   int p1len, byte
a920: 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e  [] p2, int p2len
a930: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
a940: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
a950: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
a960: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
a970: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
a980: 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77  lite3_cursor_row
a990: 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  id_interop(IntPt
a9a0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73  r stmt, int curs
a9b0: 6f 72 2c 20 6f 75 74 20 6c 6f 6e 67 20 72 6f 77  or, out long row
a9c0: 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  id);....    [Dll
a9d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
a9e0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
a9f0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
aa00: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
aa10: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
aa20: 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f  lumn_info_intero
aa30: 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
aa40: 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74  e[] catalog, byt
aa50: 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62  e[] IndexName, b
aa60: 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65  yte[] ColumnName
aa70: 2c 20 6f 75 74 20 69 6e 74 20 73 6f 72 74 4f 72  , out int sortOr
aa80: 64 65 72 2c 20 6f 75 74 20 69 6e 74 20 6f 6e 45  der, out int onE
aa90: 72 72 6f 72 2c 20 6f 75 74 20 49 6e 74 50 74 72  rror, out IntPtr
aaa0: 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 6f 75 74 20   Collation, out 
aab0: 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d  int colllen);...
aac0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
aad0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
aae0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
aaf0: 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
ab00: 6c 69 74 65 33 5f 72 65 73 65 74 61 6c 6c 5f 69  lite3_resetall_i
ab10: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
ab20: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
ab30: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ab40: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
ab50: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
ab60: 74 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f  t sqlite3_table_
ab70: 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49  cursor_interop(I
ab80: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
ab90: 64 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f  db, int tableRoo
aba0: 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69  tPage);....#endi
abb0: 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54  f..// !SQLITE_ST
abc0: 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65  ANDARD....    #e
abd0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
abe0: 2f 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49 20  // Standard API 
abf0: 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72  calls global acr
ac00: 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54  oss versions.  T
ac10: 68 65 72 65 20 61 72 65 20 61 20 66 65 77 20 69  here are a few i
ac20: 6e 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65  nstances of inte
ac30: 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f  rop calls..    /
ac40: 2f 20 73 63 61 74 74 65 72 65 64 20 69 6e 20 68  / scattered in h
ac50: 65 72 65 2c 20 62 75 74 20 74 68 65 79 20 61 72  ere, but they ar
ac60: 65 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68  e only active wh
ac70: 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  en PLATFORM_COMP
ac80: 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20  ACTFRAMEWORK is 
ac90: 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23  declared...    #
aca0: 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20  region standard 
acb0: 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73  sqlite api calls
acc0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
acd0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
ace0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
acf0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
ad00: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
ad10: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ad20: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
ad30: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
ad40: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
ad50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
ad60: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
ad70: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
ad80: 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c  de sqlite3_enabl
ad90: 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  e_load_extension
ada0: 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
adb0: 72 20 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65  r db, int enable
adc0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
add0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
ade0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
adf0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
ae00: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
ae10: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
ae20: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ae30: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
ae40: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ae50: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
ae60: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
ae70: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
ae80: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c  orCode sqlite3_l
ae90: 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a  oad_extension(..
aea0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64          IntPtr d
aeb0: 62 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61  b, byte[] fileNa
aec0: 6d 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e  me, byte[] procN
aed0: 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ame, ref IntPtr 
aee0: 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20  pError);....#if 
aef0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
af00: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
af10: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
af20: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
af30: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
af40: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
af50: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
af60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
af70: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
af80: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
af90: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
afa0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
afb0: 69 74 65 33 5f 6f 76 65 72 6c 6f 61 64 5f 66 75  ite3_overload_fu
afc0: 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62  nction(IntPtr db
afd0: 2c 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 20  , IntPtr zName, 
afe0: 69 6e 74 20 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23  int nArgs);....#
aff0: 69 66 20 57 49 4e 44 4f 57 53 0d 0a 23 69 66 20  if WINDOWS..#if 
b000: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
b010: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
b020: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b030: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
b040: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
b050: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
b060: 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
b070: 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
b080: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
b090: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b0a0: 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
b0b0: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
b0c0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a  #endif..    //..
b0d0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
b0e0: 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f   "sqlite3_win32_
b0f0: 73 65 74 5f 64 69 72 65 63 74 6f 72 79 22 20 53  set_directory" S
b100: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
b110: 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
b120: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
b130: 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
b140: 69 6e 64 6f 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d  indows...    //.
b150: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b160: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
b170: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
b180: 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69  te3_win32_set_di
b190: 72 65 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70  rectory(uint typ
b1a0: 65 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29  e, string value)
b1b0: 3b 0d 0a 0d 0a 23 69 66 20 21 44 45 42 55 47 20  ;....#if !DEBUG 
b1c0: 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 75 6c 64 20  // NOTE: Should 
b1d0: 62 65 20 22 57 49 4e 33 32 48 45 41 50 20 26 26  be "WIN32HEAP &&
b1e0: 20 21 4d 45 4d 44 45 42 55 47 22 0d 0a 23 69 66   !MEMDEBUG"..#if
b1f0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
b200: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b210: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
b220: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
b230: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
b240: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
b250: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
b260: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b270: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
b280: 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  f..    //..    /
b290: 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c  / NOTE: The "sql
b2a0: 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74  ite3_win32_reset
b2b0: 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f  _heap" SQLite co
b2c0: 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74  re library funct
b2d0: 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20  ion is..    //  
b2e0: 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72       only suppor
b2f0: 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77  ted on Windows w
b300: 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61  hen the Win32 na
b310: 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69  tive allocator i
b320: 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20  s in..    //    
b330: 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20     use (i.e. by 
b340: 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c  default, in "Rel
b350: 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20  ease" builds of 
b360: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
b370: 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  te..    //      
b380: 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61   only).  By defa
b390: 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20  ult, in "Debug" 
b3a0: 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d  builds of System
b3b0: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68  .Data.SQLite, th
b3c0: 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
b3d0: 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74  MEMDEBUG allocat
b3e0: 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20  or is used...   
b3f0: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
b400: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b410: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
b420: 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65  sqlite3_win32_re
b430: 73 65 74 5f 68 65 61 70 28 29 3b 0d 0a 0d 0a 23  set_heap();....#
b440: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
b450: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
b460: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
b470: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
b480: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
b490: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
b4a0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
b4b0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
b4c0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
b4d0: 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  dif..    //..   
b4e0: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73   // NOTE: The "s
b4f0: 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d  qlite3_win32_com
b500: 70 61 63 74 5f 68 65 61 70 22 20 53 51 4c 69 74  pact_heap" SQLit
b510: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66  e core library f
b520: 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20  unction is..    
b530: 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75  //       only su
b540: 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f  pported on Windo
b550: 77 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33  ws when the Win3
b560: 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74  2 native allocat
b570: 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f  or is in..    //
b580: 20 20 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e         use (i.e.
b590: 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   by default, in 
b5a0: 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73  "Release" builds
b5b0: 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e   of System.Data.
b5c0: 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20  SQLite..    //  
b5d0: 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20       only).  By 
b5e0: 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62  default, in "Deb
b5f0: 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  ug" builds of Sy
b600: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
b610: 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  , the..    //   
b620: 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c      MEMDEBUG all
b630: 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d  ocator is used..
b640: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
b650: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
b660: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
b670: 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
b680: 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 28 72  2_compact_heap(r
b690: 65 66 20 75 69 6e 74 20 6c 61 72 67 65 73 74 29  ef uint largest)
b6a0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  ;..#endif..#endi
b6b0: 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
b6c0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b6d0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
b6e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
b6f0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
b700: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
b710: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
b720: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
b730: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b740: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
b750: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b760: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
b770: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28  ite3_libversion(
b780: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
b790: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
b7a0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
b7b0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
b7c0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
b7d0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
b7e0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
b7f0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
b800: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b810: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
b820: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b830: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
b840: 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75  e3_libversion_nu
b850: 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  mber();....#if !
b860: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b870: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
b880: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b890: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
b8a0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
b8b0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
b8c0: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
b8d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
b8e0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
b8f0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b900: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b910: 74 72 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63  tr sqlite3_sourc
b920: 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  eid();....#if !P
b930: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b940: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
b950: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b960: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
b970: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
b980: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
b990: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
b9a0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
b9b0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
b9c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b9d0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
b9e0: 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  r sqlite3_malloc
b9f0: 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20  (int n);....#if 
ba00: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
ba10: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
ba20: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
ba30: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
ba40: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
ba50: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
ba60: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
ba70: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ba80: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
ba90: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
baa0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
bab0: 50 74 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c  Ptr sqlite3_real
bac0: 6c 6f 63 28 49 6e 74 50 74 72 20 70 2c 20 69 6e  loc(IntPtr p, in
bad0: 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  t n);....#if !PL
bae0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
baf0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
bb00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bb10: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
bb20: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
bb30: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
bb40: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
bb50: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
bb60: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
bb70: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bb80: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
bb90: 71 6c 69 74 65 33 5f 66 72 65 65 28 49 6e 74 50  qlite3_free(IntP
bba0: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
bbb0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
bbc0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
bbd0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
bbe0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
bbf0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
bc00: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
bc10: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
bc20: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
bc30: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
bc40: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
bc50: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
bc60: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
bc70: 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b  e3_open_v2(byte[
bc80: 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
bc90: 6f 75 74 20 49 6e 74 50 74 72 20 64 62 2c 20 53  out IntPtr db, S
bca0: 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e  QLiteOpenFlagsEn
bcb0: 75 6d 20 66 6c 61 67 73 2c 20 49 6e 74 50 74 72  um flags, IntPtr
bcc0: 20 76 66 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50   vfs);....#if !P
bcd0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
bce0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
bcf0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
bd00: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
bd10: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
bd20: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
bd30: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
bd40: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
bd50: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
bd60: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
bd70: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
bd80: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
bd90: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
bda0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bdb0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
bdc0: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28   sqlite3_open16(
bdd0: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
bde0: 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b   out IntPtr db);
bdf0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
be00: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
be10: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
be20: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
be30: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
be40: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
be50: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
be60: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
be70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
be80: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
be90: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
bea0: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
beb0: 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74 50  3_interrupt(IntP
bec0: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
bed0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
bee0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
bef0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
bf00: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
bf10: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
bf20: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
bf30: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
bf40: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
bf50: 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73  long sqlite3_las
bf60: 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49  t_insert_rowid(I
bf70: 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64  ntPtr db);..#end
bf80: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
bf90: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
bfa0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
bfb0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
bfc0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
bfd0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
bfe0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
bff0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
c000: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
c010: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
c020: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
c030: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
c040: 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50 74  e3_changes(IntPt
c050: 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
c060: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c070: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c080: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c090: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c0a0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c0b0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c0c0: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
c0d0: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c   static extern l
c0e0: 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ong sqlite3_memo
c0f0: 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e 64  ry_used();..#end
c100: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
c110: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
c120: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
c130: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
c140: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c150: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
c160: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
c170: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c180: 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
c190: 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68  sqlite3_memory_h
c1a0: 69 67 68 77 61 74 65 72 28 69 6e 74 20 72 65 73  ighwater(int res
c1b0: 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69 66  etFlag);..#endif
c1c0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c1d0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c1e0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c1f0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c200: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c210: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c220: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
c230: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
c240: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
c250: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
c260: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
c270: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
c280: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68 75  Code sqlite3_shu
c290: 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20  tdown();....#if 
c2a0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c2b0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c2c0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c2d0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
c2e0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
c2f0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
c300: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
c310: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c320: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
c330: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
c340: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
c350: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
c360: 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75  ite3_busy_timeou
c370: 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74  t(IntPtr db, int
c380: 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   ms);....#if !PL
c390: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
c3a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
c3b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c3c0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
c3d0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
c3e0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
c3f0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
c400: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c410: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
c420: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c430: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
c440: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
c450: 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74 50  3_bind_blob(IntP
c460: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
c470: 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75 65  ex, Byte[] value
c480: 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74  , int nSize, Int
c490: 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29 3b  Ptr nTransient);
c4a0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c4b0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c4c0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
c4d0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
c4e0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c4f0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
c500: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
c510: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c520: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
c530: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
c540: 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e 74  _bind_double(Int
c550: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
c560: 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75  dex, double valu
c570: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
c580: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
c590: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
c5a0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c5b0: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
c5c0: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
c5d0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
c5e0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
c5f0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c600: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
c610: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
c620: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
c630: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
c640: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
c650: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
c660: 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c  t index, int val
c670: 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a  ue);....    //..
c680: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
c690: 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61  s really just ca
c6a0: 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  lls "sqlite3_bin
c6b0: 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c  d_int"; however,
c6c0: 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20   it has the..   
c6d0: 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63   //       correc
c6e0: 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72 65  t type signature
c6f0: 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64   for an unsigned
c700: 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67 65   (32-bit) intege
c710: 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20  r...    //..#if 
c720: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c730: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
c740: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c750: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
c760: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
c770: 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43  d_int", CallingC
c780: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
c790: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
c7a0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
c7b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c7c0: 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
c7d0: 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62  int = "sqlite3_b
c7e0: 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64  ind_int")]..#end
c7f0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
c800: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
c810: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
c820: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74  qlite3_bind_uint
c830: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
c840: 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76 61  t index, uint va
c850: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
c860: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
c870: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
c880: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c890: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
c8a0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
c8b0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
c8c0: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
c8d0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
c8e0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
c8f0: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
c900: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
c910: 74 20 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61  t index, long va
c920: 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lue);..#endif...
c930: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
c940: 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c  NOTE: This reall
c950: 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71  y just calls "sq
c960: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
c970: 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68  "; however, it h
c980: 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20  as the..    //  
c990: 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70       correct typ
c9a0: 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20  e signature for 
c9b0: 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  an unsigned long
c9c0: 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67 65   (64-bit) intege
c9d0: 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20  r...    //..#if 
c9e0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
c9f0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
ca00: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
ca10: 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
ca20: 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
ca30: 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e  d_int64", Callin
ca40: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
ca50: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
ca60: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
ca70: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ca80: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
ca90: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
caa0: 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73  _uint64(IntPtr s
cab0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
cac0: 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23  ulong value);..#
cad0: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
cae0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
caf0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
cb00: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cb10: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
cb20: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
cb30: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
cb40: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
cb50: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cb60: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
cb70: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
cb80: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
cb90: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
cba0: 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50  3_bind_null(IntP
cbb0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
cbc0: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
cbd0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
cbe0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
cbf0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cc00: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
cc10: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
cc20: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
cc30: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
cc40: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cc50: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
cc60: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
cc70: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
cc80: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
cc90: 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74  _bind_text(IntPt
cca0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
ccb0: 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  x, byte[] value,
ccc0: 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74   int nlen, IntPt
ccd0: 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
cce0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
ccf0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
cd00: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
cd10: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
cd20: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
cd30: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
cd40: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
cd50: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
cd60: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
cd70: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
cd80: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
cd90: 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  rn int sqlite3_b
cda0: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f  ind_parameter_co
cdb0: 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  unt(IntPtr stmt)
cdc0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
cdd0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
cde0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
cdf0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
ce00: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ce10: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
ce20: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ce30: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
ce40: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ce50: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
ce60: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
ce70: 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
ce80: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
ce90: 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74  _index(IntPtr st
cea0: 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61  mt, byte[] strNa
ceb0: 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
cec0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
ced0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
cee0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cef0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
cf00: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
cf10: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
cf20: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
cf30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cf40: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
cf50: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
cf60: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
cf70: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e  ite3_column_coun
cf80: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  t(IntPtr stmt);.
cf90: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
cfa0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
cfb0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
cfc0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
cfd0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
cfe0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
cff0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
d000: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
d010: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d020: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
d030: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
d040: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
d050: 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70  ode sqlite3_step
d060: 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a  (IntPtr stmt);..
d070: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
d080: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
d090: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d0a0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
d0b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
d0c0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d0d0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
d0e0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
d0f0: 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71  extern double sq
d100: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75  lite3_column_dou
d110: 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ble(IntPtr stmt,
d120: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65   int index);..#e
d130: 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
d140: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
d150: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
d160: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d170: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
d180: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
d190: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
d1a0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
d1b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d1c0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
d1d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
d1e0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
d1f0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28  ite3_column_int(
d200: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
d210: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
d220: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
d230: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
d240: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d250: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
d260: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
d270: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
d280: 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
d290: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d2a0: 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f   long sqlite3_co
d2b0: 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74  lumn_int64(IntPt
d2c0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
d2d0: 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  x);..#endif....#
d2e0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
d2f0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
d300: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d310: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
d320: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
d330: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
d340: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
d350: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d360: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
d370: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
d380: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d390: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
d3a0: 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74  olumn_blob(IntPt
d3b0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
d3c0: 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
d3d0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
d3e0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
d3f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d400: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
d410: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
d420: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
d430: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
d440: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
d450: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
d460: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d470: 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
d480: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
d490: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
d4a0: 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
d4b0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
d4c0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
d4d0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d4e0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
d4f0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
d500: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
d510: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
d520: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d530: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
d540: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
d550: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
d560: 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
d570: 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20  _bytes16(IntPtr 
d580: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
d590: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
d5a0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d5b0: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
d5c0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
d5d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d5e0: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
d5f0: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
d600: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
d610: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
d620: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
d630: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d640: 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69  xtern TypeAffini
d650: 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  ty sqlite3_colum
d660: 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73 74  n_type(IntPtr st
d670: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
d680: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
d690: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
d6a0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
d6b0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
d6c0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
d6d0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
d6e0: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
d6f0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
d700: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
d710: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
d720: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
d730: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
d740: 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
d750: 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74  te_collation(Int
d760: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
d770: 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70  trName, int nTyp
d780: 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  e, IntPtr pvUser
d790: 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f  , SQLiteCollatio
d7a0: 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20  n func);....#if 
d7b0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
d7c0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
d7d0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
d7e0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
d7f0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
d800: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
d810: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
d820: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d830: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
d840: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d850: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
d860: 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61   sqlite3_aggrega
d870: 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  te_count(IntPtr 
d880: 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
d890: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
d8a0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
d8b0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
d8c0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
d8d0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
d8e0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
d8f0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
d900: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d910: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
d920: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
d930: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
d940: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
d950: 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70  ue_blob(IntPtr p
d960: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
d970: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
d980: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
d990: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
d9a0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
d9b0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
d9c0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
d9d0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
d9e0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
d9f0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
da00: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
da10: 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
da20: 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49  e3_value_bytes(I
da30: 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
da40: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
da50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
da60: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
da70: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
da80: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
da90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
daa0: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
dab0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
dac0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
dad0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
dae0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
daf0: 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
db00: 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 70  bytes16(IntPtr p
db10: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
db20: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
db30: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
db40: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
db50: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
db60: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
db70: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
db80: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
db90: 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c  tic extern doubl
dba0: 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  e sqlite3_value_
dbb0: 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29  double(IntPtr p)
dbc0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
dbd0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
dbe0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
dbf0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
dc00: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
dc10: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
dc20: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
dc30: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
dc40: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
dc50: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
dc60: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
dc70: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
dc80: 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
dc90: 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  int(IntPtr p);..
dca0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
dcb0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
dcc0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
dcd0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
dce0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
dcf0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
dd00: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
dd10: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
dd20: 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
dd30: 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28  te3_value_int64(
dd40: 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64  IntPtr p);..#end
dd50: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
dd60: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
dd70: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
dd80: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
dd90: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
dda0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
ddb0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
ddc0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
ddd0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
dde0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
ddf0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
de00: 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e  extern TypeAffin
de10: 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ity sqlite3_valu
de20: 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70 29  e_type(IntPtr p)
de30: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
de40: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
de50: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
de60: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
de70: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
de80: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
de90: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
dea0: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
deb0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
dec0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
ded0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
dee0: 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
def0: 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 49  e3_result_blob(I
df00: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
df10: 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74  yte[] value, int
df20: 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 70   nSize, IntPtr p
df30: 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
df40: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
df50: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
df60: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
df70: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
df80: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
df90: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
dfa0: 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
dfb0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
dfc0: 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
dfd0: 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49  _result_double(I
dfe0: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64  ntPtr context, d
dff0: 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
e000: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
e010: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
e020: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
e030: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e040: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
e050: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
e060: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
e070: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
e080: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e090: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
e0a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e0b0: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
e0c0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
e0d0: 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ror(IntPtr conte
e0e0: 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72  xt, byte[] strEr
e0f0: 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d  r, int nLen);...
e100: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
e110: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e120: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e130: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
e140: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
e150: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e160: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
e170: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e180: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
e190: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
e1a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
e1b0: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
e1c0: 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65  esult_error_code
e1d0: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
e1e0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
e1f0: 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
e200: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
e210: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
e220: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e230: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
e240: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
e250: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
e260: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
e270: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e280: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
e290: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
e2a0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
e2b0: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
e2c0: 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e  _error_toobig(In
e2d0: 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
e2e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e2f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e300: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e310: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
e320: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
e330: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e340: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
e350: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
e360: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e370: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
e380: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e390: 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
e3a0: 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d  result_error_nom
e3b0: 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  em(IntPtr contex
e3c0: 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
e3d0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
e3e0: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
e3f0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e400: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
e410: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
e420: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
e430: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
e440: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e450: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
e460: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e470: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
e480: 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75  ite3_result_valu
e490: 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
e4a0: 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b  , IntPtr value);
e4b0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
e4c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
e4d0: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
e4e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
e4f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e500: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
e510: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
e520: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
e530: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
e540: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
e550: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
e560: 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
e570: 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f  3_result_zeroblo
e580: 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
e590: 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
e5a0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
e5b0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
e5c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e5d0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
e5e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
e5f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
e600: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
e610: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e620: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
e630: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
e640: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
e650: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
e660: 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72 20  sult_int(IntPtr 
e670: 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c  context, int val
e680: 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
e690: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e6a0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e6b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e6c0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e6d0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e6e0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e6f0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
e700: 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
e710: 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
e720: 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f  _int64(IntPtr co
e730: 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75  ntext, long valu
e740: 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
e750: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
e760: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
e770: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e780: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
e790: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
e7a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
e7b0: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
e7c0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
e7d0: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
e7e0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
e7f0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
e800: 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
e810: 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20  ult_null(IntPtr 
e820: 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
e830: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
e840: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
e850: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e860: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
e870: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
e880: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
e890: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
e8a0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e8b0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
e8c0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
e8d0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
e8e0: 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
e8f0: 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  t_text(IntPtr co
e900: 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61  ntext, byte[] va
e910: 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49  lue, int nLen, I
e920: 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
e930: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
e940: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
e950: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
e960: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
e970: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e980: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
e990: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
e9a0: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
e9b0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
e9c0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
e9d0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
e9e0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
e9f0: 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
ea00: 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63  context(IntPtr c
ea10: 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74  ontext, int nByt
ea20: 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  es);....#if !PLA
ea30: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
ea40: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
ea50: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ea60: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
ea70: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
ea80: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
ea90: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
eaa0: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
eab0: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
eac0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
ead0: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
eae0: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
eaf0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
eb00: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
eb10: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
eb20: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
eb30: 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
eb40: 69 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e  int index, strin
eb50: 67 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65  g value, int nle
eb60: 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
eb70: 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
eb80: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
eb90: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
eba0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ebb0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
ebc0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
ebd0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
ebe0: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
ebf0: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
ec00: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
ec10: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
ec20: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
ec30: 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
ec40: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
ec50: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
ec60: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
ec70: 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74  sult_error16(Int
ec80: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
ec90: 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  ing strName, int
eca0: 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
ecb0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ecc0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
ecd0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
ece0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
ecf0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
ed00: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
ed10: 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
ed20: 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
ed30: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
ed40: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
ed50: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
ed60: 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
ed70: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
ed80: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
ed90: 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
eda0: 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74  esult_text16(Int
edb0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
edc0: 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  ing strName, int
edd0: 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nLen, IntPtr pv
ede0: 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
edf0: 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 0d  f INTEROP_CODEC.
ee00: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ee10: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ee20: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ee30: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
ee40: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ee50: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ee60: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
ee70: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ee80: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
ee90: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
eea0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
eeb0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
eec0: 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e  e sqlite3_key(In
eed0: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
eee0: 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
eef0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
ef00: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ef10: 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
ef20: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
ef30: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ef40: 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
ef50: 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
ef60: 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
ef70: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
ef80: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
ef90: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
efa0: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
efb0: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
efc0: 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62  key(IntPtr db, b
efd0: 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b  yte[] key, int k
efe0: 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d  eylen);..#endif.
eff0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f000: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f010: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f020: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f030: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f040: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f050: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
f060: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
f070: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f080: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
f090: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f0a0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
f0b0: 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
f0c0: 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  r(IntPtr db, SQL
f0d0: 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c  iteAuthorizerCal
f0e0: 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
f0f0: 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
f100: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
f110: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
f120: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
f130: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
f140: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
f150: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
f160: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
f170: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f180: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
f190: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
f1a0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f1b0: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75  IntPtr sqlite3_u
f1c0: 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74  pdate_hook(IntPt
f1d0: 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61  r db, SQLiteUpda
f1e0: 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
f1f0: 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
f200: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
f210: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
f220: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
f230: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
f240: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f250: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
f260: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
f270: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
f280: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
f290: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
f2a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
f2b0: 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
f2c0: 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28  te3_commit_hook(
f2d0: 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
f2e0: 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20  eCommitCallback 
f2f0: 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
f300: 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
f310: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f320: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
f330: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f340: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
f350: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
f360: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f370: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
f380: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f390: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
f3a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f3b0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
f3c0: 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49   sqlite3_trace(I
f3d0: 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
f3e0: 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75  TraceCallback fu
f3f0: 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
f400: 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69  r);....    // Si
f410: 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  nce sqlite3_conf
f420: 69 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  ig() takes a var
f430: 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
f440: 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
f450: 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
f460: 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
f470: 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
f480: 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61 6e  alls that we wan
f490: 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21  t to use...#if !
f4a0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f4b0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f4c0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f4d0: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
f4e0: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
f4f0: 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
f500: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
f510: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
f520: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
f530: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f540: 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
f550: 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
f560: 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
f570: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
f580: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
f590: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
f5a0: 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51  3_config_none(SQ
f5b0: 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
f5c0: 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  m op);....#if !P
f5d0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
f5e0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
f5f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f600: 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
f610: 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
f620: 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
f630: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
f640: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
f650: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
f660: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
f670: 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
f680: 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
f690: 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
f6a0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f6b0: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
f6c0: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
f6d0: 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69  _config_int(SQLi
f6e0: 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
f6f0: 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  op, int value);.
f700: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f710: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f720: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f730: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
f740: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
f750: 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
f760: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
f770: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
f780: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
f790: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
f7a0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
f7b0: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
f7c0: 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
f7d0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
f7e0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f7f0: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
f800: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
f810: 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66 69  _log(SQLiteConfi
f820: 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c  gOpsEnum op, SQL
f830: 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66  iteLogCallback f
f840: 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
f850: 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
f860: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
f870: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
f880: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
f890: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
f8a0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
f8b0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
f8c0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
f8d0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
f8e0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
f8f0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
f900: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
f910: 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b  sqlite3_rollback
f920: 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
f930: 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43   SQLiteRollbackC
f940: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
f950: 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
f960: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
f970: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
f980: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f990: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
f9a0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
f9b0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f9c0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
f9d0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f9e0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
f9f0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
fa00: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
fa10: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
fa20: 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74  _db_handle(IntPt
fa30: 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
fa40: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
fa50: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
fa60: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
fa70: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
fa80: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
fa90: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
faa0: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
fab0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
fac0: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
fad0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
fae0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
faf0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
fb00: 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f  ite3_db_release_
fb10: 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62  memory(IntPtr db
fb20: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
fb30: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
fb40: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
fb50: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
fb60: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
fb70: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
fb80: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
fb90: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
fba0: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fbb0: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
fbc0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
fbd0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
fbe0: 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
fbf0: 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
fc00: 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a  Ptr dbName);....
fc10: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
fc20: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
fc30: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
fc40: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
fc50: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
fc60: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
fc70: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
fc80: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
fc90: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
fca0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
fcb0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
fcc0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
fcd0: 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72  next_stmt(IntPtr
fce0: 20 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74   db, IntPtr stmt
fcf0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
fd00: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
fd10: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
fd20: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
fd30: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
fd40: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
fd50: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
fd60: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
fd70: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
fd80: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
fd90: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
fda0: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
fdb0: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
fdc0: 78 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62  xec(IntPtr db, b
fdd0: 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e  yte[] strSql, In
fde0: 74 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c  tPtr pvCallback,
fdf0: 20 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c   IntPtr pvParam,
fe00: 20 6f 75 74 20 49 6e 74 50 74 72 20 65 72 72 4d   out IntPtr errM
fe10: 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  sg);....#if !PLA
fe20: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
fe30: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
fe40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
fe50: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
fe60: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
fe70: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
fe80: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
fe90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
fea0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
feb0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
fec0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
fed0: 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  ite3_release_mem
fee0: 6f 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b  ory(int nBytes);
fef0: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
ff00: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
ff10: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
ff20: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
ff30: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ff40: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
ff50: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
ff60: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
ff70: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ff80: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
ff90: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
ffa0: 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
ffb0: 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28  _get_autocommit(
ffc0: 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
ffd0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
ffe0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
fff0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10000 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
10010 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
10020 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
10030 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
10040 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10050 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
10060 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
10070 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10080 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
10090 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
100a0 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e  _result_codes(In
100b0 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f  tPtr db, int ono
100c0 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ff);....#if !PLA
100d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
100e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
100f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10100 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
10110 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10120 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10130 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
10140 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10150 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10160 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10170 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
10180 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
10190 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
101a0 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
101b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
101c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
101d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
101e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
101f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
10200 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
10210 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
10220 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10230 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
10240 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10250 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
10260 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
10270 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64  _extended_errcod
10280 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
10290 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
102a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
102b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
102c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
102d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
102e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
102f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10300 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10310 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10320 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10330 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10340 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
10350 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45 72  _errstr(SQLiteEr
10360 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20  rorCode rc); /* 
10370 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20  3.7.15+ */....  
10380 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
10390 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61  e3_log() takes a
103a0 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65   variable argume
103b0 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65  nt list, we have
103c0 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63   to overload dec
103d0 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f  larations..    /
103e0 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62  / for all possib
103f0 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e  le calls.  For n
10400 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20  ow, we are only 
10410 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c  exposing a singl
10420 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20  e string, and.. 
10430 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20     // depend on 
10440 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f  the caller to fo
10450 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e  rmat the string.
10460 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10470 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10480 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10490 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
104a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
104b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
104c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
104d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
104e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
104f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10500 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10510 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
10520 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43  log(SQLiteErrorC
10530 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79  ode iErrCode, by
10540 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a  te[] zFormat);..
10550 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10560 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10570 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10580 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
10590 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
105a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
105b0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
105c0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
105d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
105e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
105f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10600 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10610 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  de sqlite3_file_
10620 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64  control(IntPtr d
10630 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d  b, byte[] zDbNam
10640 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74  e, int op, IntPt
10650 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20  r pArg);....#if 
10660 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10670 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10680 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10690 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
106a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
106b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
106c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
106d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
106e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
106f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10700 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
10710 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  Ptr sqlite3_back
10720 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64  up_init(IntPtr d
10730 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44  estDb, byte[] zD
10740 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20  estName, IntPtr 
10750 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d  sourceDb, byte[]
10760 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a   zSourceName);..
10770 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10780 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10790 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
107a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
107b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
107c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
107d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
107e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
107f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
10800 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
10810 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
10820 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
10830 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  de sqlite3_backu
10840 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62 61  p_step(IntPtr ba
10850 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29  ckup, int nPage)
10860 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
10870 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
10880 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
10890 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
108a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
108b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
108c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
108d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
108e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
108f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
10900 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
10910 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
10920 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69  3_backup_remaini
10930 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  ng(IntPtr backup
10940 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
10950 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10960 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10970 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10980 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10990 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
109a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
109b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
109c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
109d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
109e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
109f0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
10a00 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f  e3_backup_pageco
10a10 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75  unt(IntPtr backu
10a20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
10a30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10a40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
10a50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10a60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
10a70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
10a80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
10a90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
10aa0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
10ab0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
10ac0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
10ad0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
10ae0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
10af0 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49 6e 74  declare_vtab(Int
10b00 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a  Ptr db, IntPtr z
10b10 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  SQL);....#if !PL
10b20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10b30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10b40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10b50 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10b60 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10b70 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10b80 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
10b90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
10ba0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
10bb0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10bc0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
10bd0 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66   sqlite3_mprintf
10be0 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74 2c 20  (IntPtr format, 
10bf0 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20 20 20  __arglist);..   
10c00 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
10c10 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41 50 49     // SQLite API
10c20 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72 65 20   calls that are 
10c30 70 72 6f 76 69 64 65 64 20 62 79 20 22 77 65 6c  provided by "wel
10c40 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69  l-known" extensi
10c50 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62 65 20  ons that may be 
10c60 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20  statically..    
10c70 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68 20 74  // linked with t
10c80 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6e  he SQLite core n
10c90 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 63 75  ative library cu
10ca0 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d  rrently in use..
10cb0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65 78 74  .    #region ext
10cc0 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20 61 70  ension sqlite ap
10cd0 69 20 63 61 6c 6c 73 0d 0a 23 69 66 20 49 4e 54  i calls..#if INT
10ce0 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42  EROP_VIRTUAL_TAB
10cf0 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  LE..#if !PLATFOR
10d00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10d10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10d20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10d30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10d40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10d50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10d60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
10d70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10d80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
10d90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10da0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
10db0 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f  te3_create_dispo
10dc0 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74  sable_module(Int
10dd0 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e  Ptr db, IntPtr n
10de0 61 6d 65 2c 20 72 65 66 20 73 71 6c 69 74 65 33  ame, ref sqlite3
10df0 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20  _module module, 
10e00 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
10e10 74 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  ta, xDestroyModu
10e20 6c 65 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d  le xDestroy);...
10e30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
10e40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
10e50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
10e60 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
10e70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
10e80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
10e90 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
10ea0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
10eb0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
10ec0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
10ed0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10ee0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 64  n void sqlite3_d
10ef0 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e  ispose_module(In
10f00 74 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a  tPtr pModule);..
10f10 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
10f20 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
10f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
10f80 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74 65 20   #region sqlite 
10f90 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61 6c 6c  interop api call
10fa0 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  s (.NET Compact 
10fb0 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d  Framework only).
10fc0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
10fd0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26  MPACTFRAMEWORK &
10fe0 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  & !SQLITE_STANDA
10ff0 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RD..    [DllImpo
11000 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
11010 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11020 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
11030 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e   sqlite3_last_in
11040 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72  sert_rowid_inter
11050 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72 65  op(IntPtr db, re
11060 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a  f long rowId);..
11070 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11080 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
11090 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
110a0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
110b0 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73  qlite3_memory_us
110c0 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66 20 6c  ed_interop(ref l
110d0 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20  ong bytes);.... 
110e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
110f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
11100 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11110 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
11120 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
11130 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74  ater_interop(int
11140 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20   resetFlag, ref 
11150 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a  long bytes);....
11160 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11170 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
11180 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11190 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
111a0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
111b0 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  bind_double_inte
111c0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
111d0 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
111e0 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
111f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11200 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
11210 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11220 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
11230 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
11240 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74  3_bind_int64_int
11250 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
11260 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
11270 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d   long value);...
11280 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11290 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
112a0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
112b0 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74  3_bind_int64_int
112c0 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74  erop")]..    int
112d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
112e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
112f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
11300 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  _uint64_interop(
11310 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
11320 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e   index, ref ulon
11330 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
11340 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11350 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
11360 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11370 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
11380 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f  3_column_double_
11390 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
113a0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
113b0 6f 75 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  out double value
113c0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
113d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
113e0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
113f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
11400 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  id sqlite3_colum
11410 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  n_int64_interop(
11420 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
11430 20 69 6e 64 65 78 2c 20 6f 75 74 20 6c 6f 6e 67   index, out long
11440 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
11450 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11460 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
11470 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11480 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
11490 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e  _value_double_in
114a0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
114b0 6f 75 74 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  out double value
114c0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
114d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
114e0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
114f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
11500 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  id sqlite3_value
11510 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
11520 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 49 6e 74  ntPtr p, out Int
11530 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  64 value);....  
11540 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11550 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
11560 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11570 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
11580 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
11590 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
115a0 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64 6f 75  context, ref dou
115b0 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
115c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
115d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
115e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
115f0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
11600 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
11610 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
11620 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74  context, ref Int
11630 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  64 value);....  
11640 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11650 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
11660 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11670 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
11680 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
11690 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e  osable_module_in
116a0 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20  terop(..        
116b0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
116c0 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72 20 70  r name, IntPtr p
116d0 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56 65 72  Module, int iVer
116e0 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20 78 43  sion, xCreate xC
116f0 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  reate,..        
11700 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63  xConnect xConnec
11710 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20 78 42  t, xBestIndex xB
11720 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73 63 6f  estIndex, xDisco
11730 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63  nnect xDisconnec
11740 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73  t,..        xDes
11750 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c 20 78  troy xDestroy, x
11760 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43 6c 6f  Open xOpen, xClo
11770 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69 6c 74  se xClose, xFilt
11780 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20 20 20  er xFilter,..   
11790 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65 78 74       xNext xNext
117a0 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78 43 6f  , xEof xEof, xCo
117b0 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78 52  lumn xColumn, xR
117c0 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78 55 70  owId xRowId, xUp
117d0 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d 0a 20  date xUpdate,.. 
117e0 20 20 20 20 20 20 20 78 42 65 67 69 6e 20 78 42         xBegin xB
117f0 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53 79 6e  egin, xSync xSyn
11800 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d  c, xCommit xComm
11810 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52  it, xRollback xR
11820 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  ollback,..      
11830 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20    xFindFunction 
11840 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 78  xFindFunction, x
11850 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 2c 20  Rename xRename, 
11860 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65  xSavepoint xSave
11870 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20  point,..        
11880 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73  xRelease xReleas
11890 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78  e, xRollbackTo x
118a0 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50  RollbackTo, IntP
118b0 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d  tr pClientData,.
118c0 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f  .        xDestro
118d0 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79  yModule xDestroy
118e0 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66  Module);..#endif
118f0 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52  ..    // PLATFOR
11900 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11910 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54  RK && !SQLITE_ST
11920 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65 6e 64  ANDARD..    #end
11930 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
11940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11980 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
11990 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
119a0 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66 20 49  Delegates..#if I
119b0 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
119c0 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  ABLE..#if !PLATF
119d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
119e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
119f0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
11a00 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
11a10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11a20 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
11a30 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
11a40 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
11a50 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  te(..        Int
11a60 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
11a70 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
11a80 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
11a90 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
11aa0 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
11ab0 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61   ref IntPtr pVta
11ac0 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
11ad0 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
11ae0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
11af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
11b40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11b50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11b60 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
11b70 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
11b80 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11b90 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
11ba0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
11bb0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
11bc0 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20   xConnect(..    
11bd0 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
11be0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
11bf0 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69  pAux,..        i
11c00 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
11c10 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
11c20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
11c30 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
11c40 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
11c50 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rror..    );....
11c60 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
11c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
11cb0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11cc0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11cd0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
11ce0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
11cf0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
11d00 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
11d10 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
11d20 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
11d30 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e 64  rorCode xBestInd
11d40 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ex(..        Int
11d50 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
11d60 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
11d70 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  x..    );....   
11d80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
11dd0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11de0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11df0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
11e00 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
11e10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11e20 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
11e30 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
11e40 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
11e50 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74  Code xDisconnect
11e60 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
11e70 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
11e80 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
11e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ed0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
11ee0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11ef0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
11f00 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
11f10 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
11f20 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
11f30 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
11f40 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
11f50 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73 74  eErrorCode xDest
11f60 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  roy(..        In
11f70 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
11f80 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
11f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fd0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
11fe0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11ff0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
12000 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
12010 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
12020 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12030 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
12040 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
12050 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f  LiteErrorCode xO
12060 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  pen(..        In
12070 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
12080 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
12090 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
120a0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
120b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120f0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
12100 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12110 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
12120 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
12130 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
12140 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12150 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
12160 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
12170 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73  eErrorCode xClos
12180 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
12190 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
121a0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
121b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
12200 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
12210 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
12220 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
12230 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
12240 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12250 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
12260 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
12270 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46  LiteErrorCode xF
12280 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
12290 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
122a0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78  .        int idx
122b0 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  Num,..        In
122c0 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20  tPtr idxStr,..  
122d0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
122e0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
122f0 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  argv..    );....
12300 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
12310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
12350 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
12360 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12370 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
12380 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
12390 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
123a0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
123b0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
123c0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
123d0 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a  rorCode xNext(..
123e0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
123f0 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
12400 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
12410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12450 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
12460 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12470 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
12480 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
12490 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
124a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
124b0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
124c0 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 45   delegate int xE
124d0 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  of(..        Int
124e0 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
124f0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
12500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12540 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
12550 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12560 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
12570 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
12580 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
12590 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
125a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
125b0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
125c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
125d0 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
125e0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
125f0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
12600 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20   pContext,..    
12610 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20      int index.. 
12620 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
12630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12670 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
12680 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12690 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
126a0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
126b0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
126c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
126d0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
126e0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
126f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
12700 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20   xRowId(..      
12710 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
12720 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c  ,..        ref l
12730 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29  ong rowId..    )
12740 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
12750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12790 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
127a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
127b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
127c0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
127d0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
127e0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
127f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
12800 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
12810 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70  iteErrorCode xUp
12820 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49  date(..        I
12830 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
12840 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
12850 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
12860 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
12870 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
12880 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
12890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
128e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
128f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12900 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
12910 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
12920 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12930 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
12940 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
12950 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
12960 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20   xBegin(..      
12970 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
12980 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
12990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
129a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
129b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
129c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
129d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
129e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
129f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12a00 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
12a10 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
12a20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12a30 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
12a40 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
12a50 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
12a60 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  e xSync(..      
12a70 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
12a80 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
12a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
12ae0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12af0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12b00 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
12b10 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
12b20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12b30 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
12b40 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
12b50 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
12b60 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  e xCommit(..    
12b70 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
12b80 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
12b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
12be0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12bf0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12c00 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
12c10 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
12c20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
12c30 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
12c40 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
12c50 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
12c60 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a  ode xRollback(..
12c70 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
12c80 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
12c90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
12ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
12ce0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
12cf0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12d00 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
12d10 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
12d20 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
12d30 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
12d40 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
12d50 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46 69 6e  elegate int xFin
12d60 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
12d70 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
12d80 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6e  ,..        int n
12d90 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  Arg,..        In
12da0 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20  tPtr zName,..   
12db0 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43       ref SQLiteC
12dc0 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b  allback callback
12dd0 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
12de0 6e 74 50 74 72 20 70 55 73 65 72 44 61 74 61 0d  ntPtr pUserData.
12df0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
12e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
12e50 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12e60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12e70 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
12e80 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
12e90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12ea0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
12eb0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
12ec0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
12ed0 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  de xRename(..   
12ee0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
12ef0 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
12f00 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d  tr zNew..    );.
12f10 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
12f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f60 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
12f70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12f80 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
12f90 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
12fa0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
12fb0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
12fc0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
12fd0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
12fe0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65  eErrorCode xSave
12ff0 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
13000 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
13010 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
13020 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d  point..    );...
13030 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
13040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13080 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
13090 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
130a0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
130b0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
130c0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
130d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
130e0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
130f0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
13100 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73  rrorCode xReleas
13110 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
13120 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
13130 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
13140 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
13150 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
131a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
131b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
131c0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
131d0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
131e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
131f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
13200 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
13210 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
13220 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  Code xRollbackTo
13230 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
13240 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
13250 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
13260 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
13270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
132c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
132d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
132e0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
132f0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
13300 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13310 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
13320 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
13330 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f  ate void xDestro
13340 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70  yModule(IntPtr p
13350 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 23 65  ClientData);..#e
13360 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
13370 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
13380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
133d0 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 53 74  region Native St
133e0 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20 49 4e  ructures..#if IN
133f0 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
13400 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  BLE..    [Struct
13410 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
13420 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
13430 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
13440 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  uct sqlite3_modu
13450 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  le..    {..     
13460 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 56     public int iV
13470 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  ersion;..       
13480 20 70 75 62 6c 69 63 20 78 43 72 65 61 74 65 20   public xCreate 
13490 78 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20  xCreate;..      
134a0 20 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63    public xConnec
134b0 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  t xConnect;..   
134c0 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65 73       public xBes
134d0 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65  tIndex xBestInde
134e0 78 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  x;..        publ
134f0 69 63 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78  ic xDisconnect x
13500 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  Disconnect;..   
13510 20 20 20 20 20 70 75 62 6c 69 63 20 78 44 65 73       public xDes
13520 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a  troy xDestroy;..
13530 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
13540 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20  Open xOpen;..   
13550 20 20 20 20 20 70 75 62 6c 69 63 20 78 43 6c 6f       public xClo
13560 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20  se xClose;..    
13570 20 20 20 20 70 75 62 6c 69 63 20 78 46 69 6c 74      public xFilt
13580 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20  er xFilter;..   
13590 20 20 20 20 20 70 75 62 6c 69 63 20 78 4e 65 78       public xNex
135a0 74 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20  t xNext;..      
135b0 20 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45    public xEof xE
135c0 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  of;..        pub
135d0 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c  lic xColumn xCol
135e0 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  umn;..        pu
135f0 62 6c 69 63 20 78 52 6f 77 49 64 20 78 52 6f 77  blic xRowId xRow
13600 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  Id;..        pub
13610 6c 69 63 20 78 55 70 64 61 74 65 20 78 55 70 64  lic xUpdate xUpd
13620 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ate;..        pu
13630 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65 67  blic xBegin xBeg
13640 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  in;..        pub
13650 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e 63 3b  lic xSync xSync;
13660 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
13670 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74   xCommit xCommit
13680 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
13690 63 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c  c xRollback xRol
136a0 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20  lback;..        
136b0 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63  public xFindFunc
136c0 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
136d0 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  on;..        pub
136e0 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e  lic xRename xRen
136f0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ame;..        /*
13700 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f   The methods abo
13710 76 65 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f  ve are in versio
13720 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74  n 1 of the sqlit
13730 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
13740 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54      * object.  T
13750 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66  hose below are f
13760 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64  or version 2 and
13770 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20   greater. */..  
13780 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 53 61        public xSa
13790 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69  vepoint xSavepoi
137a0 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  nt;..        pub
137b0 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78 52 65  lic xRelease xRe
137c0 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  lease;..        
137d0 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b  public xRollback
137e0 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d  To xRollbackTo;.
137f0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
13800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13840 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13850 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
13860 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
13870 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
13880 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
13890 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d  te3_vtab..    {.
138a0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
138b0 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b 0d  IntPtr pModule;.
138c0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
138d0 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20  int nRef; /* NO 
138e0 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a  LONGER USED */..
138f0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
13900 6e 74 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d 0a  ntPtr zErrMsg;..
13910 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
13920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13960 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13970 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
13980 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
13990 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
139a0 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
139b0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a  e3_vtab_cursor..
139c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
139d0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 56 54  ublic IntPtr pVT
139e0 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ab;..    }....  
139f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13a40 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
13a50 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
13a60 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
13a70 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
13a80 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
13a90 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d  nstraint..    {.
13aa0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
13ab0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
13ac0 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20  nstraint(..     
13ad0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
13ae0 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  exConstraint con
13af0 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20  straint..       
13b00 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
13b10 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
13b20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13b30 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
13b40 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  int != null)..  
13b50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13b60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f               iCo
13b70 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e  lumn = constrain
13b80 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  t.iColumn;..    
13b90 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d              op =
13ba0 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d   constraint.op;.
13bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13bc0 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72   usable = constr
13bd0 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20  aint.usable;..  
13be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 54                iT
13bf0 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73  ermOffset = cons
13c00 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73  traint.iTermOffs
13c10 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et;..           
13c20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
13c30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
13c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
13c90 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d  ic int iColumn;.
13ca0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
13cb0 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
13cc0 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20  raintOp op;..   
13cd0 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
13ce0 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20   usable;..      
13cf0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65    public int iTe
13d00 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d  rmOffset;..    }
13d10 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
13d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d60 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
13d70 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
13d80 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
13d90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13da0 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
13db0 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20  dex_orderby..   
13dc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
13dd0 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
13de0 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20  _orderby(..     
13df0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
13e00 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65 72 42  exOrderBy orderB
13e10 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
13e20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
13e30 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
13e40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
13e50 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20 6e 75  f (orderBy != nu
13e60 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
13e70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13e80 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72      iColumn = or
13e90 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a  derBy.iColumn;..
13ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13eb0 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79 2e 64  desc = orderBy.d
13ec0 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  esc;..          
13ed0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
13ee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f30 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
13f40 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b  lic int iColumn;
13f50 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65   /* Column numbe
13f60 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  r */..        pu
13f70 62 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b 20  blic byte desc; 
13f80 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45    /* True for DE
13f90 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41  SC.  False for A
13fa0 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d  SC. */..    }...
13fb0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
13fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14000 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
14010 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
14020 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
14030 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
14040 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
14050 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
14060 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
14070 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
14080 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
14090 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20  t_usage(..      
140a0 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
140b0 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
140c0 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
140d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
140e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
140f0 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
14100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
14110 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
14120 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
14130 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14140 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76 49             argvI
14150 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e  ndex = constrain
14160 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78  tUsage.argvIndex
14170 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
14180 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72     omit = constr
14190 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d  aintUsage.omit;.
141a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
141b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
141c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
141d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
14210 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
14220 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a  nt argvIndex; /*
14230 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69   if >0, constrai
14240 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72  nt is part of ar
14250 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f  gv to xFilter */
14260 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
14270 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20 20 20   byte omit;     
14280 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61  /* Do not code a
14290 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20 63   test for this c
142a0 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
142b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
142c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14300 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
14310 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
14320 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
14330 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
14340 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
14350 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20  _index_info..   
14360 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 49   {..        /* I
14370 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20  nputs */..      
14380 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f    public int nCo
14390 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d  nstraint; /* Num
143a0 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69  ber of entries i
143b0 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f  n aConstraint */
143c0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
143d0 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61   IntPtr aConstra
143e0 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  int;..        pu
143f0 62 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72 42  blic int nOrderB
14400 79 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y;..        publ
14410 69 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72  ic IntPtr aOrder
14420 42 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  By;..        /* 
14430 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20  Outputs */..    
14440 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
14450 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  r aConstraintUsa
14460 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ge;..        pub
14470 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20  lic int idxNum; 
14480 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d            /* Num
14490 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e  ber used to iden
144a0 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a  tify the index *
144b0 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
144c0 63 20 73 74 72 69 6e 67 20 69 64 78 53 74 72 3b  c string idxStr;
144d0 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e          /* Strin
144e0 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61  g, possibly obta
144f0 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65  ined from sqlite
14500 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20  3_malloc */..   
14510 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
14520 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72  needToFreeIdxStr
14530 3b 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72  ; /* Free idxStr
14540 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66   using sqlite3_f
14550 72 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f  ree() if true */
14560 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
14570 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73   int orderByCons
14580 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20 69  umed;  /* True i
14590 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65  f output is alre
145a0 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a  ady ordered */..
145b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64          public d
145c0 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43  ouble estimatedC
145d0 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65  ost; /* Estimate
145e0 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20  d cost of using 
145f0 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20  this index */.. 
14600 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
14610 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
14620 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  }....  /////////
14630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14670 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
14680 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14690 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61  EWORK..  interna
146a0 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73  l abstract class
146b0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20   CriticalHandle 
146c0 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  : IDisposable.. 
146d0 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20   {..    private 
146e0 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d  bool _isClosed;.
146f0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 49  .    protected I
14700 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d  ntPtr handle;...
14710 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 43  .    protected C
14720 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e  riticalHandle(In
14730 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64  tPtr invalidHand
14740 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  leValue)..    {.
14750 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20  .      handle = 
14760 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c  invalidHandleVal
14770 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c  ue;..      _isCl
14780 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  osed = false;.. 
14790 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69     }....    ~Cri
147a0 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20  ticalHandle().. 
147b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70     {..      Disp
147c0 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
147d0 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74   }....    privat
147e0 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29  e void Cleanup()
147f0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
14800 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20  f (!IsClosed).. 
14810 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14820 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d  this._isClosed =
14830 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
14840 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d  if (!IsInvalid).
14850 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
14860 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e        ReleaseHan
14870 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  dle();..        
14880 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
14890 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
148a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
148b0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
148c0 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65  ublic void Close
148d0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
148e0 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
148f0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
14900 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
14910 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
14920 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
14930 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
14940 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
14950 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
14960 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
14970 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61     {..      Clea
14980 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  nup();..    }...
14990 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 61  .    protected a
149a0 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c  bstract bool Rel
149b0 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d  easeHandle();...
149c0 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76  .    protected v
149d0 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e  oid SetHandle(In
149e0 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20  tPtr value)..   
149f0 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65   {..      handle
14a00 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d   = value;..    }
14a10 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
14a20 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49  oid SetHandleAsI
14a30 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d  nvalid()..    {.
14a40 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64  .      _isClosed
14a50 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
14a60 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
14a70 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
14a80 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
14a90 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20  bool IsClosed.. 
14aa0 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20     {..      get 
14ab0 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73  { return _isClos
14ac0 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ed; }..    }....
14ad0 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72      public abstr
14ae0 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  act bool IsInval
14af0 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  id..    {..     
14b00 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a   get;..    }....
14b10 20 20 7d 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 0d    }....#endif...
14b20 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
14b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b70 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
14b80 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
14b90 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20  Handle Class..  
14ba0 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65    // Handles the
14bb0 20 75 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62   unmanaged datab
14bc0 61 73 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64  ase pointer, and
14bd0 20 70 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69   provides finali
14be0 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73  zation..    // s
14bf0 75 70 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a  upport for it...
14c00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
14c10 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
14c20 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
14c30 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
14c40 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51  e..    {..#if SQ
14c50 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26  LITE_STANDARD &&
14c60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14c70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14c80 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65       internal de
14c90 6c 65 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73  legate void Clos
14ca0 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
14cb0 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
14cc0 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
14cd0 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e  onHandle hdl, In
14ce0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20  tPtr db);....   
14cf0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
14d00 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63  atic CloseConnec
14d10 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f  tionCallback clo
14d20 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a  seConnection =..
14d30 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
14d40 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e  teBase.CloseConn
14d50 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d  ection;..#endif.
14d60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
14d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14db0 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
14dc0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
14dd0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
14de0 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
14df0 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
14e00 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
14e10 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
14e20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
14e70 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
14e80 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a  l ownHandle;....
14e90 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
14ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14ee0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
14ef0 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
14f00 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
14f10 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  r(SQLiteConnecti
14f20 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20  onHandle db)..  
14f30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14f40 20 20 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e       if (db != n
14f50 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
14f60 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
14f70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14f80 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
14f90 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e      lock (db.syn
14fa0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
14fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14fc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
14fd0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 62         return db
14fe0 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
14ff0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
15000 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
15010 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
15020 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
15030 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
15040 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15080 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
15090 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
150a0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
150b0 6e 64 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  ndle(IntPtr db, 
150c0 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d  bool ownHandle).
150d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
150e0 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  his(ownHandle)..
150f0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
15100 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15110 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
15120 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
15130 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
15140 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
15160 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f  is.ownHandle = o
15170 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
15180 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
15190 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20  ndle(db);..     
151a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
151b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
151c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15200 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
15210 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
15220 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
15230 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29  (bool ownHandle)
15240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
15250 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
15260 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
15270 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
15280 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
15290 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
152a0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
152b0 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
152c0 74 28 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69  t(ref UnsafeNati
152d0 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63  veMethods.connec
152e0 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
152f0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
15300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
15310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15350 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
15360 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
15370 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
15380 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
15390 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
153a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
153b0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
153c0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
153d0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
153e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
153f0 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64      if (!ownHand
15400 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b  le) return true;
15410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
15420 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
15430 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
15440 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
15450 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15460 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
15470 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
15480 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
15490 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
154a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
154b0 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
154c0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
154d0 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
154e0 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
154f0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
15500 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
15510 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
15520 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43            closeC
15530 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
15540 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
15550 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
15560 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
15570 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
15580 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
15590 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
155a0 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
155b0 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
155c0 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69  lHandle);..#endi
155d0 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  f....#if !NET_CO
155e0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
155f0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
15600 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
15610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
15620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15630 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
15640 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72  eLine(String.For
15650 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
15660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
15670 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20  loseConnection: 
15680 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  {0}", localHandl
15690 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
156a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
156b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
156c0 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
156d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
156e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
156f0 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d  ..#endif..#else.
15700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15710 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
15720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15730 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15740 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e           if (han
15750 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
15760 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
15770 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15790 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
157a0 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
157b0 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  his, handle);.. 
157c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
157d0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
157e0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
157f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15800 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
15810 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
15820 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
15830 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
15840 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
15850 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Decrement(..    
15860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15870 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ref UnsafeNative
15880 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e 65 63 74 69  Methods.connecti
15890 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  onCount);..#endi
158a0 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
158b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
158c0 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
158d0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
158e0 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
158f0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
15900 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
15910 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
15920 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
15930 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
15940 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
15950 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
15960 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
15970 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
15980 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
15990 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
159a0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
159b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
159c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
159d0 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
159e0 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
159f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
15a00 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
15a10 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d  eConnection: {0}
15a20 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
15a30 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
15a40 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
15a50 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
15a60 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
15a70 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
15a80 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
15a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15aa0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
15ab0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
15ac0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
15ad0 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
15ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
15af0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
15b00 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
15b30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
15b40 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b60 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
15b70 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
15b80 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
15b90 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
15ba0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
15bb0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
15bc0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
15bd0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
15be0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
15bf0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c40 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
15c50 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
15c60 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
15c70 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
15c80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15c90 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
15ca0 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
15cb0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
15cc0 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
15cd0 74 69 76 65 4d 65 74 68 6f 64 73 2e 63 6f 6e 6e  tiveMethods.conn
15ce0 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20  ectionCount);.. 
15cf0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
15d00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
15d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d50 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
15d60 75 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48 61  ublic bool OwnHa
15d70 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
15d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
15d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
15da0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
15db0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15dd0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
15de0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
15df0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e10 72 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c 65  return ownHandle
15e20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
15e30 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
15e40 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
15e50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
15e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ea0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
15eb0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
15ec0 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
15ed0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15ee0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
15ef0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
15f00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15f10 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
15f20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
15f30 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
15f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
15f60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
15f70 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
15f80 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
15f90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
15fa0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
15fb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
15fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16000 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
16010 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
16020 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
16030 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
16040 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
16050 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16060 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
16070 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
16080 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
16090 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
160a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
160b0 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
160c0 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
160d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
160e0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
160f0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
16100 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
16110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16150 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
16160 6f 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  on SQLiteStateme
16170 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  ntHandle Class..
16180 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
16190 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
161a0 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
161b0 65 64 20 53 51 4c 69 74 65 20 73 74 61 74 65 6d  ed SQLite statem
161c0 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72  ents...    inter
161d0 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
161e0 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
161f0 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61  Handle : Critica
16200 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  lHandle..    {..
16210 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
16220 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16230 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
16240 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
16250 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
16260 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
16270 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
16280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162c0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
162d0 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
162e0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
162f0 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n;....        //
16300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16340 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
16350 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
16360 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
16370 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53 74   IntPtr(SQLiteSt
16380 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73 74  atementHandle st
16390 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  mt)..        {..
163a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
163b0 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  stmt != null).. 
163c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
163d0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
163e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
163f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
16400 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f 74  k (stmt.syncRoot
16410 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
16420 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
16430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16440 20 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68 61    return stmt.ha
16450 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
16460 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
16470 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
16480 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
16490 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
164a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
164b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16500 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
16510 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
16520 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
16530 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
16540 50 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 20  Ptr stmt)..     
16550 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
16560 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
16570 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16580 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
16590 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
165a0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
165b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
165c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
165d0 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
165e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
165f0 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29 3b  SetHandle(stmt);
16600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
16610 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
16620 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16670 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
16680 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
16690 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
166a0 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
166b0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
166c0 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
166d0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
166e0 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
166f0 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Increment(..    
16700 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
16710 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
16720 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ods.statementCou
16730 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
16740 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
16750 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
16760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
167a0 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
167b0 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
167c0 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
167d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
167e0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
167f0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
16800 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
16810 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
16820 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
16830 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
16840 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
16850 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
16860 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
16870 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
16880 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
16890 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
168a0 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
168b0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
168c0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
168d0 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
168e0 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f  tatement(cnn, lo
168f0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
16900 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
16910 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
16920 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
16930 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
16940 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
16950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16960 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
16970 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
16980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16990 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a          "Finaliz
169a0 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22  eStatement: {0}"
169b0 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
169c0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
169d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
169e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
169f0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
16a00 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
16a10 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
16a20 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
16a30 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
16a40 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
16a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16a70 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
16a80 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
16a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16aa0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
16ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16ac0 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c  SQLiteBase.Final
16ad0 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e  izeStatement(cnn
16ae0 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
16af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b00 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
16b10 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
16b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b30 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
16b40 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
16b50 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
16b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16b70 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
16b80 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
16b90 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
16ba0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
16bb0 68 6f 64 73 2e 73 74 61 74 65 6d 65 6e 74 43 6f  hods.statementCo
16bc0 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  unt);..#endif..#
16bd0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
16be0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
16bf0 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
16c00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
16c10 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
16c20 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
16c30 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
16c40 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
16c50 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
16c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
16c70 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
16c80 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
16c90 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
16ca0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
16cb0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
16cc0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
16cd0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
16ce0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
16cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
16d00 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
16d10 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
16d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d30 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
16d40 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20  Statement: {0}, 
16d50 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
16d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16d70 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
16d80 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
16d90 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
16da0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
16db0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
16dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16de0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
16df0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
16e00 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
16e10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
16e20 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
16e30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
16e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
16e50 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
16e60 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
16e70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
16e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
16e90 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
16ea0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
16eb0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
16ec0 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
16ed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
16ee0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
16ef0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
16f00 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
16f10 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
16f20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
16f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f70 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
16f80 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
16f90 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
16fa0 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
16fb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
16fc0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
16fd0 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
16fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16ff0 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69    ref UnsafeNati
17000 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65 6d  veMethods.statem
17010 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20  entCount);..    
17020 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
17030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
17040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17080 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
17090 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
170a0 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
170b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
170c0 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
170d0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
170e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
170f0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
17100 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
17110 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
17120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
17130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17140 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
17150 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
17160 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
17170 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
17180 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
17190 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
171a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
171f0 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
17200 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
17210 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
17220 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
17230 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
17240 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
17250 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
17260 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
17270 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
17280 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
17290 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
172a0 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
172b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
172c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
172d0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
172e0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
172f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17330 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
17340 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  n SQLiteBackupHa
17350 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
17360 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
17370 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
17380 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
17390 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a  QLite backup obj
173a0 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72  ects...    inter
173b0 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
173c0 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
173d0 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
173e0 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
173f0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
17400 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17410 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
17420 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
17430 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
17440 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
17450 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
17460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
174b0 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
174c0 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d  tionHandle cnn;.
174d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
174e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17520 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
17530 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
17540 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
17550 74 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75  tPtr(SQLiteBacku
17560 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d  pHandle backup).
17570 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
17580 20 20 20 20 20 20 20 20 69 66 20 28 62 61 63 6b          if (back
17590 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  up != null)..   
175a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
175b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
175c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
175d0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
175e0 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74  (backup.syncRoot
175f0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
17600 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17620 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e    return backup.
17630 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  handle;..       
17640 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
17650 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
17660 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
17670 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
17680 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
17690 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
176a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
176e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
176f0 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28  iteBackupHandle(
17700 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
17710 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
17720 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20  tr backup)..    
17730 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
17740 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
17750 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
17760 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
17770 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
17780 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
17790 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
177a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
177b0 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d  this.cnn = cnn;.
177c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
177d0 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75   SetHandle(backu
177e0 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  p);..           
177f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
17800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
17810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17850 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
17860 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ate SQLiteBackup
17870 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
17880 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
17890 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
178a0 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
178b0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
178c0 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
178d0 49 6e 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20  Increment(..    
178e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
178f0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
17900 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ods.backupCount)
17910 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
17920 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
17930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17970 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
17980 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
17990 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
179a0 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
179b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
179c0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
179d0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
179e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
179f0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
17a00 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
17a10 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
17a20 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
17a30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
17a40 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
17a50 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
17a60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17a70 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
17a80 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
17a90 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
17aa0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
17ab0 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70  ase.FinishBackup
17ac0 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  (cnn, localHandl
17ad0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  e);....#if !NET_
17ae0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
17af0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
17b00 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
17b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17b20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17b30 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
17b40 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
17b50 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
17b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17b70 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b  "FinishBackup: {
17b80 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  0}", localHandle
17b90 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
17ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17bb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
17bc0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
17bd0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
17bf0 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a  .#endif..#else..
17c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17c10 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
17c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17c30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17c40 20 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64          if (hand
17c50 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
17c60 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
17c70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
17c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17c90 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
17ca0 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20  nishBackup(cnn, 
17cb0 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
17cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17cd0 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
17ce0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
17cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
17d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17d10 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
17d20 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
17d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
17d40 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
17d50 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  ment(..         
17d60 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
17d70 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
17d80 64 73 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ds.backupCount);
17d90 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45  ..#endif..#if DE
17da0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
17db0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
17dc0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
17dd0 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
17de0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
17df0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
17e00 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
17e10 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
17e20 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
17e30 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
17e40 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
17e50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
17e60 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
17e70 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
17e80 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
17e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
17ea0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
17eb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
17ec0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
17ed0 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
17ee0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
17ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17f00 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a    "FinishBackup:
17f10 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
17f20 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
17f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17f40 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
17f50 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
17f60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
17f70 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
17f80 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
17f90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
17fa0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
17fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
17fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
17fd0 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
17fe0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
17ff0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18000 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
18010 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
18020 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
18030 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
18040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18050 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
18060 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
18070 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
18080 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
18090 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
180a0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
180b0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
180c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
180d0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
180e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
180f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18130 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
18140 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
18150 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
18160 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
18170 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
18180 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
18190 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
181a0 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  ement(..        
181b0 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61          ref Unsa
181c0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
181d0 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20  backupCount);.. 
181e0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
181f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
18200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18240 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
18250 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
18260 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
18270 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18280 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
18290 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
182a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
182b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
182c0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
182d0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
182e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
182f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
18300 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
18310 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
18320 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
18330 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
18340 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
18350 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
18360 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
183b0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
183c0 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
183d0 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
183e0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
183f0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
18400 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18410 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
18420 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
18430 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
18440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18450 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
18460 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
18470 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
18480 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
18490 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
184a0 6f 6e 0d 0a 7d 0d 0a                             on..}..