System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 51231278aeb53349a3e0fffc2ec97dc6216f210b:


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 0d 0a 20 20 75 73  TFRAMEWORK..  us
02f0: 69 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b  ing System.Text;
0300: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
0310: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
0320: 54 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20 43 4f  TFRAMEWORK || CO
0330: 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 75 73  UNT_HANDLE..  us
0340: 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61  ing System.Threa
0350: 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ding;..#endif...
0360: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0370: 58 6d 6c 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  Xml;....#if !PLA
0380: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
0390: 4d 45 57 4f 52 4b 20 26 26 20 21 44 45 42 55 47  MEWORK && !DEBUG
03a0: 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d  ..  [SuppressUnm
03b0: 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72 69  anagedCodeSecuri
03c0: 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69  ty]..#endif..  i
03d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
03e0: 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76  lass UnsafeNativ
03f0: 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20  eMethods..  {.. 
0400: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 43 72 69       #region Cri
0410: 74 69 63 61 6c 20 48 61 6e 64 6c 65 20 43 6f 75  tical Handle Cou
0420: 6e 74 73 20 28 44 65 62 75 67 20 42 75 69 6c 64  nts (Debug Build
0430: 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 43 4f 55 4e   Only)..#if COUN
0440: 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
0450: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54  //..      // NOT
0460: 45 3a 20 54 68 65 73 65 20 63 6f 75 6e 74 73 20  E: These counts 
0470: 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 74 6f  represent the to
0480: 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75  tal number of ou
0490: 74 73 74 61 6e 64 69 6e 67 0d 0a 20 20 20 20 20  tstanding..     
04a0: 20 2f 2f 20 20 20 20 20 20 20 28 6e 6f 6e 2d 64   //       (non-d
04b0: 69 73 70 6f 73 65 64 29 20 43 72 69 74 69 63 61  isposed) Critica
04c0: 6c 48 61 6e 64 6c 65 20 64 65 72 69 76 65 64 20  lHandle derived 
04d0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73  object instances
04e0: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
04f0: 20 63 72 65 61 74 65 64 20 62 79 20 74 68 69 73   created by this
0500: 20 6c 69 62 72 61 72 79 20 61 6e 64 20 61 72 65   library and are
0510: 20 70 72 69 6d 61 72 69 6c 79 20 66 6f 72 20 75   primarily for u
0520: 73 65 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 20  se by..      // 
0530: 20 20 20 20 20 20 74 68 65 20 74 65 73 74 20 73        the test s
0540: 75 69 74 65 2e 20 20 54 68 65 73 65 20 63 6f 75  uite.  These cou
0550: 6e 74 73 20 61 72 65 20 69 6e 63 72 65 6d 65 6e  nts are incremen
0560: 74 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20  ted by the..    
0570: 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 6f 63    //       assoc
0580: 69 61 74 65 64 20 63 6f 6e 73 74 72 75 63 74 6f  iated constructo
0590: 72 73 20 61 6e 64 20 61 72 65 20 64 65 63 72 65  rs and are decre
05a0: 6d 65 6e 74 65 64 20 75 70 6f 6e 20 74 68 65 0d  mented upon the.
05b0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
05c0: 73 75 63 63 65 73 73 66 75 6c 20 63 6f 6d 70 6c  successful compl
05d0: 65 74 69 6f 6e 20 6f 66 20 74 68 65 20 61 73 73  etion of the ass
05e0: 6f 63 69 61 74 65 64 20 52 65 6c 65 61 73 65 48  ociated ReleaseH
05f0: 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 20  andle..      // 
0600: 20 20 20 20 20 20 6d 65 74 68 6f 64 73 2e 0d 0a        methods...
0610: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
0620: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
0630: 69 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f  int connectionCo
0640: 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74 65  unt;..      inte
0650: 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20  rnal static int 
0660: 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 3b 0d  statementCount;.
0670: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
0680: 73 74 61 74 69 63 20 69 6e 74 20 62 61 63 6b 75  static int backu
0690: 70 43 6f 75 6e 74 3b 0d 0a 23 65 6e 64 69 66 0d  pCount;..#endif.
06a0: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
06b0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
06c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0700: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
0710: 65 67 69 6f 6e 20 53 68 61 72 65 64 20 4e 61 74  egion Shared Nat
0720: 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61  ive SQLite Libra
0730: 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43  ry Pre-Loading C
0740: 6f 64 65 0d 0a 20 20 20 20 20 20 23 72 65 67 69  ode..      #regi
0750: 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
0760: 61 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ants..      /// 
0770: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0780: 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78   /// The file ex
0790: 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72  tension used for
07a0: 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69   dynamic link li
07b0: 62 72 61 72 69 65 73 2e 0d 0a 20 20 20 20 20 20  braries...      
07c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
07d0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
07e0: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
07f0: 72 69 6e 67 20 44 6c 6c 46 69 6c 65 45 78 74 65  ring DllFileExte
0800: 6e 73 69 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d  nsion = ".dll";.
0810: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
0820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0860: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
0870: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0880: 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65  // The file exte
0890: 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 74  nsion used for t
08a0: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
08b0: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
08c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
08d0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
08e0: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
08f0: 73 74 72 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c  string ConfigFil
0900: 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63  eExtension = ".c
0910: 6f 6e 66 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20  onfig";....     
0920: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
0970: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0980: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
0990: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
09a0: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
09b0: 74 69 6f 6e 20 66 69 6c 65 20 73 70 65 63 69 66  tion file specif
09c0: 69 63 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  ic to the..     
09d0: 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61 74 61   /// System.Data
09e0: 2e 53 51 4c 69 74 65 20 61 73 73 65 6d 62 6c 79  .SQLite assembly
09f0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
0a00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
0a10: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
0a20: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d  adonly string Xm
0a30: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
0a40: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 74 79 70  =..          typ
0a50: 65 6f 66 28 55 6e 73 61 66 65 4e 61 74 69 76 65  eof(UnsafeNative
0a60: 4d 65 74 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61  Methods).Namespa
0a70: 63 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65  ce + DllFileExte
0a80: 6e 73 69 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20  nsion +..       
0a90: 20 20 20 43 6f 6e 66 69 67 46 69 6c 65 45 78 74     ConfigFileExt
0aa0: 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 23  ension;..      #
0ab0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
0ac0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
0b10: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
0b20: 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
0b30: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0b40: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
0b50: 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20  lock is used to 
0b60: 70 72 6f 74 65 63 74 20 74 68 65 20 73 74 61 74  protect the stat
0b70: 69 63 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  ic _SQLiteNative
0b80: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d  ModuleFileName,.
0b90: 0a 20 20 20 20 20 20 2f 2f 2f 20 5f 53 51 4c 69  .      /// _SQLi
0ba0: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
0bb0: 6e 64 6c 65 2c 20 61 6e 64 20 70 72 6f 63 65 73  ndle, and proces
0bc0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
0bd0: 6c 61 74 66 6f 72 6d 73 20 66 69 65 6c 64 73 2e  latforms fields.
0be0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0bf0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
0c00: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
0c10: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
0c20: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
0c30: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
0c40: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
0c90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0ca0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
0cb0: 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73  his dictionary s
0cc0: 74 6f 72 65 73 20 74 68 65 20 6d 61 70 70 69 6e  tores the mappin
0cd0: 67 73 20 62 65 74 77 65 65 6e 20 70 72 6f 63 65  gs between proce
0ce0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
0cf0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d  e..      /// nam
0d00: 65 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 20  es and platform 
0d10: 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6d 61  names.  These ma
0d20: 70 70 69 6e 67 73 20 61 72 65 20 6e 6f 77 20 75  ppings are now u
0d30: 73 65 64 20 66 6f 72 20 74 77 6f 0d 0a 20 20 20  sed for two..   
0d40: 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73 65 73 2e     /// purposes.
0d50: 20 20 46 69 72 73 74 2c 20 74 68 65 79 20 61 72    First, they ar
0d60: 65 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  e used to determ
0d70: 69 6e 65 20 69 66 20 74 68 65 20 61 73 73 65 6d  ine if the assem
0d80: 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20  bly code..      
0d90: 2f 2f 2f 20 62 61 73 65 20 73 68 6f 75 6c 64 20  /// base should 
0da0: 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 20  be used instead 
0db0: 6f 66 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 2c  of the location,
0dc0: 20 62 61 73 65 64 20 75 70 6f 6e 20 77 68 65 74   based upon whet
0dd0: 68 65 72 20 6f 6e 65 0d 0a 20 20 20 20 20 20 2f  her one..      /
0de0: 2f 2f 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68  // or more of th
0df0: 65 20 6e 61 6d 65 64 20 73 75 62 2d 64 69 72 65  e named sub-dire
0e00: 63 74 6f 72 69 65 73 20 65 78 69 73 74 20 77 69  ctories exist wi
0e10: 74 68 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c  thin the assembl
0e20: 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f  y code..      //
0e30: 2f 20 62 61 73 65 2e 20 20 53 65 63 6f 6e 64 2c  / base.  Second,
0e40: 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20 74   they are used t
0e50: 6f 20 61 73 73 69 73 74 20 69 6e 20 6c 6f 61 64  o assist in load
0e60: 69 6e 67 20 74 68 65 20 61 70 70 72 6f 70 72 69  ing the appropri
0e70: 61 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  ate..      /// S
0e80: 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73  QLite interop as
0e90: 73 65 6d 62 6c 79 20 69 6e 74 6f 20 74 68 65 20  sembly into the 
0ea0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e  current process.
0eb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0ec0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
0ed0: 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69 63  ivate static Dic
0ee0: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
0ef0: 73 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73 6f  string> processo
0f00: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
0f10: 74 66 6f 72 6d 73 3b 0d 0a 20 20 20 20 20 20 23  tforms;..      #
0f20: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
0f30: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
0f80: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0f90: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72  >..      /// For
0fa0: 20 6e 6f 77 2c 20 74 68 69 73 20 6d 65 74 68 6f   now, this metho
0fb0: 64 20 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74  d simply calls t
0fc0: 68 65 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65  he Initialize me
0fd0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  thod...      ///
0fe0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0ff0: 20 20 20 73 74 61 74 69 63 20 55 6e 73 61 66 65     static Unsafe
1000: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 28 29 0d  NativeMethods().
1010: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
1020: 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 28 29      Initialize()
1030: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
1040: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
1090: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
10a0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
10b0: 74 65 6d 70 74 73 20 74 6f 20 69 6e 69 74 69 61  tempts to initia
10c0: 6c 69 7a 65 20 74 68 69 73 20 63 6c 61 73 73 20  lize this class 
10d0: 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74  by pre-loading t
10e0: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
10f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72  ..      /// libr
1100: 61 72 79 20 66 6f 72 20 74 68 65 20 70 72 6f 63  ary for the proc
1110: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
1120: 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  re of the curren
1130: 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20  t process...    
1140: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1150: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
1160: 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69   static void Ini
1170: 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20  tialize()..     
1180: 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53   {..#if SQLITE_S
1190: 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49  TANDARD || USE_I
11a0: 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c  NTEROP_DLL || PL
11b0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11c0: 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45  AMEWORK..#if PRE
11d0: 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
11e0: 41 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ARY..          /
11f0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
1200: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 4e 6f  NOTE: If the "No
1210: 5f 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 20  _PreLoadSQLite" 
1220: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
1230: 61 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f 0d  able is set (to.
1240: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
1250: 20 20 20 20 61 6e 79 74 68 69 6e 67 29 2c 20 73      anything), s
1260: 6b 69 70 20 61 6c 6c 20 6f 75 72 20 73 70 65 63  kip all our spec
1270: 69 61 6c 20 63 6f 64 65 20 61 6e 64 20 73 69 6d  ial code and sim
1280: 70 6c 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20 20  ply return...   
1290: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
12a0: 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74 74       if (GetSett
12b0: 69 6e 67 56 61 6c 75 65 28 22 4e 6f 5f 50 72 65  ingValue("No_Pre
12c0: 4c 6f 61 64 53 51 4c 69 74 65 22 2c 20 6e 75 6c  LoadSQLite", nul
12d0: 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  l) != null)..   
12e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12f0: 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64  n;..#endif..#end
1300: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
1310: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
1320: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
1330: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1340: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1350: 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b      // TODO: Mak
1360: 65 20 73 75 72 65 20 74 68 69 73 20 6c 69 73 74  e sure this list
1370: 20 69 73 20 75 70 64 61 74 65 64 20 69 66 20 74   is updated if t
1380: 68 65 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20  he supported..  
1390: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
13a0: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61       processor a
13b0: 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65  rchitecture name
13c0: 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72  s and/or platfor
13d0: 6d 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20  m names..       
13e0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
13f0: 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20  changes...      
1400: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1410: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
1420: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
1430: 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20  urePlatforms == 
1440: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1450: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1460: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1480: 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20  // NOTE: Create 
1490: 74 68 65 20 6d 61 70 20 6f 66 20 70 72 6f 63 65  the map of proce
14a0: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
14b0: 65 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20  e names..       
14c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
14d0: 20 20 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20      to platform 
14e0: 6e 61 6d 65 73 20 75 73 69 6e 67 20 61 20 63 61  names using a ca
14f0: 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73  se-insensitive s
1500: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20  tring..         
1510: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1520: 20 20 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20    comparer...   
1530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1540: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1550: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
1560: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
1570: 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  rms =..         
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
1590: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
15a0: 6e 67 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20  ng, string>(..  
15b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c0: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
15d0: 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67  mparer.OrdinalIg
15e0: 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20  noreCase);....  
15f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1600: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1610: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
1620: 65 74 75 70 20 74 68 65 20 6c 69 73 74 20 6f 66  etup the list of
1630: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20   platform names 
1640: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d  associated with.
1650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1660: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
1670: 73 75 70 70 6f 72 74 65 64 20 70 72 6f 63 65 73  supported proces
1680: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1690: 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
16a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
16b0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
16c0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
16d0: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
16e0: 78 38 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d  x86", "Win32");.
16f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1700: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
1710: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
1720: 73 2e 41 64 64 28 22 41 4d 44 36 34 22 2c 20 22  s.Add("AMD64", "
1730: 78 36 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  x64");..        
1740: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
1750: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
1760: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 49 41  latforms.Add("IA
1770: 36 34 22 2c 20 22 49 74 61 6e 69 75 6d 22 29 3b  64", "Itanium");
1780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1790: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
17a0: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
17b0: 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c 20 22 57  ms.Add("ARM", "W
17c0: 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20 20 20 20  inCE");..       
17d0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20         }....#if 
17e0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20  SQLITE_STANDARD 
17f0: 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  || USE_INTEROP_D
1800: 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43  LL || PLATFORM_C
1810: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1820: 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54  .#if PRELOAD_NAT
1830: 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20  IVE_LIBRARY..   
1840: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1850: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1860: 42 55 47 42 55 47 3a 20 57 68 61 74 20 61 62 6f  BUGBUG: What abo
1870: 75 74 20 6f 74 68 65 72 20 61 70 70 6c 69 63 61  ut other applica
1880: 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20  tion domains?.. 
1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
18a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
18b0: 66 20 28 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  f (_SQLiteNative
18c0: 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 3d 20  ModuleHandle == 
18d0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
18e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
18f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1900: 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65   string baseDire
1910: 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  ctory = null;.. 
1920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1930: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
1940: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
1950: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
1960: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47             /* IG
1970: 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  NORED */..      
1980: 20 20 20 20 20 20 20 20 20 20 20 20 53 65 61 72              Sear
1990: 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d  chForDirectory(.
19a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19b0: 20 20 20 20 20 20 20 72 65 66 20 62 61 73 65 44         ref baseD
19c0: 69 72 65 63 74 6f 72 79 2c 20 72 65 66 20 70 72  irectory, ref pr
19d0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
19e0: 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ure);....       
19f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a10: 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
1a20: 74 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74 68  t to pre-load th
1a30: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
1a40: 62 72 61 72 79 20 28 6f 72 0d 0a 20 20 20 20 20  brary (or..     
1a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1a60: 20 20 20 20 20 20 69 6e 74 65 72 6f 70 20 61 73        interop as
1a70: 73 65 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f 72  sembly) and stor
1a80: 65 20 62 6f 74 68 20 74 68 65 20 66 69 6c 65 20  e both the file 
1a90: 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  name..          
1aa0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1ab0: 20 61 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64 75   and native modu
1ac0: 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c 61  le handle for la
1ad0: 74 65 72 20 75 73 61 67 65 2e 0d 0a 20 20 20 20  ter usage...    
1ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1af0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b00: 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a      /* IGNORED *
1b10: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1b20: 20 20 20 20 20 50 72 65 4c 6f 61 64 53 51 4c 69       PreLoadSQLi
1b30: 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20  teDll(..        
1b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61                ba
1b50: 73 65 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f  seDirectory, pro
1b60: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1b70: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
1b80: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f             ref _
1b90: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1ba0: 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20  leFileName,..   
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc0: 20 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61     ref _SQLiteNa
1bd0: 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
1be0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1bf0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e    }..#endif..#en
1c00: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
1c10: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
1c20: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 20 20  ////////////..  
1c70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1c80: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
1c90: 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
1ca0: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
1cb0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
1cc0: 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c   for the assembl
1cd0: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  y..      /// con
1ce0: 74 61 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61  taining the mana
1cf0: 67 65 64 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  ged System.Data.
1d00: 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74  SQLite component
1d10: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
1d20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1d30: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1d40: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c       /// The XML
1d50: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
1d60: 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75  ile name -OR- nu
1d70: 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  ll if it cannot 
1d80: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20  be determined.. 
1d90: 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73       /// or does
1da0: 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20 20   not exist...   
1db0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1dc0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
1dd0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
1de0: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
1df0: 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ame()..      {..
1e00: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1e10: 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
1e20: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
1e30: 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21  leName;....#if !
1e40: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e50: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1e60: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d       directory =
1e70: 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
1e80: 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72  ntDomain.BaseDir
1e90: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
1ea0: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 50 61     fileName = Pa
1eb0: 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63  th.Combine(direc
1ec0: 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
1ed0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
1ee0: 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
1ef0: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
1f00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f10: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
1f20: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
1f30: 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
1f40: 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69   = GetAssemblyDi
1f50: 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20  rectory();..    
1f60: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
1f70: 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69   Path.Combine(di
1f80: 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66  rectory, XmlConf
1f90: 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  igFileName);....
1fa0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
1fb0: 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
1fc0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
1fd0: 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e      return fileN
1fe0: 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
1ff0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
2000: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2010: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
2060: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2070: 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
2080: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
2090: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
20a0: 73 70 65 63 69 66 69 65 64 20 73 65 74 74 69 6e  specified settin
20b0: 67 2c 20 75 73 69 6e 67 20 74 68 65 20 58 4d 4c  g, using the XML
20c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66  ..      /// conf
20d0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 61  iguration file a
20e0: 6e 64 2f 6f 72 20 74 68 65 20 65 6e 76 69 72 6f  nd/or the enviro
20f0: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20  nment variables 
2100: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 0d  for the current.
2110: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65  .      /// proce
2120: 73 73 20 61 6e 64 2f 6f 72 20 74 68 65 20 63 75  ss and/or the cu
2130: 72 72 65 6e 74 20 73 79 73 74 65 6d 2c 20 77 68  rrent system, wh
2140: 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  en available... 
2150: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2160: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
2170: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
2180: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
2190: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65  e name of the se
21a0: 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f  tting...      //
21b0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21c0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
21d0: 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20  e="default">..  
21e0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
21f0: 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64  e to be returned
2200: 20 69 66 20 74 68 65 20 73 65 74 74 69 6e 67 20   if the setting 
2210: 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74  has not been set
2220: 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20   explicitly..   
2230: 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74     /// or cannot
2240: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
2250: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
2260: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
2270: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2280: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66  /// The value of
2290: 20 74 68 65 20 73 65 74 74 69 6e 67 20 2d 4f 52   the setting -OR
22a0: 2d 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  - the default va
22b0: 6c 75 65 20 73 70 65 63 69 66 69 65 64 20 62 79  lue specified by
22c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
22d0: 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61  amref name="defa
22e0: 75 6c 74 22 20 2f 3e 20 69 66 20 69 74 20 68 61  ult" /> if it ha
22f0: 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65  s not been set e
2300: 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20  xplicitly or..  
2310: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
2320: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 20 20 42  e determined.  B
2330: 79 20 64 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72  y default, all r
2340: 65 66 65 72 65 6e 63 65 73 20 74 6f 20 65 78 69  eferences to exi
2350: 73 74 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  sting..      ///
2360: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
2370: 69 61 62 6c 65 73 20 77 69 6c 6c 20 62 65 20 65  iables will be e
2380: 78 70 61 6e 64 65 64 20 74 6f 20 74 68 65 69 72  xpanded to their
2390: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 76   corresponding v
23a0: 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  alues..      ///
23b0: 20 77 69 74 68 69 6e 20 74 68 65 20 76 61 6c 75   within the valu
23c0: 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64  e to be returned
23d0: 20 75 6e 6c 65 73 73 20 65 69 74 68 65 72 20 74   unless either t
23e0: 68 65 20 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f  he "No_Expand" o
23f0: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f  r..      /// "No
2400: 5f 45 78 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65  _Expand_<paramre
2410: 66 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e  f name="name" />
2420: 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  " environment va
2430: 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 5b 74  riable is set [t
2440: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79  o..      /// any
2450: 74 68 69 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f  thing]...      /
2460: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2470: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
2480: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 53  atic string GetS
2490: 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
24a0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
24b0: 61 6d 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f  ame,    /* in */
24c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
24d0: 6e 67 20 40 64 65 66 61 75 6c 74 20 2f 2a 20 69  ng @default /* i
24e0: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
24f0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
2500: 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20 3d        if (name =
2510: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2520: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64         return @d
2530: 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20  efault;....     
2540: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
2550: 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66  e = null;....#if
2560: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2570: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2580: 20 20 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61         bool expa
2590: 6e 64 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  nd = true;....  
25a0: 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69          if (Envi
25b0: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
25c0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 22  onmentVariable("
25d0: 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d 20 6e  No_Expand") != n
25e0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
25f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2600: 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b   expand = false;
2610: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
2620: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
2630: 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65   (Environment.Ge
2640: 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
2650: 61 62 6c 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  able(String.Form
2660: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2670: 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e         "No_Expan
2680: 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21  d_{0}", name)) !
2690: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
26a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26b0: 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c      expand = fal
26c0: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
26d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61  ....          va
26e0: 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  lue = Environmen
26f0: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
2700: 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d  Variable(name);.
2710: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
2720: 28 65 78 70 61 6e 64 20 26 26 20 21 53 74 72 69  (expand && !Stri
2730: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
2740: 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  (value))..      
2750: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
2760: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61  Environment.Expa
2770: 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  ndEnvironmentVar
2780: 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a  iables(value);..
2790: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
27a0: 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  value != null)..
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
27c0: 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6e  turn value;..#en
27d0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
27e0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
27f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2800: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
2810: 20 3d 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46   = GetXmlConfigF
2820: 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20  ileName();....  
2830: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2840: 66 69 6c 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  fileName == null
2850: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2860: 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66       return @def
2870: 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ault;....       
2880: 20 20 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65         XmlDocume
2890: 6e 74 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65  nt document = ne
28a0: 77 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b  w XmlDocument();
28b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28c0: 20 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28    document.Load(
28d0: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
28e0: 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45              XmlE
28f0: 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74 20 3d  lement element =
2900: 20 64 6f 63 75 6d 65 6e 74 2e 53 65 6c 65 63 74   document.Select
2910: 53 69 6e 67 6c 65 4e 6f 64 65 28 53 74 72 69 6e  SingleNode(Strin
2920: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
2930: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f 63               "/c
2940: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61 70 70  onfiguration/app
2950: 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40 6b 65  Settings/add[@ke
2960: 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65 29  y='{0}']", name)
2970: 29 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ) as..          
2980: 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65          XmlEleme
2990: 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  nt;....         
29a0: 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74       if (element
29b0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
29c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
29e0: 20 28 65 6c 65 6d 65 6e 74 2e 48 61 73 41 74 74   (element.HasAtt
29f0: 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29 29  ribute("value"))
2a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a10: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
2a20: 65 6c 65 6d 65 6e 74 2e 47 65 74 41 74 74 72 69  element.GetAttri
2a30: 62 75 74 65 28 22 76 61 6c 75 65 22 29 3b 0d 0a  bute("value");..
2a40: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2a50: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a70: 20 20 20 20 69 66 20 28 65 78 70 61 6e 64 20 26      if (expand &
2a80: 26 20 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  & !String.IsNull
2a90: 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d  OrEmpty(value)).
2aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ab0: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45         value = E
2ac0: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e  nvironment.Expan
2ad0: 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  dEnvironmentVari
2ae0: 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a 23  ables(value);..#
2af0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
2b00: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
2b10: 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  alue != null).. 
2b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b30: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
2b40: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2b50: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
2b60: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
2b70: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
2b80: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
2b90: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
2ba0: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
2bb0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
2bc0: 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
2bd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
2be0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
2bf0: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
2c00: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
2c10: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2c20: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c30: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
2c40: 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
2c50: 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
2c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c70: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
2c80: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
2c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca0: 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
2cb0: 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61  ry pre-loader fa
2cc0: 69 6c 65 64 20 74 6f 20 67 65 74 20 73 65 74 74  iled to get sett
2cd0: 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ing " +..       
2ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2cf0: 5c 22 7b 30 7d 5c 22 20 76 61 6c 75 65 3a 20 7b  \"{0}\" value: {
2d00: 31 7d 22 2c 20 6e 61 6d 65 2c 20 65 29 29 3b 20  1}", name, e)); 
2d10: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
2d20: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2d30: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2d40: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
2d50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2d60: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
2d70: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
2d80: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
2d90: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2da0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
2db0: 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20  default;..      
2dc0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
2dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e10: 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2e20: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2e30: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72  MEWORK..      pr
2e40: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
2e50: 69 6e 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67  ing ListToString
2e60: 28 49 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c  (IList<string> l
2e70: 69 73 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ist)..      {.. 
2e80: 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 73           if (lis
2e90: 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t == null)..    
2ea0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2eb0: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
2ec0: 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65      StringBuilde
2ed0: 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53  r result = new S
2ee0: 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d  tringBuilder();.
2ef0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
2f00: 65 61 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65  each (string ele
2f10: 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20  ment in list).. 
2f20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f30: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c            if (el
2f40: 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ement == null)..
2f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f60: 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20    continue;.... 
2f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2f80: 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e  (result.Length >
2f90: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
2fa0: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70         result.Ap
2fb0: 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20  pend(' ');....  
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
2fd0: 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e  lt.Append(elemen
2fe0: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  t);..          }
2ff0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
3000: 74 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74  turn result.ToSt
3010: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d  ring();..      }
3020: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
3030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3070: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
3080: 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
3090: 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63  CheckForArchitec
30a0: 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d  turesAndPlatform
30b0: 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  s(..          st
30c0: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d  ring directory,.
30d0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 4c  .          ref L
30e0: 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63  ist<string> matc
30f0: 68 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29  hes..          )
3100: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
3110: 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20       int result 
3120: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
3130: 20 20 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d    if (matches ==
3140: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
3150: 20 20 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20        matches = 
3160: 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  new List<string>
3170: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
3180: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
3190: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
31a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31b0: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
31c0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
31d0: 65 63 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20  ectory) &&..    
31e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
31f0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
3200: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d  turePlatforms !=
3210: 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
3220: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3230: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65              fore
3240: 61 63 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69  ach (KeyValuePai
3250: 72 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  r<string, string
3260: 3e 20 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20  > pair..        
3270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3280: 20 20 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72      in processor
3290: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
32a0: 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20  forms)..        
32b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32d0: 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79     if (Directory
32e0: 2e 45 78 69 73 74 73 28 50 61 74 68 2e 43 6f 6d  .Exists(Path.Com
32f0: 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 20  bine(directory, 
3300: 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20  pair.Key)))..   
3310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3320: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3340: 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61 69 72  matches.Add(pair
3350: 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  .Key);..        
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3370: 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20    result++;..   
3380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3390: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
33a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
33b0: 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70 61 69  ring value = pai
33c0: 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  r.Value;....    
33d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e0: 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
33f0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3410: 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
3420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3430: 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79     if (Directory
3440: 2e 45 78 69 73 74 73 28 50 61 74 68 2e 43 6f 6d  .Exists(Path.Com
3450: 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 20  bine(directory, 
3460: 76 61 6c 75 65 29 29 29 0d 0a 20 20 20 20 20 20  value)))..      
3470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3480: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3490: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74               mat
34a0: 63 68 65 73 2e 41 64 64 28 76 61 6c 75 65 29 3b  ches.Add(value);
34b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
34d0: 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20  lt++;..         
34e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
34f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3500: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
3510: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
3520: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
3530: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
3540: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3560: 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
35a0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
35b0: 63 20 62 6f 6f 6c 20 43 68 65 63 6b 41 73 73 65  c bool CheckAsse
35c0: 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 0d 0a 20  mblyCodeBase(.. 
35d0: 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
35e0: 79 20 61 73 73 65 6d 62 6c 79 2c 0d 0a 20 20 20  y assembly,..   
35f0: 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
3600: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
3610: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
3620: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
3630: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
3640: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3650: 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  assembly == null
3660: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3670: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
3680: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
3690: 20 20 20 20 73 74 72 69 6e 67 20 63 6f 64 65 42      string codeB
36a0: 61 73 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 43  ase = assembly.C
36b0: 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a 20 20 20 20  odeBase;....    
36c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
36d0: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
36e0: 74 79 28 63 6f 64 65 42 61 73 65 29 29 0d 0a 20  ty(codeBase)).. 
36f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3700: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
3710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3720: 55 72 69 20 75 72 69 20 3d 20 6e 65 77 20 55 72  Uri uri = new Ur
3730: 69 28 63 6f 64 65 42 61 73 65 29 3b 0d 0a 20 20  i(codeBase);..  
3740: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
3750: 6e 67 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65  ng localFileName
3760: 20 3d 20 75 72 69 2e 4c 6f 63 61 6c 50 61 74 68   = uri.LocalPath
3770: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3780: 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
3790: 73 74 73 28 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d  sts(localFileNam
37a0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
37b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
37c0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
37d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
37e0: 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65  ectory = Path.Ge
37f0: 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 0d  tDirectoryName(.
3800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3810: 20 20 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65     localFileName
3820: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
3830: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3840: 73 74 72 69 6e 67 20 78 6d 6c 43 6f 6e 66 69 67  string xmlConfig
3850: 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  FileName = Path.
3860: 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20  Combine(..      
3870: 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65              dire
3880: 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67  ctory, XmlConfig
3890: 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
38b0: 46 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43  File.Exists(xmlC
38c0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d  onfigFileName)).
38d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
38e0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
38f0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
3900: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
3910: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
3920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3930: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3940: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
3950: 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
3960: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
3970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3980: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
3990: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
39a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39b0: 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
39c0: 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
39d0: 61 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20 63  ader found XML c
39e0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
39f0: 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
3a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a10: 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20   "via code base 
3a20: 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
3a30: 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
3a40: 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20  : \"{0}\"",..   
3a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a60: 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69 67         xmlConfig
3a70: 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74  FileName)); /* t
3a80: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
3a90: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
3aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ab0: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
3ac0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ae0: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
3af0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b00: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
3b10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3b20: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f     fileName = lo
3b30: 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  calFileName;..  
3b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b50: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
3b60: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
3b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c  .              L
3b80: 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63  ist<string> matc
3b90: 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  hes = null;.... 
3ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
3bb0: 28 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65  (CheckForArchite
3bc0: 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72  cturesAndPlatfor
3bd0: 6d 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72 65  ms(directory, re
3be0: 66 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29 0d  f matches) > 0).
3bf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
3c00: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
3c10: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
3c20: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
3c30: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
3c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3c60: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
3c70: 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
3c80: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
3c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ca0: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
3cb0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
3cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cd0: 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
3ce0: 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
3cf0: 61 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76  ader found nativ
3d00: 65 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65  e sub-directorie
3d10: 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  s " +..         
3d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d30: 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20   "via code base 
3d40: 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
3d50: 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
3d60: 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20  : \"{0}\"",..   
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d80: 20 20 20 20 20 20 20 4c 69 73 74 54 6f 53 74 72         ListToStr
3d90: 69 6e 67 28 6d 61 74 63 68 65 73 29 29 29 3b 20  ing(matches))); 
3da0: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
3db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
3dc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3dd0: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
3de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
3df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e00: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
3e10: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
3e20: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
3e30: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
3e40: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
3e50: 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b  = localFileName;
3e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3e70: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
3e80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3e90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
3ea0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
3eb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
3ec0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
3ed0: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
3ee0: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  ED..          ca
3ef0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
3f00: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
3f10: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
3f20: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
3f30: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
3f40: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
3f50: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
3f60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
3f70: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
3f80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3f90: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
3fa0: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
3fb0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
3fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
3fd0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
3fe0: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
3ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4000: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
4010: 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
4020: 64 20 74 6f 20 63 68 65 63 6b 20 63 6f 64 65 20  d to check code 
4030: 62 61 73 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  base " +..      
4040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4050: 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65  "for currently e
4060: 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
4070: 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a  y: {0}", e)); /*
4080: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
4090: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
40a0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
40b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
40c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
40d0: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
40e0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
40f0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
4100: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
4110: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
4120: 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  se;..      }..#e
4130: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
4140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4180: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
4190: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
41a0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
41b0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
41c0: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
41d0: 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
41e0: 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20  ntly being..    
41f0: 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d    /// executed..
4200: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
4210: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
4220: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
4230: 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74    /// The direct
4240: 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65  ory for the asse
4250: 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
4260: 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f  eing executed -O
4270: 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20  R- null if..    
4280: 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20    /// it cannot 
4290: 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
42a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
42b0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
42c0: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
42d0: 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  g GetAssemblyDir
42e0: 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
42f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  {..          try
4300: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
4310: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73               Ass
4320: 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d  embly assembly =
4330: 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65   Assembly.GetExe
4340: 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29  cutingAssembly()
4350: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
4360: 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20     if (assembly 
4370: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
4380: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4390: 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
43a0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
43b0: 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c   fileName = null
43c0: 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  ;....#if PLATFOR
43d0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
43e0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
43f0: 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 61    AssemblyName a
4400: 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61 73  ssemblyName = as
4410: 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28 29  sembly.GetName()
4420: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
4430: 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e     if (assemblyN
4440: 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
4450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4460: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
4470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
4480: 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c  leName = assembl
4490: 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73 65 3b 0d  yName.CodeBase;.
44a0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
44b0: 20 20 20 20 20 20 69 66 20 28 21 43 68 65 63 6b        if (!Check
44c0: 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65  AssemblyCodeBase
44d0: 28 61 73 73 65 6d 62 6c 79 2c 20 72 65 66 20 66  (assembly, ref f
44e0: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
44f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
4500: 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79  eName = assembly
4510: 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64  .Location;..#end
4520: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
4530: 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
4540: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
4550: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
4560: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4570: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
4580: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
4590: 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68  directory = Path
45a0: 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d  .GetDirectoryNam
45b0: 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  e(fileName);....
45c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
45d0: 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
45e0: 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79  rEmpty(directory
45f0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
4600: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
4610: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
4620: 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63      return direc
4630: 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
4640: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
4650: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
4660: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
4670: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
4680: 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
4690: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
46a0: 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
46b0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  if..          {.
46c0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
46d0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
46e0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
46f0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
4700: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4710: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
4720: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
4730: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
4740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4750: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
4760: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
4770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4780: 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
4790: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
47a0: 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20 64 69  failed to get di
47b0: 72 65 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20 20  rectory " +..   
47c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47d0: 20 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c     "for currentl
47e0: 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
47f0: 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b  mbly: {0}", e));
4800: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
4810: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
4820: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
4830: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
4840: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4850: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
4860: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
4870: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
4880: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
4890: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
48a0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  null;..      }..
48b0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
48c0: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4910: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
4920: 67 69 6f 6e 20 4f 70 74 69 6f 6e 61 6c 20 4e 61  gion Optional Na
4930: 74 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72  tive SQLite Libr
4940: 61 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20  ary Pre-Loading 
4950: 43 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  Code..      //..
4960: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
4970: 66 20 77 65 20 61 72 65 20 6c 6f 6f 6b 69 6e 67  f we are looking
4980: 20 66 6f 72 20 74 68 65 20 73 74 61 6e 64 61 72   for the standar
4990: 64 20 53 51 4c 69 74 65 20 44 4c 4c 20 28 22 73  d SQLite DLL ("s
49a0: 71 6c 69 74 65 33 2e 64 6c 6c 22 29 2c 0d 0a 20  qlite3.dll"),.. 
49b0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
49c0: 65 20 69 6e 74 65 72 6f 70 20 44 4c 4c 20 28 22  e interop DLL ("
49d0: 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64  SQLite.Interop.d
49e0: 6c 6c 22 29 2c 20 6f 72 20 77 65 20 61 72 65 20  ll"), or we are 
49f0: 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 0d 0a  running on the..
4a00: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 2e        //       .
4a10: 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
4a20: 65 77 6f 72 6b 2c 20 77 65 20 73 68 6f 75 6c 64  ework, we should
4a30: 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20 63 6f   include this co
4a40: 64 65 20 28 6f 6e 6c 79 20 69 66 20 74 68 65 0d  de (only if the.
4a50: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
4a60: 66 65 61 74 75 72 65 20 68 61 73 20 61 63 74 75  feature has actu
4a70: 61 6c 6c 79 20 62 65 65 6e 20 65 6e 61 62 6c 65  ally been enable
4a80: 64 29 2e 20 20 54 68 69 73 20 63 6f 64 65 20 77  d).  This code w
4a90: 6f 75 6c 64 20 62 65 20 74 6f 74 61 6c 6c 79 0d  ould be totally.
4aa0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
4ab0: 72 65 64 75 6e 64 61 6e 74 20 69 66 20 74 68 69  redundant if thi
4ac0: 73 20 6d 6f 64 75 6c 65 20 68 61 73 20 62 65 65  s module has bee
4ad0: 6e 20 62 75 6e 64 6c 65 64 20 69 6e 74 6f 20 74  n bundled into t
4ae0: 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 0d 0a 20  he mixed-mode.. 
4af0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73       //       as
4b00: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
4b10: 2f 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  /..#if SQLITE_ST
4b20: 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e  ANDARD || USE_IN
4b30: 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41  TEROP_DLL || PLA
4b40: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
4b50: 4d 45 57 4f 52 4b 0d 0a 0d 0a 20 20 20 20 20 20  MEWORK....      
4b60: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54  //..      // NOT
4b70: 45 3a 20 4f 6e 6c 79 20 63 6f 6d 70 69 6c 65 20  E: Only compile 
4b80: 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  in the native li
4b90: 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 20 63  brary pre-load c
4ba0: 6f 64 65 20 69 66 20 74 68 65 20 66 65 61 74 75  ode if the featu
4bb0: 72 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  re..      //    
4bc0: 20 20 20 68 61 73 20 62 65 65 6e 20 65 6e 61 62     has been enab
4bd0: 6c 65 64 20 66 6f 72 20 74 68 69 73 20 62 75 69  led for this bui
4be0: 6c 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23  ld...      //..#
4bf0: 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56  if PRELOAD_NATIV
4c00: 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20  E_LIBRARY..     
4c10: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4c20: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
4c30: 6d 65 20 6f 66 20 74 68 65 20 65 6e 76 69 72 6f  me of the enviro
4c40: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 63  nment variable c
4c50: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 70 72  ontaining the pr
4c60: 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f  ocessor..      /
4c70: 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20  // architecture 
4c80: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
4c90: 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f  rocess...      /
4ca0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
4cb0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
4cc0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
4cd0: 69 6e 67 20 50 52 4f 43 45 53 53 4f 52 5f 41 52  ing PROCESSOR_AR
4ce0: 43 48 49 54 45 43 54 55 52 45 20 3d 0d 0a 20 20  CHITECTURE =..  
4cf0: 20 20 20 20 20 20 20 20 22 50 52 4f 43 45 53 53          "PROCESS
4d00: 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 22  OR_ARCHITECTURE"
4d10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
4d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4d60: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
4d70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
4d80: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
4d90: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
4da0: 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65 20   that wraps the 
4db0: 6e 61 74 69 76 65 20 57 69 6e 33 32 20 4c 6f 61  native Win32 Loa
4dc0: 64 4c 69 62 72 61 72 79 0d 0a 20 20 20 20 20 20  dLibrary..      
4dd0: 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53  /// function.  S
4de0: 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75  ee the MSDN docu
4df0: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
4e00: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
4e10: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
4e20: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
4e30: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4e40: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4e50: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
4e60: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
4e70: 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75  ame of the execu
4e80: 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a  table library...
4e90: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
4ea0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
4eb0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
4ec0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
4ed0: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
4ee0: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
4ef0: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
4f00: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
4f10: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66   </returns>..#if
4f20: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
4f30: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
4f40: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b     [DllImport("k
4f50: 65 72 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65  ernel32",..#else
4f60: 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ..      [DllImpo
4f70: 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23  rt("coredll",..#
4f80: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
4f90: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
4fa0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
4fb0: 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 2c 20 43  ention.Winapi, C
4fc0: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
4fd0: 2e 41 75 74 6f 2c 0d 0a 23 69 66 20 21 50 4c 41  .Auto,..#if !PLA
4fe0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
4ff0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
5000: 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67    BestFitMapping
5010: 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f   = false, ThrowO
5020: 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20  nUnmappableChar 
5030: 3d 20 74 72 75 65 2c 0d 0a 23 65 6e 64 69 66 0d  = true,..#endif.
5040: 0a 20 20 20 20 20 20 20 20 20 20 53 65 74 4c 61  .          SetLa
5050: 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d  stError = true)]
5060: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
5070: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
5080: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
5090: 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
50a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  );....      ////
50b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50f0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
5100: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
5110: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f  MEWORK..      //
5120: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5130: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
5140: 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  he P/Invoke meth
5150: 6f 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68  od that wraps th
5160: 65 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 47  e native Win32 G
5170: 65 74 53 79 73 74 65 6d 49 6e 66 6f 0d 0a 20 20  etSystemInfo..  
5180: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
5190: 2e 20 20 53 65 65 20 74 68 65 20 4d 53 44 4e 20  .  See the MSDN 
51a0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
51b0: 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f  r full details o
51c0: 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20  n what it..     
51d0: 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20   /// does...    
51e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
51f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
5200: 61 6d 20 6e 61 6d 65 3d 22 73 79 73 74 65 6d 49  am name="systemI
5210: 6e 66 6f 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  nfo">..      ///
5220: 20 54 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f   The system info
5230: 72 6d 61 74 69 6f 6e 20 73 74 72 75 63 74 75 72  rmation structur
5240: 65 20 74 6f 20 62 65 20 66 69 6c 6c 65 64 20 69  e to be filled i
5250: 6e 20 62 79 20 74 68 65 20 66 75 6e 63 74 69 6f  n by the functio
5260: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
5270: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 5b 44  param>..      [D
5280: 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72 65 64 6c  llImport("coredl
5290: 6c 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  l", CallingConve
52a0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
52b0: 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69  onvention.Winapi
52c0: 29 5d 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  )]..      privat
52d0: 65 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  e static extern 
52e0: 76 6f 69 64 20 47 65 74 53 79 73 74 65 6d 49 6e  void GetSystemIn
52f0: 66 6f 28 6f 75 74 20 53 59 53 54 45 4d 5f 49 4e  fo(out SYSTEM_IN
5300: 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d  FO systemInfo);.
5310: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
5320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5360: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
5370: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5380: 2f 2f 20 54 68 69 73 20 65 6e 75 6d 65 72 61 74  // This enumerat
5390: 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 20 74 68 65  ion contains the
53a0: 20 70 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73   possible values
53b0: 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73   for the process
53c0: 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  or..      /// ar
53d0: 63 68 69 74 65 63 74 75 72 65 20 66 69 65 6c 64  chitecture field
53e0: 20 6f 66 20 74 68 65 20 73 79 73 74 65 6d 20 69   of the system i
53f0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75 63  nformation struc
5400: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ture...      ///
5410: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5420: 20 20 20 70 72 69 76 61 74 65 20 65 6e 75 6d 20     private enum 
5430: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
5440: 63 74 75 72 65 20 3a 20 75 73 68 6f 72 74 20 2f  cture : ushort /
5450: 2a 20 43 4f 4d 50 41 54 3a 20 57 69 6e 33 32 2e  * COMPAT: Win32.
5460: 20 2a 2f 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20   */..      {..  
5470: 20 20 20 20 20 20 20 20 49 6e 74 65 6c 20 3d 20          Intel = 
5480: 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 49  0,..          MI
5490: 50 53 20 3d 20 31 2c 0d 0a 20 20 20 20 20 20 20  PS = 1,..       
54a0: 20 20 20 41 6c 70 68 61 20 3d 20 32 2c 0d 0a 20     Alpha = 2,.. 
54b0: 20 20 20 20 20 20 20 20 20 50 6f 77 65 72 50 43           PowerPC
54c0: 20 3d 20 33 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 3,..         
54d0: 20 53 48 78 20 3d 20 34 2c 0d 0a 20 20 20 20 20   SHx = 4,..     
54e0: 20 20 20 20 20 41 52 4d 20 3d 20 35 2c 0d 0a 20       ARM = 5,.. 
54f0: 20 20 20 20 20 20 20 20 20 49 41 36 34 20 3d 20           IA64 = 
5500: 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c  6,..          Al
5510: 70 68 61 36 34 20 3d 20 37 2c 0d 0a 20 20 20 20  pha64 = 7,..    
5520: 20 20 20 20 20 20 4d 53 49 4c 20 3d 20 38 2c 0d        MSIL = 8,.
5530: 0a 20 20 20 20 20 20 20 20 20 20 41 4d 44 36 34  .          AMD64
5540: 20 3d 20 39 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 9,..         
5550: 20 49 41 33 32 5f 6f 6e 5f 57 69 6e 36 34 20 3d   IA32_on_Win64 =
5560: 20 31 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20   10,..          
5570: 55 6e 6b 6e 6f 77 6e 20 3d 20 30 78 46 46 46 46  Unknown = 0xFFFF
5580: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
5590: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
55a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
55e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
55f0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
5600: 73 20 73 74 72 75 63 74 75 72 65 20 63 6f 6e 74  s structure cont
5610: 61 69 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ains information
5620: 20 61 62 6f 75 74 20 74 68 65 20 63 75 72 72 65   about the curre
5630: 6e 74 20 63 6f 6d 70 75 74 65 72 2e 20 54 68 69  nt computer. Thi
5640: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 63  s..      /// inc
5650: 6c 75 64 65 73 20 74 68 65 20 70 72 6f 63 65 73  ludes the proces
5660: 73 6f 72 20 74 79 70 65 2c 20 70 61 67 65 20 73  sor type, page s
5670: 69 7a 65 2c 20 6d 65 6d 6f 72 79 20 61 64 64 72  ize, memory addr
5680: 65 73 73 65 73 2c 20 65 74 63 2e 0d 0a 20 20 20  esses, etc...   
5690: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
56a0: 3e 0d 0a 20 20 20 20 20 20 5b 53 74 72 75 63 74  >..      [Struct
56b0: 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
56c0: 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
56d0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
56e0: 72 75 63 74 20 53 59 53 54 45 4d 5f 49 4e 46 4f  ruct SYSTEM_INFO
56f0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
5700: 20 20 20 20 20 70 75 62 6c 69 63 20 50 72 6f 63       public Proc
5710: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
5720: 65 20 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68  e wProcessorArch
5730: 69 74 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20  itecture;..     
5740: 20 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f       public usho
5750: 72 74 20 77 52 65 73 65 72 76 65 64 3b 20 2f 2a  rt wReserved; /*
5760: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
5770: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
5780: 69 6e 74 20 64 77 50 61 67 65 53 69 7a 65 3b 20  int dwPageSize; 
5790: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
57a0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
57b0: 20 49 6e 74 50 74 72 20 6c 70 4d 69 6e 69 6d 75   IntPtr lpMinimu
57c0: 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72  mApplicationAddr
57d0: 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ess; /* NOT USED
57e0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
57f0: 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c 70 4d  ublic IntPtr lpM
5800: 61 78 69 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f  aximumApplicatio
5810: 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54  nAddress; /* NOT
5820: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
5830: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
5840: 64 77 41 63 74 69 76 65 50 72 6f 63 65 73 73 6f  dwActiveProcesso
5850: 72 4d 61 73 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53  rMask; /* NOT US
5860: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
5870: 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 4e   public uint dwN
5880: 75 6d 62 65 72 4f 66 50 72 6f 63 65 73 73 6f 72  umberOfProcessor
5890: 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  s; /* NOT USED *
58a0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
58b0: 6c 69 63 20 75 69 6e 74 20 64 77 50 72 6f 63 65  lic uint dwProce
58c0: 73 73 6f 72 54 79 70 65 3b 20 2f 2a 20 4e 4f 54  ssorType; /* NOT
58d0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
58e0: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
58f0: 64 77 41 6c 6c 6f 63 61 74 69 6f 6e 47 72 61 6e  dwAllocationGran
5900: 75 6c 61 72 69 74 79 3b 20 2f 2a 20 4e 4f 54 20  ularity; /* NOT 
5910: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
5920: 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74     public ushort
5930: 20 77 50 72 6f 63 65 73 73 6f 72 4c 65 76 65 6c   wProcessorLevel
5940: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
5950: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
5960: 69 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65  ic ushort wProce
5970: 73 73 6f 72 52 65 76 69 73 69 6f 6e 3b 20 2f 2a  ssorRevision; /*
5980: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
5990: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
59a0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
59b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59f0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
5a00: 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
5a10: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5a20: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
5a30: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
5a40: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
5a50: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
5a60: 20 6c 69 62 72 61 72 79 20 6f 72 20 6e 75 6c 6c   library or null
5a70: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
5a80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
5a90: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
5aa0: 72 69 6e 67 20 5f 53 51 4c 69 74 65 4e 61 74 69  ring _SQLiteNati
5ab0: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
5ac0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
5ad0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
5b20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5b30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
5b40: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
5b50: 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74  ndle for the nat
5b60: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
5b70: 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d  ry or the value.
5b80: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74  .      /// IntPt
5b90: 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  r.Zero...      /
5ba0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5bb0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
5bc0: 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69  tic IntPtr _SQLi
5bd0: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
5be0: 6e 64 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  ndle = IntPtr.Ze
5bf0: 72 6f 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  ro;..      #endr
5c00: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
5c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c50: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
5c60: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5c70: 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68 65       /// Searche
5c80: 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  s for the native
5c90: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
5ca0: 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  in the directory
5cb0: 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
5cc0: 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65 6d     /// the assem
5cd0: 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65  bly currently be
5ce0: 69 6e 67 20 65 78 65 63 75 74 65 64 20 61 73 20  ing executed as 
5cf0: 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73 65  well as the base
5d00: 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20   directory..    
5d10: 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63 75    /// for the cu
5d20: 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
5d30: 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  n domain...     
5d40: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5d50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
5d60: 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65  m name="baseDire
5d70: 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f  ctory">..      /
5d80: 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
5d90: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
5da0: 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
5db0: 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65   to refer to the
5dc0: 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f 2f   base..      ///
5dd0: 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
5de0: 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65  ining the native
5df0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
5e00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
5e10: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
5e20: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
5e30: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
5e40: 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re">..      /// 
5e50: 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
5e60: 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c  is parameter wil
5e70: 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  l be modified to
5e80: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e 61   refer to the na
5e90: 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 66  me..      /// of
5ea0: 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20 64   the immediate d
5eb0: 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20 74  irectory (i.e. t
5ec0: 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  he offset from t
5ed0: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
5ee0: 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  y)..      /// co
5ef0: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74  ntaining the nat
5f00: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
5f10: 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
5f20: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
5f30: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
5f40: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
5f50: 20 28 73 75 63 63 65 73 73 29 20 69 66 20 74 68   (success) if th
5f60: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
5f70: 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f 75 6e  library was foun
5f80: 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20  d; otherwise,.. 
5f90: 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28 66       /// zero (f
5fa0: 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20 20  ailure)...      
5fb0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
5fc0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
5fd0: 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63 68  atic bool Search
5fe0: 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20  ForDirectory(.. 
5ff0: 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
6000: 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72  ing baseDirector
6010: 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74  y,        /* out
6020: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   */..          r
6030: 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73  ef string proces
6040: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
6050: 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
6060: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
6070: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 47  .          if (G
6080: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
6090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
60a0: 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
60b0: 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65 63  NoSearchForDirec
60c0: 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20  tory", null) != 
60d0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
60e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
60f0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20    return false; 
6100: 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d 0a  /* DISABLED */..
6110: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
6120: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6130: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
6140: 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f  Build the list o
6150: 66 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 69  f base directori
6160: 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72  es and processor
6170: 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20  /platform..     
6180: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61       //       na
6190: 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74  mes.  These list
61a0: 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74  s will be used t
61b0: 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68  o help locate th
61c0: 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
61d0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
61e0: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
61f0: 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73   (or interop ass
6200: 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f  embly) to pre-lo
6210: 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20  ad into..       
6220: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73     //       this
6230: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
6240: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
6250: 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65     string[] dire
6260: 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
6270: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
6280: 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
6290: 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ),..#if !PLATFOR
62a0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
62b0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
62c0: 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72    AppDomain.Curr
62d0: 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
62e0: 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66  rectory,..#endif
62f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a  ..          };..
6300: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
6310: 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f 72  ng[] subDirector
6320: 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  ies = {..       
6330: 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65 73         GetProces
6340: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
6350: 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ), GetPlatformNa
6360: 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  me(null)..      
6370: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
6380: 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
6390: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
63a0: 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
63b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
63c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
63d0: 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
63e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
63f0: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
6400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
6410: 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
6420: 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
6430: 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
6440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
6450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6460: 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
6470: 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
6480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6490: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
64a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
64b0: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
64c0: 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
64d0: 65 4e 61 6d 65 28 50 61 74 68 2e 43 6f 6d 62 69  eName(Path.Combi
64e0: 6e 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ne(..           
64f0: 20 20 20 20 20 20 20 20 20 20 20 50 61 74 68 2e             Path.
6500: 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72  Combine(director
6510: 79 2c 20 73 75 62 44 69 72 65 63 74 6f 72 79 29  y, subDirectory)
6520: 2c 20 53 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d  , SQLITE_DLL));.
6530: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6540: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
6550: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
6560: 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69 74  TE: If the SQLit
6570: 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73 74  e DLL file exist
6580: 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65 73  s, return succes
6590: 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
65a0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 50        //       P
65b0: 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69 6e  rior to returnin
65c0: 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65 20  g, set the base 
65d0: 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a 20  directory and.. 
65e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
65f0: 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73   //       proces
6600: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
6610: 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65 20   to reflect the 
6620: 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  location..      
6630: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
6640: 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77 61       where it wa
6650: 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20  s found...      
6660: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
6670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6680: 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
6690: 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
66c0: 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72           baseDir
66d0: 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f  ectory = directo
66e0: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
66f0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
6700: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
6710: 20 3d 20 73 75 62 44 69 72 65 63 74 6f 72 79 3b   = subDirectory;
6720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6730: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
6740: 72 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f  rue; /* FOUND */
6750: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6760: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
6770: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
6780: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
6790: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f   return false; /
67a0: 2a 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a  * NOT FOUND */..
67b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
67c0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
67d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
6810: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6820: 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
6830: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
6840: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
6850: 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  y of the current
6860: 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20   application..  
6870: 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d      /// domain..
6880: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
6890: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
68a0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
68b0: 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64    /// The base d
68c0: 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65  irectory for the
68d0: 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
68e0: 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d  tion domain -OR-
68f0: 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20   null if it..   
6900: 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65     /// cannot be
6910: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
6920: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
6930: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
6940: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
6950: 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79  GetBaseDirectory
6960: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
6970: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6980: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
6990: 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
69a0: 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72  ite_BaseDirector
69b0: 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  y" environment v
69c0: 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  ariable..       
69d0: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 73     //       is s
69e0: 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61  et, use it verba
69f0: 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73 65  tim for the base
6a00: 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20   directory...   
6a10: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6a20: 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
6a30: 63 74 6f 72 79 20 3d 20 47 65 74 53 65 74 74 69  ctory = GetSetti
6a40: 6e 67 56 61 6c 75 65 28 22 50 72 65 4c 6f 61 64  ngValue("PreLoad
6a50: 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63  SQLite_BaseDirec
6a60: 74 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20 20 20  tory",..        
6a70: 20 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a        null);....
6a80: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
6a90: 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29  rectory != null)
6aa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6ab0: 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
6ac0: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
6ad0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
6ae0: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ORK..          /
6af0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
6b00: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72  NOTE: If the "Pr
6b10: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41  eLoadSQLite_UseA
6b20: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
6b30: 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  " environment.. 
6b40: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6b50: 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65    variable is se
6b60: 74 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c  t (to anything),
6b70: 20 74 68 65 6e 20 61 74 74 65 6d 70 74 20 74 6f   then attempt to
6b80: 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20   use the..      
6b90: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69 72      //       dir
6ba0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
6bb0: 67 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20  g the currently 
6bc0: 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62  executing assemb
6bd0: 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ly..          //
6be0: 20 20 20 20 20 20 20 28 69 2e 65 2e 20 53 79 73         (i.e. Sys
6bf0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 29  tem.Data.SQLite)
6c00: 20 69 6e 74 73 65 61 64 20 6f 66 20 74 68 65 20   intsead of the 
6c10: 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20  application..   
6c20: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6c30: 64 6f 6d 61 69 6e 20 62 61 73 65 20 64 69 72 65  domain base dire
6c40: 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  ctory...        
6c50: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6c60: 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61  if (GetSettingVa
6c70: 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
6c80: 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
6c90: 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62  SQLite_UseAssemb
6ca0: 6c 79 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75  lyDirectory", nu
6cb0: 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
6cc0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6cd0: 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f           directo
6ce0: 72 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79  ry = GetAssembly
6cf0: 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a  Directory();....
6d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
6d10: 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e   (directory != n
6d20: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
6d30: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
6d40: 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
6d50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
6d60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6d70: 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72    // NOTE: Other
6d80: 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f  wise, fallback o
6d90: 6e 20 75 73 69 6e 67 20 74 68 65 20 62 61 73 65  n using the base
6da0: 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68   directory of th
6db0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
6dc0: 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 61 70        current ap
6dd0: 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e  plication domain
6de0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
6df0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
6e00: 6e 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72  n AppDomain.Curr
6e10: 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
6e20: 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d  rectory;..#else.
6e30: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
6e40: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
6e50: 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c  : Otherwise, fal
6e60: 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74  lback on using t
6e70: 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e  he directory con
6e80: 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20  taining..       
6e90: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
6ea0: 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
6eb0: 69 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20  ing assembly... 
6ec0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
6ed0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65         return Ge
6ee0: 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
6ef0: 72 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ry();..#endif.. 
6f00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
6f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
6f60: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6f70: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
6f80: 69 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e 61  ines if the dyna
6f90: 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79  mic link library
6fa0: 20 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75 69   file name requi
6fb0: 72 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20 20  res a suffix..  
6fc0: 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73      /// and adds
6fd0: 20 69 74 20 69 66 20 6e 65 63 65 73 73 61 72 79   it if necessary
6fe0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
6ff0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7000: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7010: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
7020: 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
7030: 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20  al dynamic link 
7040: 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d  library file nam
7050: 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20  e to inspect... 
7060: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
7070: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
7080: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
7090: 2f 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c 69  / The dynamic li
70a0: 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20  nk library file 
70b0: 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d  name, possibly m
70c0: 6f 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c 75  odified to inclu
70d0: 64 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  de an..      ///
70e0: 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20   extension...   
70f0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
7100: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
7110: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 46   static string F
7120: 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
7130: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
7140: 6e 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20 69  ng fileName /* i
7150: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
7160: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
7170: 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
7180: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
7190: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
71a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
71b0: 20 20 20 20 20 20 20 50 6c 61 74 66 6f 72 6d 49         PlatformI
71c0: 44 20 70 6c 61 74 66 6f 72 6d 49 64 20 3d 20 45  D platformId = E
71d0: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72  nvironment.OSVer
71e0: 73 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a  sion.Platform;..
71f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7200: 69 66 20 28 28 70 6c 61 74 66 6f 72 6d 49 64 20  if ((platformId 
7210: 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69  == PlatformID.Wi
7220: 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20  n32S) ||..      
7230: 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61              (pla
7240: 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66  tformId == Platf
7250: 6f 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f  ormID.Win32Windo
7260: 77 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  ws) ||..        
7270: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66            (platf
7280: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
7290: 6d 49 44 2e 57 69 6e 33 32 4e 54 29 20 7c 7c 0d  mID.Win32NT) ||.
72a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
72b0: 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d     (platformId =
72c0: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
72d0: 43 45 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  CE))..          
72e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
72f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 66 69           if (!fi
7300: 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28  leName.EndsWith(
7310: 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
7320: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
7330: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
7340: 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
7350: 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
7360: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
7370: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
7390: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20  turn fileName + 
73a0: 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
73b0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
73c0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
73d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
73e0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
73f0: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
7400: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
7410: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7460: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7470: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
7480: 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
7490: 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ns the processor
74a0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
74b0: 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
74c0: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e      /// process.
74d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
74e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
74f0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
7500: 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
7510: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
7520: 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
7530: 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75   process -OR- nu
7540: 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20  ll if it..      
7550: 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
7560: 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
7570: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
7580: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
7590: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
75a0: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
75b0: 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20 20 7b  cture()..      {
75c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
75d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
75e0: 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f  E: If the "PreLo
75f0: 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73  adSQLite_Process
7600: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 20  orArchitecture" 
7610: 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
7620: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
7630: 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 2c  variable is set,
7640: 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d   use it verbatim
7650: 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
7660: 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
7670: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
7680: 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
7690: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
76a0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
76b0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
76c0: 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
76d0: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
76e0: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
76f0: 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
7700: 68 69 74 65 63 74 75 72 65 22 2c 20 6e 75 6c 6c  hitecture", null
7710: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
7720: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
7730: 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e 75 6c  hitecture != nul
7740: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
7750: 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73    return process
7760: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
7770: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
7780: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55  .          // BU
7790: 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69 73 20  GBUG: Will this 
77a0: 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69 61 62  always be reliab
77b0: 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  le?..          /
77c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f  /..          pro
77d0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
77e0: 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
77f0: 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52 5f 41  alue(PROCESSOR_A
7800: 52 43 48 49 54 45 43 54 55 52 45 2c 20 6e 75 6c  RCHITECTURE, nul
7810: 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
7820: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7860: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
7870: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7880: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
7890: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
78a0: 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65 63 6b    // HACK: Check
78b0: 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73 73 69   for an "impossi
78c0: 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e 2e 20  ble" situation. 
78d0: 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65 72 20   If the pointer 
78e0: 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20  size..          
78f0: 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32 2d 62  //       is 32-b
7900: 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65 73 73  its, the process
7910: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
7920: 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44 36 34  cannot be "AMD64
7930: 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  "...          //
7940: 20 20 20 20 20 20 20 49 6e 20 74 68 61 74 20 63         In that c
7950: 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c 6d 6f  ase, we are almo
7960: 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68 69 74  st certainly hit
7970: 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20 74 68  ting a bug in th
7980: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
7990: 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e 67 20        operating 
79a0: 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20 56 69  system and/or Vi
79b0: 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74  sual Studio that
79c0: 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20 20 20   causes the..   
79d0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
79e0: 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
79f0: 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e 6d 65  ECTURE environme
7a00: 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 20 63  nt variable to c
7a10: 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
7a20: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
7a30: 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20 73 6f  rong value in so
7a40: 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73  me circumstances
7a50: 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65 72 20  .  Please refer 
7a60: 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20 20 20  to ticket..     
7a70: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 5b 39       //       [9
7a80: 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72 20 66  ac9862611] for f
7a90: 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69  urther informati
7aa0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  on...          /
7ab0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
7ac0: 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20 3d 3d  ((IntPtr.Size ==
7ad0: 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20 26 26   sizeof(int)) &&
7ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7af0: 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 70 72  String.Equals(pr
7b00: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
7b10: 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d 0a 20  ure, "AMD64",.. 
7b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b30: 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
7b40: 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
7b50: 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
7b60: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
7b70: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
7b80: 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20  _PRELOAD..      
7b90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7ba0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
7bb0: 45 3a 20 57 68 65 6e 20 74 72 61 63 69 6e 67 20  E: When tracing 
7bc0: 69 73 20 65 6e 61 62 6c 65 64 2c 20 73 61 76 65  is enabled, save
7bd0: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20   the originally 
7be0: 64 65 74 65 63 74 65 64 0d 0a 20 20 20 20 20 20  detected..      
7bf0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
7c00: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
7c10: 74 65 63 74 75 72 65 20 62 65 66 6f 72 65 20 63  tecture before c
7c20: 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a 20 20 20  hanging it...   
7c30: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
7c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
7c50: 69 6e 67 20 73 61 76 65 64 50 72 6f 63 65 73 73  ing savedProcess
7c60: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
7c70: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
7c80: 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64 69 66 0d  ecture;..#endif.
7c90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7ca0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
7cb0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6b     // NOTE: We k
7cc0: 6e 6f 77 20 74 68 61 74 20 6f 70 65 72 61 74 69  now that operati
7cd0: 6e 67 20 73 79 73 74 65 6d 73 20 74 68 61 74 20  ng systems that 
7ce0: 72 65 74 75 72 6e 20 22 41 4d 44 36 34 22 20 61  return "AMD64" a
7cf0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
7d00: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 70 72   //       the pr
7d10: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
7d20: 74 75 72 65 20 61 72 65 20 61 63 74 75 61 6c 6c  ture are actuall
7d30: 79 20 61 20 73 75 70 65 72 73 65 74 20 6f 66 0d  y a superset of.
7d40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
7d50: 2f 20 20 20 20 20 20 20 74 68 65 20 22 78 38 36  /       the "x86
7d60: 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  " processor arch
7d70: 69 74 65 63 74 75 72 65 3b 20 74 68 65 72 65 66  itecture; theref
7d80: 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a 20 20 20  ore, return..   
7d90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
7da0: 20 20 20 20 22 78 38 36 22 20 77 68 65 6e 20 74      "x86" when t
7db0: 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 20  he pointer size 
7dc0: 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a 20 20 20  is 32-bits...   
7dd0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
7de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
7df0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
7e00: 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a 23  re = "x86";....#
7e10: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
7e20: 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
7e30: 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  OAD..           
7e40: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
7e50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7e60: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
7e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e80: 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74   // NOTE: Show t
7e90: 68 61 74 20 77 65 20 68 69 74 20 61 20 66 61 69  hat we hit a fai
7ea0: 72 6c 79 20 75 6e 75 73 75 61 6c 20 73 69 74 75  rly unusual situ
7eb0: 61 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20  ation (i.e...   
7ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
7ed0: 2f 20 20 20 20 20 20 20 74 68 65 20 22 77 72 6f  /       the "wro
7ee0: 6e 67 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72  ng" processor ar
7ef0: 63 68 69 74 65 63 74 75 72 65 20 77 61 73 20 64  chitecture was d
7f00: 65 74 65 63 74 65 64 29 2e 0d 0a 20 20 20 20 20  etected)...     
7f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
7f20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7f30: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
7f40: 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ne(String.Format
7f50: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
7f60: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
7f70: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
7f80: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
7f90: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
7fa0: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
7fb0: 6c 6f 61 64 65 72 20 64 65 74 65 63 74 65 64 20  loader detected 
7fc0: 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65 72 20  {0}-bit pointer 
7fd0: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
7fe0: 20 20 20 20 20 20 20 20 20 20 20 22 73 69 7a 65             "size
7ff0: 20 77 69 74 68 20 70 72 6f 63 65 73 73 6f 72 20   with processor 
8000: 61 72 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b  architecture \"{
8010: 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20 2b 0d  1}\", using " +.
8020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8030: 20 20 20 20 20 20 20 22 70 72 6f 63 65 73 73 6f         "processo
8040: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c  r architecture \
8050: 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64 2e 2e  "{2}\" instead..
8060: 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
8070: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
8080: 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20 62 69  r.Size * 8 /* bi
8090: 74 73 20 2a 2f 2c 20 73 61 76 65 64 50 72 6f 63  ts */, savedProc
80a0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
80b0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
80c0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
80d0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
80e0: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
80f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
8110: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
8120: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8130: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
8140: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
8150: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
8160: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
8170: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
8180: 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
8190: 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
81a0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
81b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
81c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
81d0: 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65   // NOTE: On the
81e0: 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
81f0: 61 6d 65 77 6f 72 6b 2c 20 61 74 74 65 6d 70 74  amework, attempt
8200: 20 74 6f 20 75 73 65 20 74 68 65 20 6e 61 74 69   to use the nati
8210: 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
8220: 20 20 2f 2f 20 20 20 20 20 20 20 57 69 6e 33 32    //       Win32
8230: 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 28 76   API function (v
8240: 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20 74 68 61  ia P/Invoke) tha
8250: 74 20 63 61 6e 20 70 72 6f 76 69 64 65 20 75 73  t can provide us
8260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8270: 2f 2f 20 20 20 20 20 20 20 77 69 74 68 20 74 68  //       with th
8280: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
8290: 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  itecture...     
82a0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
82b0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
82c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
82d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
82e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
82f0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
8300: 3a 20 54 68 65 20 6f 75 74 70 75 74 20 6f 66 20  : The output of 
8310: 74 68 65 20 47 65 74 53 79 73 74 65 6d 49 6e 66  the GetSystemInf
8320: 6f 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20  o function will 
8330: 62 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  be..            
8340: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
8350: 6c 61 63 65 64 20 68 65 72 65 2e 20 20 4f 6e 6c  laced here.  Onl
8360: 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  y the processor 
8370: 61 72 63 68 69 74 65 63 74 75 72 65 20 66 69 65  architecture fie
8380: 6c 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ld..            
8390: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
83a0: 73 20 75 73 65 64 20 62 79 20 74 68 69 73 20 6d  s used by this m
83b0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
83c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
83d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83e0: 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74  SYSTEM_INFO syst
83f0: 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20  emInfo;....     
8400: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
8410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8420: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51 75 65 72     // NOTE: Quer
8430: 79 20 74 68 65 20 73 79 73 74 65 6d 20 69 6e 66  y the system inf
8440: 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20 50 2f 49  ormation via P/I
8450: 6e 76 6f 6b 65 2c 20 74 68 75 73 0d 0a 20 20 20  nvoke, thus..   
8460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
8470: 2f 20 20 20 20 20 20 20 66 69 6c 6c 69 6e 67 20  /       filling 
8480: 74 68 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  the structure...
8490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84a0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
84b0: 20 20 20 20 20 20 20 20 47 65 74 53 79 73 74 65          GetSyste
84c0: 6d 49 6e 66 6f 28 6f 75 74 20 73 79 73 74 65 6d  mInfo(out system
84d0: 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Info);....      
84e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8500: 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72    // NOTE: Retur
8510: 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  n the processor 
8520: 61 72 63 68 69 74 65 63 74 75 72 65 20 76 61 6c  architecture val
8530: 75 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d  ue as a string..
8540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8550: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
8560: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
8570: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
8580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8590: 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 49 6e          systemIn
85a0: 66 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63  fo.wProcessorArc
85b0: 68 69 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69  hitecture.ToStri
85c0: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
85d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
85e0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
85f0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
8600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8610: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
8620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8630: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8640: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
8650: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e     // NOTE: Upon
8660: 20 66 61 69 6c 75 72 65 2c 20 72 65 74 75 72 6e   failure, return
8670: 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
8680: 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 70 72 65  .  This will pre
8690: 76 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  vent..          
86a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
86b0: 20 63 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 20   calling method 
86c0: 66 72 6f 6d 20 63 6f 6e 73 69 64 65 72 69 6e 67  from considering
86d0: 20 74 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6c   this method cal
86e0: 6c 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l a..           
86f0: 20 20 20 2f 2f 20 20 20 20 20 20 20 22 66 61 69     //       "fai
8700: 6c 75 72 65 22 2e 0d 0a 20 20 20 20 20 20 20 20  lure"...        
8710: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
8720: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
8730: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
8740: 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20  String.Empty;.. 
8750: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
8760: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
8770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87b0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
87c0: 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73     return proces
87d0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b  sorArchitecture;
87e0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
87f0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
8840: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8850: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69 76  >..      /// Giv
8860: 65 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  en the processor
8870: 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 72   architecture, r
8880: 65 74 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20  eturns the name 
8890: 6f 66 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e  of the platform.
88a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
88b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
88c0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
88d0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
88e0: 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ture">..      //
88f0: 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20  / The processor 
8900: 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20  architecture to 
8910: 62 65 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f  be translated to
8920: 20 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65   a platform name
8930: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
8940: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
8950: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
8960: 20 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f    /// The platfo
8970: 72 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  rm name for the 
8980: 73 70 65 63 69 66 69 65 64 20 70 72 6f 63 65 73  specified proces
8990: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
89a0: 20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20   -OR- null..    
89b0: 20 20 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e    /// if it cann
89c0: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
89d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
89e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
89f0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
8a00: 72 69 6e 67 20 47 65 74 50 6c 61 74 66 6f 72 6d  ring GetPlatform
8a10: 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Name(..         
8a20: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
8a30: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 2f 2a  rArchitecture /*
8a40: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
8a50: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
8a60: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
8a70: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
8a80: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
8a90: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
8aa0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
8ab0: 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72  = GetProcessorAr
8ac0: 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d  chitecture();...
8ad0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53  .          if (S
8ae0: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
8af0: 70 74 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63  pty(processorArc
8b00: 68 69 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20  hitecture))..   
8b10: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
8b20: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
8b30: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
8b40: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
8b50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8b60: 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
8b70: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8b80: 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c  Platforms == nul
8b90: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
8ba0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
8bb0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
8bc0: 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66      string platf
8bd0: 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  ormName;....    
8be0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
8bf0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
8c00: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79  urePlatforms.Try
8c10: 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  GetValue(..     
8c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c30: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
8c40: 65 63 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74  ecture, out plat
8c50: 66 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20  formName))..    
8c60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
8c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
8c80: 65 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61  eturn platformNa
8c90: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
8ca0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
8cb0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
8cc0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
8cd0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
8ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
8d30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8d40: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
8d50: 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
8d60: 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
8d70: 72 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  ry based on the 
8d80: 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20  specified..     
8d90: 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61   /// directory a
8da0: 6e 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  nd processor arc
8db0: 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20  hitecture...    
8dc0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8dd0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
8de0: 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72  am name="baseDir
8df0: 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20  ectory">..      
8e00: 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69 72  /// The base dir
8e10: 65 63 74 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e  ectory to use, n
8e20: 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20  ull for default 
8e30: 28 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74  (the base direct
8e40: 6f 72 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f  ory of..      //
8e50: 2f 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70  / the current ap
8e60: 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e  plication domain
8e70: 29 2e 20 20 54 68 69 73 20 64 69 72 65 63 74 6f  ).  This directo
8e80: 72 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69  ry should contai
8e90: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  n the..      ///
8ea0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
8eb0: 74 65 63 74 75 72 65 20 73 70 65 63 69 66 69 63  tecture specific
8ec0: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73   sub-directories
8ed0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
8ee0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
8ef0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
8f00: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
8f10: 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
8f20: 20 54 68 65 20 72 65 71 75 65 73 74 65 64 20 70   The requested p
8f30: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
8f40: 63 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20  cture, null for 
8f50: 64 65 66 61 75 6c 74 20 28 74 68 65 0d 0a 20 20  default (the..  
8f60: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f      /// processo
8f70: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f  r architecture o
8f80: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
8f90: 6f 63 65 73 73 29 2e 20 20 54 68 69 73 20 63 61  ocess).  This ca
8fa0: 6c 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20  ller should..   
8fb0: 20 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c     /// almost al
8fc0: 77 61 79 73 20 73 70 65 63 69 66 79 20 6e 75 6c  ways specify nul
8fd0: 6c 20 66 6f 72 20 74 68 69 73 20 70 61 72 61 6d  l for this param
8fe0: 65 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  eter...      ///
8ff0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
9000: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
9010: 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69  ="nativeModuleFi
9020: 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  leName">..      
9030: 2f 2f 2f 20 54 68 65 20 63 61 6e 64 69 64 61 74  /// The candidat
9040: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
9050: 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f 61  file name to loa
9060: 64 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64  d will be stored
9070: 20 68 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f 2f   here,..      //
9080: 2f 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d  / if necessary..
9090: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
90a0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
90b0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69  param name="nati
90c0: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22 3e  veModuleHandle">
90d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
90e0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
90f0: 6e 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65 64  ndle as returned
9100: 20 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79 20   by LoadLibrary 
9110: 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d 0a  will be stored..
9120: 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c 20        /// here, 
9130: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54  if necessary.  T
9140: 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62  his value will b
9150: 65 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69 66  e IntPtr.Zero if
9160: 20 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20 20   the call to..  
9170: 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72      /// LoadLibr
9180: 61 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20  ary fails...    
9190: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
91a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
91b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
91c0: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e  on-zero if the n
91d0: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 77 61 73  ative module was
91e0: 20 6c 6f 61 64 65 64 20 73 75 63 63 65 73 73 66   loaded successf
91f0: 75 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73 65 2c  ully; otherwise,
9200: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f  ..      /// zero
9210: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
9220: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
9230: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
9240: 6f 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65  ol PreLoadSQLite
9250: 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Dll(..          
9260: 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63  string baseDirec
9270: 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20 20 20  tory,           
9280: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
9290: 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63       string proc
92a0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
92b0: 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  e,    /* in */..
92c0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
92d0: 72 69 6e 67 20 6e 61 74 69 76 65 4d 6f 64 75 6c  ring nativeModul
92e0: 65 46 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75  eFileName, /* ou
92f0: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
9300: 72 65 66 20 49 6e 74 50 74 72 20 6e 61 74 69 76  ref IntPtr nativ
9310: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 20 20  eModuleHandle   
9320: 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
9330: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
9340: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
9350: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
9360: 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66  E: If the specif
9370: 69 65 64 20 62 61 73 65 20 64 69 72 65 63 74 6f  ied base directo
9380: 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20  ry is null, use 
9390: 74 68 65 20 64 65 66 61 75 6c 74 0d 0a 20 20 20  the default..   
93a0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
93b0: 28 69 2e 65 2e 20 61 74 74 65 6d 70 74 20 74 6f  (i.e. attempt to
93c0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64   automatically d
93d0: 65 74 65 63 74 20 69 74 29 2e 0d 0a 20 20 20 20  etect it)...    
93e0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
93f0: 20 20 20 20 69 66 20 28 62 61 73 65 44 69 72 65      if (baseDire
9400: 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ctory == null)..
9410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61                ba
9420: 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 47 65  seDirectory = Ge
9430: 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28 29  tBaseDirectory()
9440: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
9450: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
9460: 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c  NOTE: If we fail
9470: 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65 20  ed to query the 
9480: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2c 20  base directory, 
9490: 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
94a0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
94b0: 20 20 20 69 66 20 28 62 61 73 65 44 69 72 65 63     if (baseDirec
94c0: 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tory == null).. 
94d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
94e0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
94f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9500: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
9510: 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  f the native SQL
9520: 69 74 65 20 6c 69 62 72 61 72 79 20 65 78 69 73  ite library exis
9530: 74 73 20 69 6e 20 74 68 65 20 62 61 73 65 20 64  ts in the base d
9540: 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20  irectory..      
9550: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73      //       its
9560: 65 6c 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a  elf, stop now...
9570: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9580: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
9590: 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
95a0: 6c 6c 46 69 6c 65 4e 61 6d 65 28 50 61 74 68 2e  llFileName(Path.
95b0: 43 6f 6d 62 69 6e 65 28 62 61 73 65 44 69 72 65  Combine(baseDire
95c0: 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
95d0: 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 4c 4c        SQLITE_DLL
95e0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
95f0: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
9600: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
9610: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
9620: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
9630: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9640: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
9650: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70 72  the specified pr
9660: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
9670: 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75 73  ture is null, us
9680: 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  e the..         
9690: 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75 6c   //       defaul
96a0: 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  t...          //
96b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
96c0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
96d0: 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
96f0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
9700: 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73 73  ure = GetProcess
9710: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
9720: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
9730: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
9740: 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c  NOTE: If we fail
9750: 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65 20  ed to query the 
9760: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
9770: 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f 77  ecture, stop now
9780: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
9790: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
97a0: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
97b0: 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ture == null).. 
97c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
97d0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
97e0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
97f0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42        // NOTE: B
9800: 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61  uild the full pa
9810: 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
9820: 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
9830: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
9840: 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61    //       libra
9850: 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f  ry using the pro
9860: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
9870: 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ure name...     
9880: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9890: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69     fileName = Fi
98a0: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50  xUpDllFileName(P
98b0: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68  ath.Combine(Path
98c0: 2e 43 6f 6d 62 69 6e 65 28 62 61 73 65 44 69 72  .Combine(baseDir
98d0: 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  ectory,..       
98e0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
98f0: 41 72 63 68 69 74 65 63 74 75 72 65 29 2c 20 53  Architecture), S
9900: 51 4c 49 54 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a  QLITE_DLL));....
9910: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9920: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9930: 20 49 66 20 74 68 65 20 66 69 6c 65 20 6e 61 6d   If the file nam
9940: 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70  e based on the p
9950: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
9960: 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20  cture name..    
9970: 20 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20        // is not 
9980: 66 6f 75 6e 64 2c 20 74 72 79 20 75 73 69 6e 67  found, try using
9990: 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20   the associated 
99a0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
99b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
99c0: 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c          if (!Fil
99d0: 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
99e0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
99f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9a00: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
9a10: 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d    // NOTE: Attem
9a20: 70 74 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20  pt to translate 
9a30: 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
9a40: 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 61 0d  chitecture to a.
9a50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
9a60: 2f 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d  /       platform
9a70: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
9a80: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9a90: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
9aa0: 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65  latformName = Ge
9ab0: 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72  tPlatformName(pr
9ac0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
9ad0: 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ure);....       
9ae0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9af0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
9b00: 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
9b10: 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20  o translate the 
9b20: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73  platform name, s
9b30: 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
9b40: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9b50: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 6c            if (pl
9b60: 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75  atformName == nu
9b70: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
9b80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
9b90: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
9ba0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9bb0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9bc0: 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20   Build the full 
9bd0: 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61  path and file na
9be0: 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
9bf0: 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20  e SQLite..      
9c00: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
9c10: 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20 74   library using t
9c20: 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  he platform name
9c30: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9c40: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
9c50: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69     fileName = Fi
9c60: 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 50  xUpDllFileName(P
9c70: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 50 61 74 68  ath.Combine(Path
9c80: 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20  .Combine(..     
9c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
9ca0: 65 44 69 72 65 63 74 6f 72 79 2c 20 70 6c 61 74  eDirectory, plat
9cb0: 66 6f 72 6d 4e 61 6d 65 29 2c 20 53 51 4c 49 54  formName), SQLIT
9cc0: 45 5f 44 4c 4c 29 29 3b 0d 0a 0d 0a 20 20 20 20  E_DLL));....    
9cd0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9ce0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
9cf0: 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65  OTE: If the file
9d00: 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2c   does not exist,
9d10: 20 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f 20   skip trying to 
9d20: 6c 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20 20  load it...      
9d30: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9d40: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46            if (!F
9d50: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
9d60: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
9d70: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9d80: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
9d90: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
9da0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
9db0: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
9dc0: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
9dd0: 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20  PRELOAD..       
9de0: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
9df0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
9e10: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
9e20: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68       // NOTE: Sh
9e30: 6f 77 20 65 78 61 63 74 6c 79 20 77 68 65 72 65  ow exactly where
9e40: 20 77 65 20 61 72 65 20 74 72 79 69 6e 67 20 74   we are trying t
9e50: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
9e60: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
9e70: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51       //       SQ
9e80: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 66 72 6f  Lite library fro
9e90: 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m...            
9ea0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9eb0: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
9ec0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
9ed0: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
9ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ef0: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
9f00: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
9f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f20: 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
9f30: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
9f40: 69 73 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61  is trying to loa
9f50: 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20  d native " +..  
9f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f70: 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72      "SQLite libr
9f80: 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c  ary \"{0}\"...",
9f90: 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20   fileName)); /* 
9fa0: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
9fb0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9fc0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
9fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9fe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9ff0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
a000: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a010: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
a020: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
a030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a040: 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
a050: 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76  o load the nativ
a060: 65 20 6c 69 62 72 61 72 79 2e 20 20 54 68 69 73  e library.  This
a070: 20 77 69 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20   will either..  
a080: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
a090: 20 20 20 20 20 72 65 74 75 72 6e 20 61 20 76 61       return a va
a0a0: 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  lid native modul
a0b0: 65 20 68 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e  e handle, return
a0c0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20   IntPtr.Zero,.. 
a0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a0e0: 20 20 20 20 20 20 6f 72 20 74 68 72 6f 77 20 61        or throw a
a0f0: 6e 20 65 78 63 65 70 74 69 6f 6e 2e 0d 0a 20 20  n exception...  
a100: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
a110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
a120: 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
a130: 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  me = fileName;..
a140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
a150: 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
a160: 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 66   = LoadLibrary(f
a170: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
a180: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a190: 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  n (nativeModuleH
a1a0: 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
a1b0: 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
a1c0: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
a1d0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
a1e0: 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
a1f0: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
a200: 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
a210: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
a220: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
a230: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
a240: 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
a250: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
a260: 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20  PRELOAD..       
a270: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
a280: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a2a0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
a2b0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69       // NOTE: Fi
a2c0: 72 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61  rst, grab the la
a2d0: 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e  st Win32 error n
a2e0: 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  umber...        
a2f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
a300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a310: 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20  int lastError = 
a320: 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57  Marshal.GetLastW
a330: 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20  in32Error(); /* 
a340: 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
a350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
a360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a370: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
a380: 77 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65  w where we faile
a390: 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  d to load the na
a3a0: 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
a3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a3c0: 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
a3d0: 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20  from along with 
a3e0: 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20  the Win32 error 
a3f0: 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  code and..      
a400: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
a410: 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69       exception i
a420: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20  nformation...   
a430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
a440: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
a450: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
a460: 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d  Line(String.Form
a470: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
a480: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
a490: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
a4a0: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
a4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
a4c0: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
a4d0: 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
a4e0: 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22  to load native "
a4f0: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
a500: 20 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74            "SQLit
a510: 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c  e library \"{0}\
a520: 22 20 28 67 65 74 4c 61 73 74 45 72 72 6f 72 20  " (getLastError 
a530: 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20  = {1}): {2}",.. 
a540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a550: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c       fileName, l
a560: 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f  astError, e)); /
a570: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
a580: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
a590: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
a5a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a5b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a5c0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
a5d0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
a5e0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
a5f0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
a600: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
a610: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  lse;..      }..#
a620: 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20  endif..#endif.. 
a630: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
a640: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
a650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a690: 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
a6a0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
a6b0: 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ORK..    //..   
a6c0: 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65   // NOTE: On the
a6d0: 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
a6e0: 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74  amework, the nat
a6f0: 69 76 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ive interop asse
a700: 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f  mbly must..    /
a710: 2f 20 20 20 20 20 20 20 62 65 20 75 73 65 64 20  /       be used 
a720: 62 65 63 61 75 73 65 20 69 74 20 70 72 6f 76 69  because it provi
a730: 64 65 73 20 73 65 76 65 72 61 6c 20 77 6f 72 6b  des several work
a740: 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20  arounds to .NET 
a750: 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20  Compact..    // 
a760: 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20        Framework 
a770: 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f  limitations impo
a780: 72 74 61 6e 74 20 66 6f 72 20 70 72 6f 70 65 72  rtant for proper
a790: 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68   operation of th
a7a0: 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20  e core..    //  
a7b0: 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61       System.Data
a7c0: 2e 53 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e  .SQLite function
a7d0: 61 6c 69 74 79 20 28 65 2e 67 2e 20 62 65 69 6e  ality (e.g. bein
a7e0: 67 20 61 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a  g able to bind..
a7f0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 61 72      //       par
a800: 61 6d 65 74 65 72 73 20 61 6e 64 20 68 61 6e 64  ameters and hand
a810: 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73  le column values
a820: 20 6f 66 20 74 79 70 65 73 20 49 6e 74 36 34 20   of types Int64 
a830: 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20  and Double)...  
a840: 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e    //..    intern
a850: 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  al const string 
a860: 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51  SQLITE_DLL = "SQ
a870: 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 30 39 31  Lite.Interop.091
a880: 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51  .dll";..#elif SQ
a890: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
a8a0: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
a8b0: 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
a8c0: 66 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53  f the standard S
a8d0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73  QLite library is
a8e0: 20 65 6e 61 62 6c 65 64 2c 20 75 73 65 20 69 74   enabled, use it
a8f0: 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
a900: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74  nternal const st
a910: 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20  ring SQLITE_DLL 
a920: 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65  = "sqlite3";..#e
a930: 6c 69 66 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f  lif USE_INTEROP_
a940: 44 4c 4c 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  DLL..      //.. 
a950: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
a960: 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 6e 61  rwise, if the na
a970: 74 69 76 65 20 53 51 4c 69 74 65 20 69 6e 74 65  tive SQLite inte
a980: 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 73 20  rop assembly is 
a990: 65 6e 61 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f  enabled,..    //
a9a0: 20 20 20 20 20 20 20 75 73 65 20 69 74 2e 0d 0a         use it...
a9b0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
a9c0: 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
a9d0: 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
a9e0: 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64  SQLite.Interop.d
a9f0: 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ll";..#else..   
aa00: 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
aa10: 3a 20 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d  : Finally, assum
aa20: 65 20 74 68 61 74 20 74 68 65 20 6d 69 78 65 64  e that the mixed
aa30: 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c 79 20 69  -mode assembly i
aa40: 73 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20  s being used... 
aa50: 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
aa60: 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  nal const string
aa70: 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53   SQLITE_DLL = "S
aa80: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
aa90: 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d  e.dll";..#endif.
aaa0: 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69 73 20 73  ...    // This s
aab0: 65 63 74 69 6f 6e 20 75 73 65 73 20 69 6e 74 65  ection uses inte
aac0: 72 6f 70 20 63 61 6c 6c 73 20 74 68 61 74 20 61  rop calls that a
aad0: 6c 73 6f 20 66 65 74 63 68 20 74 65 78 74 20 6c  lso fetch text l
aae0: 65 6e 67 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a  ength to optimiz
aaf0: 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20  e conversion... 
ab00: 20 20 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67     // When using
ab10: 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 64 6c   the standard dl
ab20: 6c 2c 20 77 65 20 63 61 6e 20 72 65 70 6c 61 63  l, we can replac
ab30: 65 20 74 68 65 73 65 20 63 61 6c 6c 73 20 77 69  e these calls wi
ab40: 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65  th normal sqlite
ab50: 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20   calls and..    
ab60: 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65  // do unoptimize
ab70: 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e  d conversions in
ab80: 73 74 65 61 64 20 61 66 74 65 72 77 61 72 64 73  stead afterwards
ab90: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
aba0: 74 65 72 6f 70 20 61 64 64 65 64 20 74 65 78 74  terop added text
abb0: 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a  length calls....
abc0: 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
abd0: 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
abe0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
abf0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
ac00: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
ac10: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
ac20: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61  ind_parameter_na
ac30: 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
ac40: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
ac50: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
ac60: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
ac70: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ac80: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
ac90: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
aca0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
acb0: 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f  n_database_name_
acc0: 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
acd0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
ace0: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
acf0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ad00: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
ad10: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ad20: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
ad30: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
ad40: 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69  atabase_name16_i
ad50: 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
ad60: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
ad70: 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ut int len);....
ad80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ad90: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
ada0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
adb0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
adc0: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65  qlite3_column_de
add0: 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70 28 49  cltype_interop(I
ade0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
adf0: 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c  index, out int l
ae00: 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
ae10: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ae20: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
ae30: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
ae40: 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
ae50: 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36  olumn_decltype16
ae60: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
ae70: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
ae80: 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   out int len);..
ae90: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
aea0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
aeb0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
aec0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
aed0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
aee0: 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  name_interop(Int
aef0: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
af00: 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e  dex, out int len
af10: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
af20: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
af30: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
af40: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
af50: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
af60: 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72  umn_name16_inter
af70: 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
af80: 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69  int index, out i
af90: 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
afa0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
afb0: 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
afc0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
afd0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
afe0: 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
aff0: 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
b000: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
b010: 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65  ndex, out int le
b020: 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
b030: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
b040: 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
b050: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
b060: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
b070: 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
b080: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
b090: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
b0a0: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
b0b0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
b0c0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
b0d0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b0e0: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b0f0: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
b100: 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74  n_table_name_int
b110: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
b120: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
b130: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
b140: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b150: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
b160: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b170: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
b180: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
b190: 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
b1a0: 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
b1b0: 74 20 69 6e 64 65 78 2c 20 6f 75 74 20 69 6e 74  t index, out int
b1c0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
b1d0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b1e0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
b1f0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b200: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
b210: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74  _column_text_int
b220: 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
b230: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f 75 74  , int index, out
b240: 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
b250: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
b260: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
b270: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b280: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
b290: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
b2a0: 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
b2b0: 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
b2c0: 78 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b  x, out int len);
b2d0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
b2e0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
b2f0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b300: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b310: 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  tr sqlite3_errms
b320: 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  g_interop(IntPtr
b330: 20 64 62 2c 20 6f 75 74 20 69 6e 74 20 6c 65 6e   db, out int len
b340: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
b350: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b360: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
b370: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
b380: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
b390: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e  lite3_prepare_in
b3a0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
b3b0: 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e   IntPtr pSql, in
b3c0: 74 20 6e 42 79 74 65 73 2c 20 6f 75 74 20 49 6e  t nBytes, out In
b3d0: 74 50 74 72 20 73 74 6d 74 2c 20 6f 75 74 20 49  tPtr stmt, out I
b3e0: 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 2c  ntPtr ptrRemain,
b3f0: 20 6f 75 74 20 69 6e 74 20 6e 52 65 6d 61 69 6e   out int nRemain
b400: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
b410: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
b420: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
b430: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
b440: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
b450: 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75  lite3_table_colu
b460: 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74 65  mn_metadata_inte
b470: 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62  rop(IntPtr db, b
b480: 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
b490: 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
b4a0: 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6f 75  te[] colName, ou
b4b0: 74 20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61  t IntPtr ptrData
b4c0: 54 79 70 65 2c 20 6f 75 74 20 49 6e 74 50 74 72  Type, out IntPtr
b4d0: 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 6f 75 74   ptrCollSeq, out
b4e0: 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 6f 75   int notNull, ou
b4f0: 74 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79  t int primaryKey
b500: 2c 20 6f 75 74 20 69 6e 74 20 61 75 74 6f 49 6e  , out int autoIn
b510: 63 2c 20 6f 75 74 20 69 6e 74 20 64 74 4c 65 6e  c, out int dtLen
b520: 2c 20 6f 75 74 20 69 6e 74 20 63 73 4c 65 6e 29  , out int csLen)
b530: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
b540: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
b550: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
b560: 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
b570: 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
b580: 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  e_text_interop(I
b590: 6e 74 50 74 72 20 70 2c 20 6f 75 74 20 69 6e 74  ntPtr p, out int
b5a0: 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
b5b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b5c0: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
b5d0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b5e0: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
b5f0: 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e  _value_text16_in
b600: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
b610: 6f 75 74 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  out int len);...
b620: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
b630: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
b640: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b650: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
b660: 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65  ite3_malloc_size
b670: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
b680: 70 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52  p);....#if INTER
b690: 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c  OP_LOG..    [Dll
b6a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b6b0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
b6c0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b6d0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
b6e0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c  sqlite3_config_l
b6f0: 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23  og_interop();..#
b700: 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f  endif..#endif../
b710: 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  / !SQLITE_STANDA
b720: 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
b730: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54  gion....    // T
b740: 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  hese functions a
b750: 64 64 20 65 78 69 73 74 69 6e 67 20 66 75 6e 63  dd existing func
b760: 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70  tionality on top
b770: 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20 72   of SQLite and r
b780: 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c 65 20  equire a little 
b790: 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f  effort to..    /
b7a0: 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20 77 68  / get working wh
b7b0: 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74 61  en using the sta
b7c0: 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62  ndard SQLite lib
b7d0: 72 61 72 79 2e 0d 0a 20 20 20 20 23 72 65 67 69  rary...    #regi
b7e0: 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64  on interop added
b7f0: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a   functionality..
b800: 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54  ..#if !SQLITE_ST
b810: 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44  ANDARD....    [D
b820: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
b830: 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
b840: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
b850: 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70  n IntPtr interop
b860: 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a  _libversion();..
b870: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
b880: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
b890: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b8a0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
b8b0: 20 69 6e 74 65 72 6f 70 5f 73 6f 75 72 63 65 69   interop_sourcei
b8c0: 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  d();....    [Dll
b8d0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b8e0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
b8f0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b900: 69 6e 74 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70  int interop_comp
b910: 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49  ileoption_used(I
b920: 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b  ntPtr zOptName);
b930: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
b940: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
b950: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b960: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b970: 74 72 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69  tr interop_compi
b980: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74  leoption_get(int
b990: 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c   N);....    [Dll
b9a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
b9b0: 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
b9c0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b9d0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
b9e0: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e  sqlite3_close_in
b9f0: 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29  terop(IntPtr db)
ba00: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
ba10: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
ba20: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
ba30: 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
ba40: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
ba50: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
ba60: 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74  tion_interop(Int
ba70: 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
ba80: 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  trName, int nArg
ba90: 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  s, int nType, In
baa0: 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
bab0: 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
bac0: 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
bad0: 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69   fstep, SQLiteFi
bae0: 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e  nalCallback ffin
baf0: 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c  al, int needColl
bb00: 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  Seq);....    [Dl
bb10: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bb20: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
bb30: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
bb40: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
bb50: 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a   sqlite3_finaliz
bb60: 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
bb70: 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b   stmt);....    [
bb80: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
bb90: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
bba0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
bbb0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
bbc0: 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  de sqlite3_backu
bbd0: 70 5f 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70  p_finish_interop
bbe0: 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
bbf0: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
bc00: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
bc10: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
bc20: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
bc30: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
bc40: 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70  te3_open_interop
bc50: 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65  (byte[] utf8File
bc60: 6e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e  name, SQLiteOpen
bc70: 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c  FlagsEnum flags,
bc80: 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62 29 3b   out IntPtr db);
bc90: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
bca0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
bcb0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
bcc0: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
bcd0: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
bce0: 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72  te3_open16_inter
bcf0: 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69  op(byte[] utf8Fi
bd00: 6c 65 6e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70  lename, SQLiteOp
bd10: 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
bd20: 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20 64 62  s, out IntPtr db
bd30: 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
bd40: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
bd50: 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
bd60: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
bd70: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
bd80: 6c 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74 65  lite3_reset_inte
bd90: 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
bda0: 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
bdb0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
bdc0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
bdd0: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
bde0: 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
bdf0: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
be00: 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f  db);..#endif..//
be10: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
be20: 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
be30: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68  ion....    // Th
be40: 65 20 73 74 61 6e 64 61 72 64 20 61 70 69 20 63  e standard api c
be50: 61 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74 73 20  all equivalents 
be60: 6f 66 20 74 68 65 20 61 62 6f 76 65 20 69 6e 74  of the above int
be70: 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20  erop calls..    
be80: 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64  #region standard
be90: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74   versions of int
bea0: 65 72 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a  erop functions..
beb0: 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
bec0: 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c  NDARD....#if !PL
bed0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
bee0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
bef0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
bf00: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
bf10: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
bf20: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
bf30: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
bf40: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
bf50: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
bf60: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bf70: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
bf80: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
bf90: 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 64  3_close(IntPtr d
bfa0: 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45  b);....#if !INTE
bfb0: 52 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45  ROP_LEGACY_CLOSE
bfc0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
bfd0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
bfe0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
bff0: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
c000: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
c010: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
c020: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
c030: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
c040: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
c050: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
c060: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
c070: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
c080: 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  de sqlite3_close
c090: 5f 76 32 28 49 6e 74 50 74 72 20 64 62 29 3b 20  _v2(IntPtr db); 
c0a0: 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23  /* 3.7.14+ */..#
c0b0: 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
c0c0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
c0d0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
c0e0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
c0f0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
c100: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
c110: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
c120: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
c130: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c140: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
c150: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
c160: 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
c170: 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
c180: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
c190: 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  n(IntPtr db, byt
c1a0: 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  e[] strName, int
c1b0: 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70   nArgs, int nTyp
c1c0: 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  e, IntPtr pvUser
c1d0: 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
c1e0: 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c   func, SQLiteCal
c1f0: 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c  lback fstep, SQL
c200: 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b  iteFinalCallback
c210: 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66   ffinal);....#if
c220: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
c230: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
c240: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
c250: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
c260: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
c270: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
c280: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
c290: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c2a0: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
c2b0: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
c2c0: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
c2d0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
c2e0: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49  lite3_finalize(I
c2f0: 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
c300: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
c310: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
c320: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
c330: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
c340: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
c350: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
c360: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
c370: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
c380: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
c390: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
c3a0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
c3b0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
c3c0: 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
c3d0: 66 69 6e 69 73 68 28 49 6e 74 50 74 72 20 62 61  finish(IntPtr ba
c3e0: 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
c3f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c400: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c410: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c420: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c430: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c440: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c450: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c460: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c470: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c480: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c490: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
c4a0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
c4b0: 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20  e3_reset(IntPtr 
c4c0: 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
c4d0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c4e0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c4f0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c500: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c510: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c520: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c530: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c540: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c550: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c560: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c570: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
c580: 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
c590: 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e  arameter_name(In
c5a0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
c5b0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
c5c0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c5d0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c5e0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c5f0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c600: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c610: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c620: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c630: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c640: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c650: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c660: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
c670: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
c680: 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49  _database_name(I
c690: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
c6a0: 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
c6b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
c6c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
c6d0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c6e0: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
c6f0: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
c700: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
c710: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
c720: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
c730: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
c740: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
c750: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
c760: 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
c770: 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31  n_database_name1
c780: 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
c790: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
c7a0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
c7b0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
c7c0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
c7d0: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
c7e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
c7f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
c800: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
c810: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
c820: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
c830: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
c840: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
c850: 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
c860: 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e  lumn_decltype(In
c870: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
c880: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
c890: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c8a0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
c8b0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
c8c0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
c8d0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
c8e0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
c8f0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
c900: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
c910: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
c920: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
c930: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
c940: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
c950: 5f 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50  _decltype16(IntP
c960: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
c970: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
c980: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
c990: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
c9a0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
c9b0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
c9c0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
c9d0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
c9e0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
c9f0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ca00: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
ca10: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ca20: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
ca30: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
ca40: 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
ca50: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
ca60: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ca70: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ca80: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ca90: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
caa0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
cab0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
cac0: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
cad0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
cae0: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
caf0: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
cb00: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
cb10: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
cb20: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e  column_name16(In
cb30: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
cb40: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
cb50: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
cb60: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
cb70: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cb80: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
cb90: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
cba0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
cbb0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
cbc0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
cbd0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
cbe0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
cbf0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
cc00: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
cc10: 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74  _origin_name(Int
cc20: 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
cc30: 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
cc40: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
cc50: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
cc60: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cc70: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
cc80: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
cc90: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
cca0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ccb0: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ccc0: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
ccd0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
cce0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
ccf0: 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
cd00: 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e  origin_name16(In
cd10: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
cd20: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
cd30: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
cd40: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
cd50: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
cd60: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
cd70: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
cd80: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
cd90: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
cda0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
cdb0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
cdc0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
cdd0: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
cde0: 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
cdf0: 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50  _table_name(IntP
ce00: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
ce10: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
ce20: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
ce30: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
ce40: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ce50: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
ce60: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
ce70: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
ce80: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
ce90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cea0: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
ceb0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
cec0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
ced0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
cee0: 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  able_name16(IntP
cef0: 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
cf00: 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
cf10: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
cf20: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
cf30: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
cf40: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
cf50: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
cf60: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
cf70: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
cf80: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
cf90: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
cfa0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
cfb0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
cfc0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
cfd0: 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ext(IntPtr stmt,
cfe0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
cff0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
d000: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
d010: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d020: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
d030: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
d040: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d050: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
d060: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d070: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
d080: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
d090: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d0a0: 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
d0b0: 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e  column_text16(In
d0c0: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
d0d0: 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
d0e0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d0f0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d100: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d110: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d120: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d130: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d140: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d150: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d160: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d170: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d180: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
d190: 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  r sqlite3_errmsg
d1a0: 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
d1b0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
d1c0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
d1d0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d1e0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
d1f0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
d200: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d210: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
d220: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d230: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
d240: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
d250: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d260: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
d270: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
d280: 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
d290: 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
d2a0: 74 65 73 2c 20 6f 75 74 20 49 6e 74 50 74 72 20  tes, out IntPtr 
d2b0: 73 74 6d 74 2c 20 6f 75 74 20 49 6e 74 50 74 72  stmt, out IntPtr
d2c0: 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a   ptrRemain);....
d2d0: 23 69 66 20 55 53 45 5f 50 52 45 50 41 52 45 5f  #if USE_PREPARE_
d2e0: 56 32 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  V2..#if !PLATFOR
d2f0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d300: 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
d310: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
d320: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
d330: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
d340: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
d350: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
d360: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
d370: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
d380: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
d390: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
d3a0: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65  Code sqlite3_pre
d3b0: 70 61 72 65 5f 76 32 28 49 6e 74 50 74 72 20 64  pare_v2(IntPtr d
d3c0: 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20  b, IntPtr pSql, 
d3d0: 69 6e 74 20 6e 42 79 74 65 73 2c 20 6f 75 74 20  int nBytes, out 
d3e0: 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 6f 75 74  IntPtr stmt, out
d3f0: 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69   IntPtr ptrRemai
d400: 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  n);..#endif....#
d410: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
d420: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
d430: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
d440: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
d450: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
d460: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
d470: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
d480: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
d490: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
d4a0: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
d4b0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
d4c0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
d4d0: 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f  sqlite3_table_co
d4e0: 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e  lumn_metadata(In
d4f0: 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
d500: 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
d510: 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
d520: 6f 6c 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50  olName, out IntP
d530: 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
d540: 6f 75 74 20 49 6e 74 50 74 72 20 70 74 72 43 6f  out IntPtr ptrCo
d550: 6c 6c 53 65 71 2c 20 6f 75 74 20 69 6e 74 20 6e  llSeq, out int n
d560: 6f 74 4e 75 6c 6c 2c 20 6f 75 74 20 69 6e 74 20  otNull, out int 
d570: 70 72 69 6d 61 72 79 4b 65 79 2c 20 6f 75 74 20  primaryKey, out 
d580: 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d  int autoInc);...
d590: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
d5a0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d5b0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
d5c0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
d5d0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
d5e0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
d5f0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
d600: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
d610: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
d620: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
d630: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
d640: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
d650: 5f 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74 50  _value_text(IntP
d660: 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
d670: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
d680: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
d690: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
d6a0: 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
d6b0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
d6c0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
d6d0: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
d6e0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
d6f0: 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
d700: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
d710: 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
d720: 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
d730: 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 70 29  text16(IntPtr p)
d740: 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ;....#endif..   
d750: 20 2f 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e 44   // SQLITE_STAND
d760: 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
d770: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
d780: 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
d790: 61 72 65 20 63 75 73 74 6f 6d 20 61 6e 64 20 68  are custom and h
d7a0: 61 76 65 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e  ave no equivalen
d7b0: 74 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61  t standard libra
d7c0: 72 79 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  ry method...    
d7d0: 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61  // All of them a
d7e0: 72 65 20 22 6e 69 63 65 20 74 6f 20 68 61 76 65  re "nice to have
d7f0: 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73  s" and not neces
d800: 73 61 72 69 6c 79 20 22 6e 65 65 64 20 74 6f 20  sarily "need to 
d810: 68 61 76 65 73 22 2e 0d 0a 20 20 20 20 23 72 65  haves"...    #re
d820: 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65  gion no equivale
d830: 6e 74 20 73 74 61 6e 64 61 72 64 20 6d 65 74 68  nt standard meth
d840: 6f 64 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54  od....#if !SQLIT
d850: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
d860: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
d870: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
d880: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
d890: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
d8a0: 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c  ite3_context_col
d8b0: 6c 73 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74  lseq_interop(Int
d8c0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 6f 75 74  Ptr context, out
d8d0: 20 69 6e 74 20 74 79 70 65 2c 20 6f 75 74 20 69   int type, out i
d8e0: 6e 74 20 65 6e 63 2c 20 6f 75 74 20 69 6e 74 20  nt enc, out int 
d8f0: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
d900: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d910: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
d920: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d930: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e   int sqlite3_con
d940: 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65  text_collcompare
d950: 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
d960: 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
d970: 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62  p1, int p1len, b
d980: 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32  yte[] p2, int p2
d990: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
d9a0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
d9b0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
d9c0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
d9d0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
d9e0: 20 73 71 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f   sqlite3_cursor_
d9f0: 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e  rowid_interop(In
da00: 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 63  tPtr stmt, int c
da10: 75 72 73 6f 72 2c 20 6f 75 74 20 6c 6f 6e 67 20  ursor, out long 
da20: 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b  rowid);....    [
da30: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
da40: 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
da50: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
da60: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
da70: 64 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  de sqlite3_index
da80: 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74  _column_info_int
da90: 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
daa0: 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20  byte[] catalog, 
dab0: 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65  byte[] IndexName
dac0: 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e  , byte[] ColumnN
dad0: 61 6d 65 2c 20 6f 75 74 20 69 6e 74 20 73 6f 72  ame, out int sor
dae0: 74 4f 72 64 65 72 2c 20 6f 75 74 20 69 6e 74 20  tOrder, out int 
daf0: 6f 6e 45 72 72 6f 72 2c 20 6f 75 74 20 49 6e 74  onError, out Int
db00: 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 6f  Ptr Collation, o
db10: 75 74 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b  ut int colllen);
db20: 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
db30: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
db40: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
db50: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
db60: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 61 6c   sqlite3_resetal
db70: 6c 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  l_interop(IntPtr
db80: 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c   db);....    [Dl
db90: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
dba0: 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
dbb0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
dbc0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 61 62   int sqlite3_tab
dbd0: 6c 65 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72 6f  le_cursor_intero
dbe0: 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
dbf0: 6e 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c 65  nt db, int table
dc00: 52 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23 65  RootPage);....#e
dc10: 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45  ndif..// !SQLITE
dc20: 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
dc30: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
dc40: 20 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20 41     // Standard A
dc50: 50 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c 20  PI calls global 
dc60: 61 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73 2e  across versions.
dc70: 20 20 54 68 65 72 65 20 61 72 65 20 61 20 66 65    There are a fe
dc80: 77 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 69  w instances of i
dc90: 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20  nterop calls..  
dca0: 20 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20 69    // scattered i
dcb0: 6e 20 68 65 72 65 2c 20 62 75 74 20 74 68 65 79  n here, but they
dcc0: 20 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76 65   are only active
dcd0: 20 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f 43   when PLATFORM_C
dce0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
dcf0: 69 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20  is declared...  
dd00: 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61    #region standa
dd10: 72 64 20 73 71 6c 69 74 65 20 61 70 69 20 63 61  rd sqlite api ca
dd20: 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  lls....#if !PLAT
dd30: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
dd40: 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
dd50: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
dd60: 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
dd70: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
dd80: 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
dd90: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
dda0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
ddb0: 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
ddc0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
ddd0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
dde0: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
ddf0: 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  n();....#if !PLA
de00: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
de10: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
de20: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
de30: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
de40: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
de50: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
de60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
de70: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
de80: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
de90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
dea0: 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
deb0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f  ite3_libversion_
dec0: 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69 66  number();....#if
ded0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
dee0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
def0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
df00: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
df10: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
df20: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
df30: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
df40: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
df50: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
df60: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
df70: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
df80: 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73 6f 75  tPtr sqlite3_sou
df90: 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66 20  rceid();....#if 
dfa0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
dfb0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
dfc0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
dfd0: 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
dfe0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
dff0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
e000: 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
e010: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
e020: 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
e030: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
e040: 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
e050: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
e060: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50  option_used(IntP
e070: 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d  tr zOptName);...
e080: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
e090: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e0a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
e0b0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
e0c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
e0d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
e0e0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
e0f0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e100: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
e110: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
e120: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
e130: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
e140: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
e150: 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23 69  et(int N);....#i
e160: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
e170: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
e180: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
e190: 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
e1a0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
e1b0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
e1c0: 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
e1d0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
e1e0: 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
e1f0: 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
e200: 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
e210: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
e220: 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f  qlite3_enable_lo
e230: 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20  ad_extension(.. 
e240: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
e250: 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a  , int enable);..
e260: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
e270: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
e280: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
e290: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
e2a0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
e2b0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
e2c0: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
e2d0: 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
e2e0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
e2f0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
e300: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
e310: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
e320: 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f  de sqlite3_load_
e330: 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20  extension(..    
e340: 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 62      IntPtr db, b
e350: 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20  yte[] fileName, 
e360: 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c  byte[] procName,
e370: 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
e380: 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  or);....#if !PLA
e390: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e3a0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e3b0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e3c0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e3d0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e3e0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
e3f0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
e400: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e410: 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
e420: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e430: 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
e440: 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
e450: 5f 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69  _overload_functi
e460: 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  on(IntPtr db, In
e470: 74 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20  tPtr zName, int 
e480: 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57  nArgs);....#if W
e490: 49 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41  INDOWS..#if !PLA
e4a0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
e4b0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
e4c0: 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
e4d0: 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
e4e0: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
e4f0: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
e500: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
e510: 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
e520: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
e530: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
e540: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
e550: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
e560: 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  if..    //..    
e570: 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71  // NOTE: The "sq
e580: 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f  lite3_win32_set_
e590: 64 69 72 65 63 74 6f 72 79 22 20 53 51 4c 69 74  directory" SQLit
e5a0: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66  e core library f
e5b0: 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20  unction is..    
e5c0: 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75  //       only su
e5d0: 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f  pported on Windo
e5e0: 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ws...    //..   
e5f0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e600: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
e610: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
e620: 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74  win32_set_direct
e630: 6f 72 79 28 75 69 6e 74 20 74 79 70 65 2c 20 73  ory(uint type, s
e640: 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d  tring value);...
e650: 0a 23 69 66 20 21 44 45 42 55 47 20 2f 2f 20 4e  .#if !DEBUG // N
e660: 4f 54 45 3a 20 53 68 6f 75 6c 64 20 62 65 20 22  OTE: Should be "
e670: 57 49 4e 33 32 48 45 41 50 20 26 26 20 21 4d 45  WIN32HEAP && !ME
e680: 4d 44 45 42 55 47 22 0d 0a 23 69 66 20 21 50 4c  MDEBUG"..#if !PL
e690: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
e6a0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
e6b0: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
e6c0: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
e6d0: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
e6e0: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
e6f0: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
e700: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
e710: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
e720: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
e730: 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33  TE: The "sqlite3
e740: 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61  _win32_reset_hea
e750: 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  p" SQLite core l
e760: 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
e770: 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
e780: 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
e790: 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20  on Windows when 
e7a0: 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65  the Win32 native
e7b0: 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e   allocator is in
e7c0: 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
e7d0: 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61  se (i.e. by defa
e7e0: 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65  ult, in "Release
e7f0: 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
e800: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a  em.Data.SQLite..
e810: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
e820: 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c  y).  By default,
e830: 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c   in "Debug" buil
e840: 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
e850: 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20  a.SQLite, the.. 
e860: 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44     //       MEMD
e870: 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69  EBUG allocator i
e880: 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  s used...    //.
e890: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
e8a0: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
e8b0: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
e8c0: 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f  te3_win32_reset_
e8d0: 68 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  heap();....#if !
e8e0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
e8f0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
e900: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
e910: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
e920: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
e930: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
e940: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
e950: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
e960: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
e970: 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
e980: 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
e990: 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74  e3_win32_compact
e9a0: 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f  _heap" SQLite co
e9b0: 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74  re library funct
e9c0: 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20  ion is..    //  
e9d0: 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72       only suppor
e9e0: 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77  ted on Windows w
e9f0: 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61  hen the Win32 na
ea00: 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69  tive allocator i
ea10: 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20  s in..    //    
ea20: 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20     use (i.e. by 
ea30: 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c  default, in "Rel
ea40: 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20  ease" builds of 
ea50: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
ea60: 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  te..    //      
ea70: 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61   only).  By defa
ea80: 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20  ult, in "Debug" 
ea90: 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d  builds of System
eaa0: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68  .Data.SQLite, th
eab0: 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
eac0: 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74  MEMDEBUG allocat
ead0: 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20  or is used...   
eae0: 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
eaf0: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
eb00: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
eb10: 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f  sqlite3_win32_co
eb20: 6d 70 61 63 74 5f 68 65 61 70 28 72 65 66 20 75  mpact_heap(ref u
eb30: 69 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23  int largest);..#
eb40: 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d  endif..#endif...
eb50: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
eb60: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
eb70: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
eb80: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
eb90: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
eba0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ebb0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
ebc0: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ebd0: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
ebe0: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
ebf0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
ec00: 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
ec10: 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d  _malloc(int n);.
ec20: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
ec30: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
ec40: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
ec50: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
ec60: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
ec70: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
ec80: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
ec90: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
eca0: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
ecb0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
ecc0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
ecd0: 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
ece0: 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74  e3_realloc(IntPt
ecf0: 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  r p, int n);....
ed00: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ed10: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ed20: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
ed30: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
ed40: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
ed50: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
ed60: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
ed70: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ed80: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
ed90: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
eda0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
edb0: 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72   void sqlite3_fr
edc0: 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  ee(IntPtr p);...
edd0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ede0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
edf0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ee00: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
ee10: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ee20: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ee30: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
ee40: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
ee50: 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
ee60: 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
ee70: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
ee80: 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
ee90: 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  e sqlite3_open_v
eea0: 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c  2(byte[] utf8Fil
eeb0: 65 6e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50 74  ename, out IntPt
eec0: 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e  r db, SQLiteOpen
eed0: 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c  FlagsEnum flags,
eee0: 20 49 6e 74 50 74 72 20 76 66 73 29 3b 0d 0a 0d   IntPtr vfs);...
eef0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
ef00: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
ef10: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
ef20: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
ef30: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
ef40: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
ef50: 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
ef60: 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
ef70: 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  de)]..#else..   
ef80: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
ef90: 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
efa0: 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
efb0: 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e)]..#endif..   
efc0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
efd0: 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
efe0: 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
eff0: 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66 69  open16(string fi
f000: 6c 65 4e 61 6d 65 2c 20 6f 75 74 20 49 6e 74 50  leName, out IntP
f010: 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
f020: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f030: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f040: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f050: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
f060: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
f070: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f080: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
f090: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f0a0: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
f0b0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f0c0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
f0d0: 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
f0e0: 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  pt(IntPtr db);..
f0f0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
f100: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
f110: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
f120: 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
f130: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
f140: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
f150: 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
f160: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f170: 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
f180: 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
f190: 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62 29  rowid(IntPtr db)
f1a0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
f1b0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f1c0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f1d0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f1e0: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
f1f0: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
f200: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
f210: 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
f220: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
f230: 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
f240: 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
f250: 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
f260: 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  t sqlite3_change
f270: 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  s(IntPtr db);...
f280: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
f290: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
f2a0: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f2b0: 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
f2c0: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
f2d0: 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
f2e0: 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
f2f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
f300: 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
f310: 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29  e3_memory_used()
f320: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
f330: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f340: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f350: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
f360: 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
f370: 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
f380: 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
f390: 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
f3a0: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
f3b0: 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d  n long sqlite3_m
f3c0: 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28  emory_highwater(
f3d0: 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b 0d  int resetFlag);.
f3e0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
f3f0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f400: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f410: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f420: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
f430: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
f440: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f450: 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
f460: 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
f470: 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
f480: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
f490: 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
f4a0: 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
f4b0: 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d  te3_shutdown();.
f4c0: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
f4d0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f4e0: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f4f0: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
f500: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
f510: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
f520: 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
f530: 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
f540: 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
f550: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
f560: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
f570: 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
f580: 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75 73 79  ode sqlite3_busy
f590: 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74 72 20  _timeout(IntPtr 
f5a0: 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a  db, int ms);....
f5b0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
f5c0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
f5d0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
f5e0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
f5f0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
f600: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f610: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
f620: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
f630: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
f640: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
f650: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
f660: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
f670: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c   sqlite3_bind_bl
f680: 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ob(IntPtr stmt, 
f690: 69 6e 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b  int index, Byte[
f6a0: 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69  ] value, int nSi
f6b0: 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e  ze, IntPtr nTran
f6c0: 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  sient);....#if !
f6d0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f6e0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
f6f0: 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
f700: 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
f710: 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
f720: 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
f730: 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
f740: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
f750: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
f760: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
f770: 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ble(IntPtr stmt,
f780: 20 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75 62   int index, doub
f790: 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  le value);..#end
f7a0: 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
f7b0: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
f7c0: 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
f7d0: 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
f7e0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
f7f0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
f800: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
f810: 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
f820: 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
f830: 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
f840: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f850: 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
f860: 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
f870: 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72 20 73  ind_int(IntPtr s
f880: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
f890: 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  int value);.... 
f8a0: 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
f8b0: 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20  TE: This really 
f8c0: 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69  just calls "sqli
f8d0: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68  te3_bind_int"; h
f8e0: 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74  owever, it has t
f8f0: 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  he..    //      
f900: 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69   correct type si
f910: 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75  gnature for an u
f920: 6e 73 69 67 6e 65 64 20 28 33 32 2d 62 69 74 29  nsigned (32-bit)
f930: 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f   integer...    /
f940: 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  /..#if !PLATFORM
f950: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
f960: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
f970: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
f980: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
f990: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43  te3_bind_int", C
f9a0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
f9b0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
f9c0: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
f9d0: 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
f9e0: 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
f9f0: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
fa00: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29  lite3_bind_int")
fa10: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
fa20: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
fa30: 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
fa40: 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
fa50: 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74 72 20 73  nd_uint(IntPtr s
fa60: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
fa70: 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uint value);....
fa80: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
fa90: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
faa0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
fab0: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
fac0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
fad0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
fae0: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
faf0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
fb00: 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
fb10: 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
fb20: 64 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73  d_int64(IntPtr s
fb30: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
fb40: 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
fb50: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a  ndif....    //..
fb60: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
fb70: 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61  s really just ca
fb80: 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  lls "sqlite3_bin
fb90: 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65 76 65  d_int64"; howeve
fba0: 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20  r, it has the.. 
fbb0: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72     //       corr
fbc0: 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75  ect type signatu
fbd0: 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e  re for an unsign
fbe0: 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29  ed long (64-bit)
fbf0: 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f   integer...    /
fc00: 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  /..#if !PLATFORM
fc10: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
fc20: 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
fc30: 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
fc40: 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
fc50: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c  te3_bind_int64",
fc60: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
fc70: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
fc80: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
fc90: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
fca0: 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
fcb0: 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
fcc0: 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 28 49  e3_bind_uint64(I
fcd0: 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
fce0: 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c  index, ulong val
fcf0: 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
fd00: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
fd10: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
fd20: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
fd30: 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
fd40: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
fd50: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
fd60: 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
fd70: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
fd80: 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
fd90: 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
fda0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
fdb0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
fdc0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75   sqlite3_bind_nu
fdd0: 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ll(IntPtr stmt, 
fde0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
fdf0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
fe00: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
fe10: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
fe20: 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
fe30: 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
fe40: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
fe50: 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
fe60: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
fe70: 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
fe80: 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
fe90: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
fea0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
feb0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
fec0: 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
fed0: 6e 74 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d  nt index, byte[]
fee0: 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e   value, int nlen
fef0: 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
ff00: 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
ff10: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
ff20: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
ff30: 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
ff40: 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
ff50: 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
ff60: 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
ff70: 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
ff80: 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
ff90: 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
ffa0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
ffb0: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
ffc0: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
ffd0: 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74  eter_count(IntPt
ffe0: 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
fff0: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10000 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
10010 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
10020 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
10030 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
10040 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10050 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
10060 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10070 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
10080 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10090 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
100a0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
100b0 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e  rameter_index(In
100c0 74 50 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b  tPtr stmt, byte[
100d0 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  ] strName);....#
100e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
100f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10100 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10110 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
10120 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
10130 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
10140 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
10150 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
10160 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
10170 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
10180 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10190 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
101a0 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  mn_count(IntPtr 
101b0 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
101c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
101d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
101e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
101f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
10200 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10210 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10220 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10230 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10240 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10250 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10260 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10270 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
10280 65 33 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73  e3_step(IntPtr s
10290 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
102a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
102b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
102c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
102d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
102e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
102f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10300 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
10310 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f  static extern do
10320 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c  uble sqlite3_col
10330 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  umn_double(IntPt
10340 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
10350 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  x);..#endif....#
10360 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
10370 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
10380 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10390 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
103a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
103b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
103c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
103d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
103e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
103f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
10400 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
10410 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
10420 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74  mn_int(IntPtr st
10430 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
10440 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
10450 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10460 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10470 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10480 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10490 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
104a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
104b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
104c0 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
104d0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36  ite3_column_int6
104e0 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
104f0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64  nt index);..#end
10500 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
10510 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10520 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
10530 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
10540 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
10550 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
10560 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
10570 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
10580 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
10590 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
105a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
105b0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
105c0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f  lite3_column_blo
105d0 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
105e0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
105f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
10600 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
10610 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10620 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
10630 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
10640 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
10650 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
10660 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
10670 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
10680 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
10690 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
106a0 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
106b0 6e 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 73  n_bytes(IntPtr s
106c0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
106d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
106e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
106f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10700 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10710 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10720 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10730 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10740 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
10750 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10760 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
10770 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10780 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
10790 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28  _column_bytes16(
107a0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
107b0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
107c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
107d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
107e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
107f0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
10800 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
10810 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
10820 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
10830 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10840 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
10850 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
10860 74 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70  tatic extern Typ
10870 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65  eAffinity sqlite
10880 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e  3_column_type(In
10890 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
108a0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
108b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
108c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
108d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
108e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
108f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
10900 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
10910 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
10920 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
10930 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
10940 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
10950 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
10960 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
10970 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
10980 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ion(IntPtr db, b
10990 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69  yte[] strName, i
109a0 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72  nt nType, IntPtr
109b0 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43   pvUser, SQLiteC
109c0 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d  ollation func);.
109d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
109e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
109f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
10a00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
10a10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
10a20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
10a30 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
10a40 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
10a50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
10a60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
10a70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
10a80 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
10a90 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
10aa0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
10ab0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10ac0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10ad0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10ae0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10af0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10b00 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10b10 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10b20 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
10b30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10b40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
10b50 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10b60 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
10b70 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49  te3_value_blob(I
10b80 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
10b90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10ba0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10bb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10bc0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10bd0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10be0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10bf0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10c00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
10c10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
10c20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
10c30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
10c40 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
10c50 62 79 74 65 73 28 49 6e 74 50 74 72 20 70 29 3b  bytes(IntPtr p);
10c60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10c70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10c80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10c90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10ca0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10cb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10cc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10cd0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
10ce0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10cf0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
10d00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10d10 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
10d20 5f 76 61 6c 75 65 5f 62 79 74 65 73 31 36 28 49  _value_bytes16(I
10d30 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
10d40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10d50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10d60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10d70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10d80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10d90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10da0 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
10db0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
10dc0 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33  n double sqlite3
10dd0 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e  _value_double(In
10de0 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66  tPtr p);..#endif
10df0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10e00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10e10 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
10e20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
10e30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
10e40 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
10e50 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
10e60 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
10e70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
10e80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
10e90 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
10ea0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
10eb0 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74  _value_int(IntPt
10ec0 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
10ed0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
10ee0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
10ef0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
10f00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
10f10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
10f20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
10f30 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
10f40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
10f50 6e 67 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ng sqlite3_value
10f60 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 70 29  _int64(IntPtr p)
10f70 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
10f80 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
10f90 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
10fa0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
10fb0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
10fc0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
10fd0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
10fe0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
10ff0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11000 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11010 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11020 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 54 79  static extern Ty
11030 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74  peAffinity sqlit
11040 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 49 6e  e3_value_type(In
11050 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
11060 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11070 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11080 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11090 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
110a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
110b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
110c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
110d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
110e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
110f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11100 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
11110 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
11120 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e  _blob(IntPtr con
11130 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c  text, byte[] val
11140 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49  ue, int nSize, I
11150 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
11160 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
11170 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11180 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
11190 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
111a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
111b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
111c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
111d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
111e0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
111f0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
11200 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e  ouble(IntPtr con
11210 74 65 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c  text, double val
11220 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
11230 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
11240 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
11250 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
11260 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
11270 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
11280 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11290 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
112a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
112b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
112c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
112d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
112e0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
112f0 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e 74 50 74  sult_error(IntPt
11300 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
11310 5d 20 73 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c  ] strErr, int nL
11320 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
11330 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11340 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
11350 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11360 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
11370 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
11380 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
11390 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
113a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
113b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
113c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
113d0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
113e0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
113f0 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74 72 20 63  or_code(IntPtr c
11400 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 45 72  ontext, SQLiteEr
11410 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29 3b 0d  rorCode value);.
11420 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
11430 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
11440 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
11450 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
11460 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
11470 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
11480 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
11490 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
114a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
114b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
114c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
114d0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
114e0 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f  _result_error_to
114f0 6f 62 69 67 28 49 6e 74 50 74 72 20 63 6f 6e 74  obig(IntPtr cont
11500 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
11510 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
11520 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
11530 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
11540 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
11550 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
11560 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
11570 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
11580 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
11590 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
115a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
115b0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
115c0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
115d0 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74 72  ror_nomem(IntPtr
115e0 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
115f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11600 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11610 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11620 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
11630 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
11640 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
11650 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
11660 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11670 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
11680 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
11690 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
116a0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
116b0 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50 74 72 20  lt_value(IntPtr 
116c0 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20  context, IntPtr 
116d0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
116e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
116f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
11700 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11710 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
11720 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
11730 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
11740 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
11750 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
11760 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
11770 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11780 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
11790 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
117a0 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50 74 72 20  zeroblob(IntPtr 
117b0 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 4c 65  context, int nLe
117c0 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
117d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
117e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
117f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11800 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
11810 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
11820 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
11830 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
11840 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
11850 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
11860 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11870 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
11880 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28  ite3_result_int(
11890 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
118a0 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  int value);....#
118b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
118c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
118d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
118e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
118f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11900 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11910 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
11920 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
11930 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
11940 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e  _result_int64(In
11950 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f  tPtr context, lo
11960 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ng value);..#end
11970 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
11980 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
11990 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
119a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
119b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
119c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
119d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
119e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
119f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
11a00 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
11a10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11a20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
11a30 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28  te3_result_null(
11a40 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
11a50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
11a60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
11a70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
11a80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
11a90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
11aa0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
11ab0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
11ac0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
11ad0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
11ae0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
11af0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
11b00 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
11b10 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 49 6e  3_result_text(In
11b20 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
11b30 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
11b40 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
11b50 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
11b60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11b70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
11b80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11b90 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
11ba0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
11bb0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
11bc0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
11bd0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11be0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
11bf0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
11c00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
11c10 74 50 74 72 20 73 71 6c 69 74 65 33 5f 61 67 67  tPtr sqlite3_agg
11c20 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 28 49  regate_context(I
11c30 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69  ntPtr context, i
11c40 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23  nt nBytes);....#
11c50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11c60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11c70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
11c80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
11c90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
11ca0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
11cb0 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
11cc0 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
11cd0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
11ce0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
11cf0 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
11d00 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
11d10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
11d20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
11d30 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
11d40 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
11d50 6e 64 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72  nd_text16(IntPtr
11d60 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
11d70 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 20  , string value, 
11d80 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72  int nlen, IntPtr
11d90 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
11da0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11db0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11dc0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
11dd0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
11de0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
11df0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
11e00 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
11e10 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
11e20 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  de)]..#else..   
11e30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
11e40 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
11e50 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
11e60 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e)]..#endif..   
11e70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
11e80 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
11e90 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
11ea0 72 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  r16(IntPtr conte
11eb0 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61  xt, string strNa
11ec0 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a  me, int nLen);..
11ed0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11ee0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11ef0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
11f00 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
11f10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
11f20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
11f30 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
11f40 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
11f50 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
11f60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
11f70 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
11f80 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
11f90 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
11fa0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11fb0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
11fc0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
11fd0 74 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  t16(IntPtr conte
11fe0 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61  xt, string strNa
11ff0 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e  me, int nLen, In
12000 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
12010 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  ;....#if INTEROP
12020 5f 43 4f 44 45 43 0d 0a 23 69 66 20 21 50 4c 41  _CODEC..#if !PLA
12030 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12040 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12050 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12060 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12070 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12080 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12090 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
120a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
120b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
120c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
120d0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
120e0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
120f0 5f 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  _key(IntPtr db, 
12100 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
12110 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  keylen);....#if 
12120 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
12130 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12140 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
12150 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
12160 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
12170 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
12180 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
12190 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
121a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
121b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
121c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
121d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
121e0 69 74 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74  ite3_rekey(IntPt
121f0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79  r db, byte[] key
12200 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a  , int keylen);..
12210 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
12220 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12230 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12240 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12250 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
12260 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
12270 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
12280 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
12290 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
122a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
122b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
122c0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
122d0 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  r sqlite3_set_au
122e0 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74 72 20  thorizer(IntPtr 
122f0 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68 6f 72  db, SQLiteAuthor
12300 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e  izerCallback fun
12310 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
12320 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
12330 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12340 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
12350 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
12360 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
12370 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
12380 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
12390 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
123a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
123b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
123c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
123d0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
123e0 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f  lite3_update_hoo
123f0 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
12400 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63  iteUpdateCallbac
12410 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
12420 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
12430 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
12440 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
12450 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
12460 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
12470 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
12480 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
12490 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
124a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
124b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
124c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
124d0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
124e0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69  tr sqlite3_commi
124f0 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  t_hook(IntPtr db
12500 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61  , SQLiteCommitCa
12510 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
12520 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
12530 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
12540 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
12550 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12560 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
12570 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12580 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12590 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
125a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
125b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
125c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
125d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
125e0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
125f0 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c  trace(IntPtr db,
12600 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c   SQLiteTraceCall
12610 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
12620 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20  r pvUser);....  
12630 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
12640 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65  e3_config() take
12650 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
12660 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
12670 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
12680 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
12690 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
126a0 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74  sible calls that
126b0 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e   we want to use.
126c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
126d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
126e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
126f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
12700 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
12710 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  e3_config", Call
12720 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
12730 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
12740 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
12750 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
12760 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
12770 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
12780 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  e3_config")]..#e
12790 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
127a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
127b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
127c0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
127d0 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69  none(SQLiteConfi
127e0 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d  gOpsEnum op);...
127f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
12800 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
12810 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12820 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
12830 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
12840 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
12850 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
12860 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
12870 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
12880 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
12890 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
128a0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
128b0 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
128c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
128d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
128e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
128f0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69  sqlite3_config_i
12900 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f  nt(SQLiteConfigO
12910 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76  psEnum op, int v
12920 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
12930 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
12940 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
12950 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
12960 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
12970 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
12980 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
12990 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
129a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
129b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
129c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
129d0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
129e0 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
129f0 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
12a00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12a10 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
12a20 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
12a30 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69  _config_log(SQLi
12a40 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
12a50 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c  op, SQLiteLogCal
12a60 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
12a70 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
12a80 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12a90 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12aa0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
12ab0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
12ac0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
12ad0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
12ae0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
12af0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
12b00 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
12b10 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
12b20 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
12b30 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72  IntPtr sqlite3_r
12b40 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74  ollback_hook(Int
12b50 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52 6f  Ptr db, SQLiteRo
12b60 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66  llbackCallback f
12b70 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
12b80 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
12b90 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
12ba0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
12bb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12bc0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
12bd0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
12be0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
12bf0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
12c00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
12c10 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
12c20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12c30 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
12c40 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c  sqlite3_db_handl
12c50 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  e(IntPtr stmt);.
12c60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
12c70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
12c80 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
12c90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
12ca0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
12cb0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
12cc0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
12cd0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
12ce0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
12cf0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
12d00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
12d10 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
12d20 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 72  ode sqlite3_db_r
12d30 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e  elease_memory(In
12d40 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
12d50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12d60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12d70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12d80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12d90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12da0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12db0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
12dc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12dd0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
12de0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12df0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
12e00 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f  tPtr sqlite3_db_
12e10 66 69 6c 65 6e 61 6d 65 28 49 6e 74 50 74 72 20  filename(IntPtr 
12e20 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d  db, IntPtr dbNam
12e30 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
12e40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12e50 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
12e60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
12e70 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
12e80 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
12e90 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
12ea0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
12eb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
12ec0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
12ed0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
12ee0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
12ef0 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74  qlite3_next_stmt
12f00 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
12f10 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
12f20 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
12f30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12f40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
12f50 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
12f60 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
12f70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
12f80 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
12f90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
12fa0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
12fb0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
12fc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
12fd0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
12fe0 6c 69 74 65 33 5f 65 78 65 63 28 49 6e 74 50 74  lite3_exec(IntPt
12ff0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
13000 53 71 6c 2c 20 49 6e 74 50 74 72 20 70 76 43 61  Sql, IntPtr pvCa
13010 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74 72 20 70  llback, IntPtr p
13020 76 50 61 72 61 6d 2c 20 6f 75 74 20 49 6e 74 50  vParam, out IntP
13030 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23  tr errMsg);....#
13040 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13050 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13060 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13070 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13080 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13090 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
130a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
130b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
130c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
130d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
130e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
130f0 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6c 65  int sqlite3_rele
13100 61 73 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 20 6e  ase_memory(int n
13110 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
13120 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13130 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13140 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13150 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13160 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13170 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13180 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13190 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
131a0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
131b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
131c0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
131d0 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f  sqlite3_get_auto
131e0 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20 64 62  commit(IntPtr db
131f0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
13200 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
13210 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
13220 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
13230 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
13240 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
13250 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
13260 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
13270 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
13280 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
13290 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
132a0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
132b0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
132c0 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63  xtended_result_c
132d0 6f 64 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  odes(IntPtr db, 
132e0 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23  int onoff);....#
132f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
13300 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
13310 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13320 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13330 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13340 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13350 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13360 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13370 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13380 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13390 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
133a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
133b0 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28  sqlite3_errcode(
133c0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
133d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
133e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
133f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13400 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
13410 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
13420 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
13430 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
13440 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13450 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
13460 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
13470 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
13480 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
13490 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
134a0 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
134b0 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
134c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
134d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
134e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
134f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
13500 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
13510 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
13520 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
13530 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
13540 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
13550 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
13560 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
13570 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28 53  sqlite3_errstr(S
13580 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72  QLiteErrorCode r
13590 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a  c); /* 3.7.15+ *
135a0 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63  /....    // Sinc
135b0 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20  e sqlite3_log() 
135c0 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65  takes a variable
135d0 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20   argument list, 
135e0 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c  we have to overl
135f0 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73  oad declarations
13600 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c  ..    // for all
13610 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e   possible calls.
13620 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72    For now, we ar
13630 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20  e only exposing 
13640 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c  a single string,
13650 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 65 70   and..    // dep
13660 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65  end on the calle
13670 72 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20  r to format the 
13680 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c  string...#if !PL
13690 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
136a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
136b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
136c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
136d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
136e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
136f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13700 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13710 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13720 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13730 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
13740 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74  qlite3_log(SQLit
13750 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43  eErrorCode iErrC
13760 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72  ode, byte[] zFor
13770 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  mat);....#if !PL
13780 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
13790 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
137a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
137b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
137c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
137d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
137e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
137f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13800 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13810 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13820 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
13830 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
13840 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49  3_file_control(I
13850 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
13860 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70   zDbName, int op
13870 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b 0d  , IntPtr pArg);.
13880 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
13890 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
138a0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
138b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
138c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
138d0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
138e0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
138f0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
13900 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
13910 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
13920 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
13930 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
13940 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28 49  e3_backup_init(I
13950 6e 74 50 74 72 20 64 65 73 74 44 62 2c 20 62 79  ntPtr destDb, by
13960 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20  te[] zDestName, 
13970 49 6e 74 50 74 72 20 73 6f 75 72 63 65 44 62 2c  IntPtr sourceDb,
13980 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e   byte[] zSourceN
13990 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
139a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
139b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
139c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
139d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
139e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
139f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
13a00 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
13a10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
13a20 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
13a30 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
13a40 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
13a50 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
13a60 33 5f 62 61 63 6b 75 70 5f 73 74 65 70 28 49 6e  3_backup_step(In
13a70 74 50 74 72 20 62 61 63 6b 75 70 2c 20 69 6e 74  tPtr backup, int
13a80 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20   nPage);....#if 
13a90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
13aa0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
13ab0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13ac0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
13ad0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
13ae0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
13af0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
13b00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13b10 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
13b20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13b30 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
13b40 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
13b50 72 65 6d 61 69 6e 69 6e 67 28 49 6e 74 50 74 72  remaining(IntPtr
13b60 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66   backup);....#if
13b70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
13b80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
13b90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
13ba0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
13bb0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
13bc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
13bd0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
13be0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13bf0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
13c00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
13c10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
13c20 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  t sqlite3_backup
13c30 5f 70 61 67 65 63 6f 75 6e 74 28 49 6e 74 50 74  _pagecount(IntPt
13c40 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
13c50 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13c60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13c70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
13c80 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
13c90 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
13ca0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
13cb0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
13cc0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
13cd0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
13ce0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
13cf0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
13d00 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
13d10 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76  qlite3_declare_v
13d20 74 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49  tab(IntPtr db, I
13d30 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a  ntPtr zSQL);....
13d40 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
13d50 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
13d60 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
13d70 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
13d80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
13d90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
13da0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
13db0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
13dc0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
13dd0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
13de0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
13df0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
13e00 6d 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66  mprintf(IntPtr f
13e10 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74  ormat, __arglist
13e20 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  );..    #endregi
13e30 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c  on....    // SQL
13e40 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20 74 68  ite API calls th
13e50 61 74 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  at are provided 
13e60 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20  by "well-known" 
13e70 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61 74 20  extensions that 
13e80 6d 61 79 20 62 65 20 73 74 61 74 69 63 61 6c 6c  may be staticall
13e90 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64  y..    // linked
13ea0 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65   with the SQLite
13eb0 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c 69 62   core native lib
13ec0 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79 20 69  rary currently i
13ed0 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72 65 67  n use...    #reg
13ee0 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73 71  ion extension sq
13ef0 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a  lite api calls..
13f00 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
13f10 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21  UAL_TABLE..#if !
13f20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13f30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
13f40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
13f50 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
13f60 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
13f70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
13f80 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
13f90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
13fa0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
13fb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
13fc0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
13fd0 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  tr sqlite3_creat
13fe0 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64  e_disposable_mod
13ff0 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49  ule(IntPtr db, I
14000 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20  ntPtr name, ref 
14010 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d  sqlite3_module m
14020 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43  odule, IntPtr pC
14030 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74  lientData, xDest
14040 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72  royModule xDestr
14050 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  oy);....#if !PLA
14060 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
14070 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
14080 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
14090 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
140a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
140b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
140c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
140d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
140e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
140f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
14100 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
14110 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f  lite3_dispose_mo
14120 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f 64  dule(IntPtr pMod
14130 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ule);..#endif.. 
14140 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
14150 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
14160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141a0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
141b0 73 71 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  sqlite interop a
141c0 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43  pi calls (.NET C
141d0 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
141e0 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54   only)..#if PLAT
141f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
14200 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45  EWORK && !SQLITE
14210 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b  _STANDARD..    [
14220 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
14230 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
14240 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
14250 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
14260 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
14270 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  d_interop(IntPtr
14280 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f   db, ref long ro
14290 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  wId);....    [Dl
142a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
142b0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
142c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
142d0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65   void sqlite3_me
142e0 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f  mory_used_intero
142f0 70 28 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73  p(ref long bytes
14300 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
14310 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14320 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14330 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
14340 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  id sqlite3_memor
14350 79 5f 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65  y_highwater_inte
14360 72 6f 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61  rop(int resetFla
14370 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65  g, ref long byte
14380 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  s);....    [DllI
14390 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
143a0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
143b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
143c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
143d0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
143e0 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
143f0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
14400 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  x, ref double va
14410 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
14420 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
14430 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
14440 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
14450 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
14460 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
14470 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
14480 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
14490 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c  ex, ref long val
144a0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
144b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
144c0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
144d0 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
144e0 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a  t64_interop")]..
144f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
14500 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
14510 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
14520 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69  e3_bind_uint64_i
14530 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
14540 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
14550 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ef ulong value);
14560 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
14570 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
14580 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
14590 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
145a0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
145b0 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
145c0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
145d0 69 6e 64 65 78 2c 20 6f 75 74 20 64 6f 75 62 6c  index, out doubl
145e0 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
145f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14600 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
14610 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14620 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
14630 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69  3_column_int64_i
14640 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
14650 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6f  mt, int index, o
14660 75 74 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  ut long value);.
14670 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
14680 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
14690 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
146a0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
146b0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
146c0 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
146d0 50 74 72 20 70 2c 20 6f 75 74 20 64 6f 75 62 6c  Ptr p, out doubl
146e0 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
146f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
14700 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
14710 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
14720 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
14730 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e  3_value_int64_in
14740 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
14750 6f 75 74 20 49 6e 74 36 34 20 76 61 6c 75 65 29  out Int64 value)
14760 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
14770 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14780 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14790 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
147a0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
147b0 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
147c0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
147d0 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
147e0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
147f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
14800 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
14810 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
14820 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
14830 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  t_int64_interop(
14840 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
14850 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29  ref Int64 value)
14860 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
14870 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
14880 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
14890 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
148a0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
148b0 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
148c0 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20  dule_interop(.. 
148d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
148e0 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49  , IntPtr name, I
148f0 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69  ntPtr pModule, i
14900 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72  nt iVersion, xCr
14910 65 61 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20  eate xCreate,.. 
14920 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20         xConnect 
14930 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49  xConnect, xBestI
14940 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c  ndex xBestIndex,
14950 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69   xDisconnect xDi
14960 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20  sconnect,..     
14970 20 20 20 78 44 65 73 74 72 6f 79 20 78 44 65 73     xDestroy xDes
14980 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65  troy, xOpen xOpe
14990 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65  n, xClose xClose
149a0 2c 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65  , xFilter xFilte
149b0 72 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78  r,..        xNex
149c0 74 20 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45  t xNext, xEof xE
149d0 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c  of, xColumn xCol
149e0 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77  umn, xRowId xRow
149f0 49 64 2c 20 78 55 70 64 61 74 65 20 78 55 70 64  Id, xUpdate xUpd
14a00 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42  ate,..        xB
14a10 65 67 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79  egin xBegin, xSy
14a20 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69  nc xSync, xCommi
14a30 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c  t xCommit, xRoll
14a40 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d  back xRollback,.
14a50 0a 20 20 20 20 20 20 20 20 78 46 69 6e 64 46 75  .        xFindFu
14a60 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63  nction xFindFunc
14a70 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52  tion, xRename xR
14a80 65 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e  ename, xSavepoin
14a90 74 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20  t xSavepoint,.. 
14aa0 20 20 20 20 20 20 20 78 52 65 6c 65 61 73 65 20         xRelease 
14ab0 78 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62  xRelease, xRollb
14ac0 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ackTo xRollbackT
14ad0 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  o, IntPtr pClien
14ae0 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20  tData,..        
14af0 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78  xDestroyModule x
14b00 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d  DestroyModule);.
14b10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20  .#endif..    // 
14b20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
14b30 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51  FRAMEWORK && !SQ
14b40 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
14b50 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
14b60 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
14b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14bb0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
14bc0 4e 61 74 69 76 65 20 44 65 6c 65 67 61 74 65 73  Native Delegates
14bd0 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
14be0 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66  RTUAL_TABLE..#if
14bf0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14c00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14c10 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
14c20 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
14c30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
14c40 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
14c50 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
14c60 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
14c70 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  e xCreate(..    
14c80 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
14c90 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
14ca0 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69  pAux,..        i
14cb0 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
14cc0 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
14cd0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
14ce0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
14cf0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
14d00 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rror..    );....
14d10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
14d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14d60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14d70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14d80 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
14d90 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
14da0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
14db0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
14dc0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
14dd0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
14de0 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74  rorCode xConnect
14df0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
14e00 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
14e10 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20  IntPtr pAux,..  
14e20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
14e30 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
14e40 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
14e50 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c  ef IntPtr pVtab,
14e60 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
14e70 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20  tPtr pError..   
14e80 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
14e90 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
14ee0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
14ef0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
14f00 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
14f10 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
14f20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
14f30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
14f40 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
14f50 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
14f60 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
14f70 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
14f80 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
14f90 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b  r pIndex..    );
14fa0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
14fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ff0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
15000 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
15010 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
15020 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
15030 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
15040 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
15050 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
15060 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
15070 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73  teErrorCode xDis
15080 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
15090 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
150a0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
150b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
15100 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15110 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15120 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
15130 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
15140 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15150 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
15160 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
15170 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
15180 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20  e xDestroy(..   
15190 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
151a0 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
151b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
15200 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15210 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15220 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
15230 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
15240 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15250 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
15260 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
15270 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
15280 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20  Code xOpen(..   
15290 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
152a0 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
152b0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
152c0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
152d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15310 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
15320 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
15330 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
15340 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
15350 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
15360 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
15370 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
15380 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
15390 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
153a0 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20  e xClose(..     
153b0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
153c0 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
153d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
153e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
15420 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
15430 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
15440 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
15450 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
15460 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
15470 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
15480 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
15490 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
154a0 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20  Code xFilter(.. 
154b0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
154c0 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
154d0 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20  int idxNum,..   
154e0 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78 53       IntPtr idxS
154f0 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  tr,..        int
15500 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
15510 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20  IntPtr argv..   
15520 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
15530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15570 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
15580 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15590 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
155a0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
155b0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
155c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
155d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
155e0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
155f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
15600 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49  Next(..        I
15610 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
15620 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
15630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15670 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
15680 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
15690 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
156a0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
156b0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
156c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
156d0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
156e0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
156f0 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20   int xEof(..    
15700 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
15710 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
15720 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15770 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
15780 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
15790 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
157a0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
157b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
157c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
157d0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
157e0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
157f0 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a  rCode xColumn(..
15800 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
15810 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
15820 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74   IntPtr pContext
15830 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
15840 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  ndex..    );....
15850 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
15860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
158a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
158b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
158c0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
158d0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
158e0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
158f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
15900 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
15910 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
15920 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d  rorCode xRowId(.
15930 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
15940 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
15950 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
15960 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
15970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
159c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
159d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
159e0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
159f0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
15a00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
15a10 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
15a20 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
15a30 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
15a40 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20  ode xUpdate(..  
15a50 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
15a60 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
15a70 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
15a80 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
15a90 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
15aa0 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  owId..    );....
15ab0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
15ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15b00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15b10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15b20 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
15b30 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
15b40 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
15b50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
15b60 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
15b70 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
15b80 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d  rorCode xBegin(.
15b90 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
15ba0 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
15bb0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
15bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15c10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15c20 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
15c30 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
15c40 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
15c50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
15c60 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
15c70 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
15c80 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d  rrorCode xSync(.
15c90 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
15ca0 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
15cb0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
15cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
15d10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15d20 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
15d30 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
15d40 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
15d50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
15d60 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
15d70 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
15d80 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74  rrorCode xCommit
15d90 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
15da0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
15db0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
15dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e00 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
15e10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
15e20 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
15e30 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
15e40 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
15e50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
15e60 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
15e70 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
15e80 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
15e90 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49  back(..        I
15ea0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
15eb0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
15ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
15f10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
15f20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
15f30 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
15f40 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
15f50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
15f60 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
15f70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69  ublic delegate i
15f80 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
15f90 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
15fa0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
15fb0 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
15fc0 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d       IntPtr zNam
15fd0 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  e,..        ref 
15fe0 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
15ff0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
16000 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 55 73    ref IntPtr pUs
16010 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a  erData..    );..
16020 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
16030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16070 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
16080 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
16090 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
160a0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
160b0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
160c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
160d0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
160e0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
160f0 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d  ErrorCode xRenam
16100 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
16110 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
16120 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a     IntPtr zNew..
16130 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
16140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16180 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
16190 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
161a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
161b0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
161c0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
161d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
161e0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
161f0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
16200 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
16210 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  e xSavepoint(.. 
16220 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
16230 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
16240 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
16250 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
16260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
162b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
162c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
162d0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
162e0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
162f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
16300 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
16310 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
16320 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16330 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20  xRelease(..     
16340 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
16350 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
16360 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
16370 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
16380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163c0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
163d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
163e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
163f0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
16400 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
16410 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
16420 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
16430 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
16440 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c  teErrorCode xRol
16450 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20  lbackTo(..      
16460 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
16470 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
16480 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
16490 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
164a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
164f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16500 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
16510 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
16520 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
16530 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
16540 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
16550 63 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20  c delegate void 
16560 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49  xDestroyModule(I
16570 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
16580 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  a);..#endif..   
16590 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
165a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
165b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
165f0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61  ..    #region Na
16600 74 69 76 65 20 53 74 72 75 63 74 75 72 65 73 0d  tive Structures.
16610 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
16620 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL_TABLE..    
16630 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
16640 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
16650 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
16660 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
16670 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b  e3_module..    {
16680 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
16690 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a   int iVersion;..
166a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78          public x
166b0 43 72 65 61 74 65 20 78 43 72 65 61 74 65 3b 0d  Create xCreate;.
166c0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
166d0 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63  xConnect xConnec
166e0 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
166f0 69 63 20 78 42 65 73 74 49 6e 64 65 78 20 78 42  ic xBestIndex xB
16700 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  estIndex;..     
16710 20 20 20 70 75 62 6c 69 63 20 78 44 69 73 63 6f     public xDisco
16720 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63  nnect xDisconnec
16730 74 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t;..        publ
16740 69 63 20 78 44 65 73 74 72 6f 79 20 78 44 65 73  ic xDestroy xDes
16750 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 70  troy;..        p
16760 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70 65  ublic xOpen xOpe
16770 6e 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  n;..        publ
16780 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65  ic xClose xClose
16790 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ;..        publi
167a0 63 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65  c xFilter xFilte
167b0 72 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  r;..        publ
167c0 69 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d  ic xNext xNext;.
167d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
167e0 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20  xEof xEof;..    
167f0 20 20 20 20 70 75 62 6c 69 63 20 78 43 6f 6c 75      public xColu
16800 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  mn xColumn;..   
16810 20 20 20 20 20 70 75 62 6c 69 63 20 78 52 6f 77       public xRow
16820 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20  Id xRowId;..    
16830 20 20 20 20 70 75 62 6c 69 63 20 78 55 70 64 61      public xUpda
16840 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20  te xUpdate;..   
16850 20 20 20 20 20 70 75 62 6c 69 63 20 78 42 65 67       public xBeg
16860 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20 20  in xBegin;..    
16870 20 20 20 20 70 75 62 6c 69 63 20 78 53 79 6e 63      public xSync
16880 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20   xSync;..       
16890 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20   public xCommit 
168a0 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20  xCommit;..      
168b0 20 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61    public xRollba
168c0 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20  ck xRollback;.. 
168d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 46         public xF
168e0 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e  indFunction xFin
168f0 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20  dFunction;..    
16900 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6e 61      public xRena
16910 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20 20  me xRename;..   
16920 20 20 20 20 20 2f 2a 20 54 68 65 20 6d 65 74 68       /* The meth
16930 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e  ods above are in
16940 20 76 65 72 73 69 6f 6e 20 31 20 6f 66 20 74 68   version 1 of th
16950 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
16960 0d 0a 20 20 20 20 20 20 20 20 20 2a 20 6f 62 6a  ..         * obj
16970 65 63 74 2e 20 20 54 68 6f 73 65 20 62 65 6c 6f  ect.  Those belo
16980 77 20 61 72 65 20 66 6f 72 20 76 65 72 73 69 6f  w are for versio
16990 6e 20 32 20 61 6e 64 20 67 72 65 61 74 65 72 2e  n 2 and greater.
169a0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
169b0 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74 20 78  lic xSavepoint x
169c0 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20  Savepoint;..    
169d0 20 20 20 20 70 75 62 6c 69 63 20 78 52 65 6c 65      public xRele
169e0 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20  ase xRelease;.. 
169f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 78 52         public xR
16a00 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62  ollbackTo xRollb
16a10 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  ackTo;..    }...
16a20 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
16a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a70 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
16a80 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
16a90 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
16aa0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
16ab0 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 0d  ct sqlite3_vtab.
16ac0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
16ad0 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 4d  public IntPtr pM
16ae0 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
16af0 70 75 62 6c 69 63 20 69 6e 74 20 6e 52 65 66 3b  public int nRef;
16b00 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55 53   /* NO LONGER US
16b10 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ED */..        p
16b20 75 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72  ublic IntPtr zEr
16b30 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rMsg;..    }....
16b40 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16b90 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
16ba0 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
16bb0 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
16bc0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
16bd0 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  t sqlite3_vtab_c
16be0 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20  ursor..    {..  
16bf0 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
16c00 50 74 72 20 70 56 54 61 62 3b 0d 0a 20 20 20 20  Ptr pVTab;..    
16c10 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
16c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c60 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
16c70 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
16c80 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
16c90 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
16ca0 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
16cb0 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d  ndex_constraint.
16cc0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
16cd0 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69  public sqlite3_i
16ce0 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28  ndex_constraint(
16cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
16d00 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
16d10 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a  int constraint..
16d20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
16d30 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
16d40 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
16d50 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
16d60 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 6e 75  constraint != nu
16d70 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
16d80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
16d90 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f      iColumn = co
16da0 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e  nstraint.iColumn
16db0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
16dc0 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69     op = constrai
16dd0 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20  nt.op;..        
16de0 20 20 20 20 20 20 20 20 75 73 61 62 6c 65 20 3d          usable =
16df0 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62   constraint.usab
16e00 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
16e10 20 20 20 20 20 69 54 65 72 6d 4f 66 66 73 65 74       iTermOffset
16e20 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54   = constraint.iT
16e30 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20  ermOffset;..    
16e40 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
16e50 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
16e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ea0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16eb0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43     public int iC
16ec0 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
16ed0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64  public SQLiteInd
16ee0 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f  exConstraintOp o
16ef0 70 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  p;..        publ
16f00 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d  ic byte usable;.
16f10 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16f20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b  int iTermOffset;
16f30 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
16f90 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
16fa0 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
16fb0 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
16fc0 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
16fd0 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
16fe0 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  by..    {..     
16ff0 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65     public sqlite
17000 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28  3_index_orderby(
17010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
17020 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79  LiteIndexOrderBy
17030 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20   orderBy..      
17040 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
17050 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
17060 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17070 20 20 20 20 20 20 69 66 20 28 6f 72 64 65 72 42        if (orderB
17080 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
17090 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
170a0 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75             iColu
170b0 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f  mn = orderBy.iCo
170c0 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  lumn;..         
170d0 20 20 20 20 20 20 20 64 65 73 63 20 3d 20 6f 72         desc = or
170e0 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20  derBy.desc;..   
170f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
17100 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
17110 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17150 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17160 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
17170 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d  Column; /* Colum
17180 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20  n number */..   
17190 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
171a0 20 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75 65   desc;   /* True
171b0 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73   for DESC.  Fals
171c0 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20  e for ASC. */.. 
171d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
171e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17220 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
17230 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
17240 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
17250 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
17260 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
17270 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
17280 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d  nt_usage..    {.
17290 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
172a0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
172b0 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d  nstraint_usage(.
172c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
172d0 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
172e0 6e 74 55 73 61 67 65 20 63 6f 6e 73 74 72 61 69  ntUsage constrai
172f0 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20 20  ntUsage..       
17300 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
17310 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
17320 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17330 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
17340 69 6e 74 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c  intUsage != null
17350 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
17360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17370 20 20 61 72 67 76 49 6e 64 65 78 20 3d 20 63 6f    argvIndex = co
17380 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72  nstraintUsage.ar
17390 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20  gvIndex;..      
173a0 20 20 20 20 20 20 20 20 20 20 6f 6d 69 74 20 3d            omit =
173b0 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
173c0 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20  .omit;..        
173d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
173e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
173f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17430 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
17440 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49 6e  ublic int argvIn
17450 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63  dex; /* if >0, c
17460 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72  onstraint is par
17470 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69  t of argv to xFi
17480 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20  lter */..       
17490 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69   public byte omi
174a0 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74  t;     /* Do not
174b0 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72   code a test for
174c0 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74   this constraint
174d0 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20   */..    }....  
174e0 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
17530 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
17540 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
17550 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
17560 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
17570 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
17580 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  fo..    {..     
17590 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d     /* Inputs */.
175a0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
175b0 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b  int nConstraint;
175c0 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e   /* Number of en
175d0 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72  tries in aConstr
175e0 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20  aint */..       
175f0 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61   public IntPtr a
17600 43 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20  Constraint;..   
17610 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
17620 6e 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20  nOrderBy;..     
17630 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72     public IntPtr
17640 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20   aOrderBy;..    
17650 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a      /* Outputs *
17660 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  /..        publi
17670 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72  c IntPtr aConstr
17680 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20 20  aintUsage;..    
17690 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
176a0 64 78 4e 75 6d 3b 20 20 20 20 20 20 20 20 20 20  dxNum;          
176b0 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65 64 20   /* Number used 
176c0 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  to identify the 
176d0 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20  index */..      
176e0 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
176f0 69 64 78 53 74 72 3b 20 20 20 20 20 20 20 20 2f  idxStr;        /
17700 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69 62  * String, possib
17710 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ly obtained from
17720 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20   sqlite3_malloc 
17730 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  */..        publ
17740 69 63 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65  ic int needToFre
17750 65 49 64 78 53 74 72 3b 20 2f 2a 20 46 72 65 65  eIdxStr; /* Free
17760 20 69 64 78 53 74 72 20 75 73 69 6e 67 20 73 71   idxStr using sq
17770 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69 66 20  lite3_free() if 
17780 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20  true */..       
17790 20 70 75 62 6c 69 63 20 69 6e 74 20 6f 72 64 65   public int orde
177a0 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a  rByConsumed;  /*
177b0 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74 20   True if output 
177c0 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72  is already order
177d0 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70  ed */..        p
177e0 75 62 6c 69 63 20 64 6f 75 62 6c 65 20 65 73 74  ublic double est
177f0 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45  imatedCost; /* E
17800 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66  stimated cost of
17810 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65   using this inde
17820 78 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e  x */..    }..#en
17830 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  dif..    #endreg
17840 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  ion..  }....  //
17850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
178a0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
178b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
178c0 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
178d0 74 20 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c  t class Critical
178e0 48 61 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73  Handle : IDispos
178f0 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70  able..  {..    p
17900 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43  rivate bool _isC
17910 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74  losed;..    prot
17920 65 63 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e  ected IntPtr han
17930 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  dle;....    prot
17940 65 63 74 65 64 20 43 72 69 74 69 63 61 6c 48 61  ected CriticalHa
17950 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61  ndle(IntPtr inva
17960 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d  lidHandleValue).
17970 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
17980 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61  ndle = invalidHa
17990 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20  ndleValue;..    
179a0 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61    _isClosed = fa
179b0 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  lse;..    }.... 
179c0 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64     ~CriticalHand
179d0 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  le()..    {..   
179e0 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
179f0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
17a00 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c   private void Cl
17a10 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a  eanup()..    {..
17a20 20 20 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f        if (!IsClo
17a30 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  sed)..      {.. 
17a40 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43         this._isC
17a50 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
17a60 20 20 20 20 20 20 20 69 66 20 28 21 49 73 49 6e         if (!IsIn
17a70 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20  valid)..        
17a80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c  {..          Rel
17a90 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20  easeHandle();.. 
17aa0 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
17ab0 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
17ac0 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
17ad0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
17ae0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
17af0 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b  d Close()..    {
17b00 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
17b10 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  true);..    }...
17b20 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
17b30 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
17b40 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65  {..      Dispose
17b50 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  (true);..    }..
17b60 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
17b70 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73  virtual void Dis
17b80 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
17b90 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ing)..    {..   
17ba0 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20     Cleanup();.. 
17bb0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74     }....    prot
17bc0 65 63 74 65 64 20 61 62 73 74 72 61 63 74 20 62  ected abstract b
17bd0 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
17be0 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  e();....    prot
17bf0 65 63 74 65 64 20 76 6f 69 64 20 53 65 74 48 61  ected void SetHa
17c00 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75  ndle(IntPtr valu
17c10 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
17c20 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b   handle = value;
17c30 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
17c40 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61  ublic void SetHa
17c50 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d  ndleAsInvalid().
17c60 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69  .    {..      _i
17c70 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
17c80 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65  .      GC.Suppre
17c90 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
17ca0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
17cb0 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c  public bool IsCl
17cc0 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  osed..    {..   
17cd0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
17ce0 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20  _isClosed; }..  
17cf0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
17d00 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  c abstract bool 
17d10 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b  IsInvalid..    {
17d20 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20  ..      get;..  
17d30 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 0d 0a 23 65    }....  }....#e
17d40 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  ndif....    ////
17d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
17da0 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e  region SQLiteCon
17db0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c  nectionHandle Cl
17dc0 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64  ass..    // Hand
17dd0 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65  les the unmanage
17de0 64 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74  d database point
17df0 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73  er, and provides
17e00 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20   finalization.. 
17e10 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f     // support fo
17e20 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72  r it...    inter
17e30 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
17e40 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
17e50 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  nHandle : Critic
17e60 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
17e70 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
17e80 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52  DARD && !PLATFOR
17e90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17ea0 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
17eb0 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f  rnal delegate vo
17ec0 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  id CloseConnecti
17ed0 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  onCallback(..   
17ee0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
17ef0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
17f00 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b  hdl, IntPtr db);
17f10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
17f20 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73  rnal static Clos
17f30 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62  eConnectionCallb
17f40 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74  ack closeConnect
17f50 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ion =..         
17f60 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c     SQLiteBase.Cl
17f70 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a  oseConnection;..
17f80 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
17f90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
17fe0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
17ff0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18000 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
18010 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
18020 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
18030 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
18040 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
18050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18090 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
180a0 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64  ate bool ownHand
180b0 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  le;....        /
180c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18100 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18110 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
18120 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
18130 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43  r IntPtr(SQLiteC
18140 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
18150 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  db)..        {..
18160 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18170 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  db != null)..   
18180 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
18190 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
181a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
181b0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
181c0 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  (db.syncRoot)..#
181d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
181e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
181f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
18200 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d  turn db.handle;.
18210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18220 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
18230 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
18240 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
18250 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
18260 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
18270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
182c0 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  rnal SQLiteConne
182d0 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50  ctionHandle(IntP
182e0 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48  tr db, bool ownH
182f0 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
18300 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48 61      : this(ownHa
18310 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  ndle)..        {
18320 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
18330 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18340 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
18350 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
18360 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
18370 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
18380 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61 6e       this.ownHan
18390 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b  dle = ownHandle;
183a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
183b0 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b    SetHandle(db);
183c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
183d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
183e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
183f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18430 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
18440 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
18450 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e  nHandle(bool own
18460 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
18470 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
18480 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
18490 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
184a0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
184b0 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65     if (ownHandle
184c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
184d0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
184e0 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 55 6e 73  ncrement(ref Uns
184f0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
18500 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74  .connectionCount
18510 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
18520 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
18530 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18570 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18580 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
18590 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
185a0 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
185b0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
185c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
185d0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
185e0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
185f0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
18600 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18610 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
18620 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74 75 72  ownHandle) retur
18630 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
18640 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
18650 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
18660 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
18670 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18680 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
18690 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
186a0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
186b0 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
186c0 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
186d0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
186e0 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
186f0 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54  o);....#if SQLIT
18700 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
18710 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18720 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
18730 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
18740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18750 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   closeConnection
18760 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
18770 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  le);..#else..   
18780 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
18790 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
187a0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
187b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
187c0 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
187d0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
187e0 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  s, localHandle);
187f0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
18800 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
18810 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
18820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18830 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
18840 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18850 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
18860 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
18870 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
18880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18890 20 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65       "CloseConne
188a0 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63  ction: {0}", loc
188b0 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74  alHandle)); /* t
188c0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
188d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
188e0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
188f0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
18900 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18910 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
18920 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
18930 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
18940 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
18950 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
18960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18970 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
18980 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
18990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
189a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
189b0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
189c0 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
189d0 63 74 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64  ction(this, hand
189e0 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  le);..          
189f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
18a00 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a  tHandle(IntPtr.Z
18a10 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
18a20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
18a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
18a40 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55  .#endif..#if COU
18a50 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
18a60 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
18a70 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
18a80 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
18a90 20 20 20 20 20 20 20 72 65 66 20 55 6e 73 61 66         ref Unsaf
18aa0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 63  eNativeMethods.c
18ab0 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b  onnectionCount);
18ac0 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45  ..#endif..#if DE
18ad0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
18ae0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
18af0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
18b00 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
18b10 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
18b20 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
18b30 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
18b40 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
18b50 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
18b60 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
18b70 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
18b80 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
18b90 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
18ba0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
18bb0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
18bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
18bd0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
18be0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18bf0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
18c00 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
18c10 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
18c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c30 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69    "CloseConnecti
18c40 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  on: {0}, excepti
18c50 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
18c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c70 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
18c80 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
18c90 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
18ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18cb0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
18cc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18cd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
18ce0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
18cf0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
18d00 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
18d10 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
18d20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18d30 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
18d40 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
18d50 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
18d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18d70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18d80 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
18d90 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
18da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
18db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
18dc0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
18dd0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
18de0 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
18df0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
18e00 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
18e10 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
18e20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
18e70 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
18e80 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
18e90 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
18ea0 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
18eb0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
18ec0 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
18ed0 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20  ecrement(..     
18ee0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 55             ref U
18ef0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
18f00 64 73 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ds.connectionCou
18f10 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
18f20 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
18f30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
18f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18f80 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
18f90 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20  l OwnHandle..   
18fa0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18fb0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
18fc0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
18fd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18fe0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
18ff0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
19000 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
19010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19020 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
19030 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77         return ow
19040 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  nHandle;..      
19050 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
19060 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
19070 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
19080 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
190d0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
190e0 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
190f0 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
19100 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
19110 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
19120 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
19130 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
19140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
19150 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
19160 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
19170 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
19190 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
191a0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
191b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
191c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
191d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
191e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
191f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19230 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
19240 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
19250 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
19260 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
19270 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
19280 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19290 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
192a0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
192b0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
192c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
192d0 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
192e0 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
192f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
19300 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
19310 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
19320 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
19330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19380 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
19390 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20  StatementHandle 
193a0 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72  Class..    // Pr
193b0 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
193c0 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ion support for 
193d0 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65  unmanaged SQLite
193e0 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20   statements...  
193f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
19400 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74  d class SQLiteSt
19410 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20  atementHandle : 
19420 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
19430 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
19440 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19450 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
19460 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
19470 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
19480 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
19490 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
194a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
194b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
194f0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
19500 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
19510 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20  ndle cnn;....   
19520 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
19530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19570 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
19580 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
19590 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
195a0 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
195b0 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20  ndle stmt)..    
195c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
195d0 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e     if (stmt != n
195e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
195f0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
19600 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
19610 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
19620 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73      lock (stmt.s
19630 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
19640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19650 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19660 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
19670 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20  stmt.handle;..  
19680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
19690 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
196a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
196b0 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
196c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
196d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
196e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19720 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
19730 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  l SQLiteStatemen
19740 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  tHandle(SQLiteCo
19750 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
19760 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  nn, IntPtr stmt)
19770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
19780 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
19790 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
197a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
197b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
197c0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
197d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
197e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
197f0 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d        this.cnn =
19800 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20   cnn;..         
19810 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
19820 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20  (stmt);..       
19830 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
19840 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
19850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19890 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
198a0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74  private SQLiteSt
198b0 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d  atementHandle().
198c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
198d0 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
198e0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
198f0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
19900 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
19910 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
19920 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
19930 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
19940 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74 65  iveMethods.state
19950 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  mentCount);..#en
19960 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
19970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
19980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
199d0 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
199e0 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
199f0 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
19a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
19a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
19a20 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
19a30 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
19a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19a50 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
19a60 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
19a70 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
19a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a90 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
19aa0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
19ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
19ac0 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
19ad0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
19ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19af0 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
19b00 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28  nalizeStatement(
19b10 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
19b20 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
19b30 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
19b40 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
19b50 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
19b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19b70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
19b80 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
19b90 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
19ba0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
19bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
19bc0 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
19bd0 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61  t: {0}", localHa
19be0 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ndle)); /* throw
19bf0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19c00 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
19c10 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
19c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
19c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19c40 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c    }..#endif..#el
19c50 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
19c60 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
19c70 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
19c80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19c90 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
19ca0 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  handle != IntPtr
19cb0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
19cc0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
19cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ce0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
19cf0 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d  e.FinalizeStatem
19d00 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29  ent(cnn, handle)
19d10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
19d20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
19d30 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
19d40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
19d50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
19d60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
19d70 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
19d80 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
19d90 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
19da0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a  ked.Decrement(..
19db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19dc0 20 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61      ref UnsafeNa
19dd0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 74 61 74  tiveMethods.stat
19de0 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65  ementCount);..#e
19df0 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d  ndif..#if DEBUG.
19e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19e10 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
19e20 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
19e30 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
19e40 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
19e50 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
19e60 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
19e70 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29  LiteException e)
19e80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
19e90 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
19ea0 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65  teException)..#e
19eb0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
19ec0 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
19ed0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
19ee0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
19ef0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
19f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
19f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19f20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
19f30 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72  eLine(String.For
19f40 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
19f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
19f60 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
19f70 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e  : {0}, exception
19f80 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
19f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19fa0 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a   handle, e)); /*
19fb0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
19fc0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
19fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
19fe0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
19ff0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a000 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1a010 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
1a020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
1a030 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
1a040 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
1a050 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a060 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1a070 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
1a080 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
1a090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1a0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a0b0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73       SetHandleAs
1a0c0 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20  Invalid();..    
1a0d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1a0e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
1a0f0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
1a100 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1a110 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
1a120 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1a130 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
1a140 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1a150 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
1a1a0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1a1b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
1a1c0 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28  t WasReleasedOk(
1a1d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1a1e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1a1f0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
1a200 72 65 6d 65 6e 74 28 0d 0a 20 20 20 20 20 20 20  rement(..       
1a210 20 20 20 20 20 20 20 20 20 72 65 66 20 55 6e 73           ref Uns
1a220 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1a230 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
1a240 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
1a250 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1a260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1a2b0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1a2c0 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
1a2d0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
1a2e0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
1a2f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1a300 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1a310 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1a320 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
1a330 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
1a340 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1a350 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1a360 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1a370 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
1a380 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
1a390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1a3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1a3b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1a3c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1a3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1a410 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1a420 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1a430 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
1a440 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
1a450 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1a460 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1a470 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
1a480 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
1a490 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
1a4a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1a4b0 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
1a4c0 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
1a4d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1a4e0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1a4f0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
1a500 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
1a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1a560 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
1a570 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73  ackupHandle Clas
1a580 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
1a590 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
1a5a0 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
1a5b0 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 61 63  naged SQLite bac
1a5c0 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20  kup objects...  
1a5d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
1a5e0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61  d class SQLiteBa
1a5f0 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69  ckupHandle : Cri
1a600 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
1a610 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1a620 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a630 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
1a640 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
1a650 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
1a660 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
1a670 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1a680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1a6d0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
1a6e0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
1a6f0 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  e cnn;....      
1a700 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a740 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1a750 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1a760 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
1a770 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
1a780 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62  teBackupHandle b
1a790 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20  ackup)..        
1a7a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1a7b0 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c  f (backup != nul
1a7c0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1a7d0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
1a7e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1a7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a800 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73    lock (backup.s
1a810 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
1a820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a830 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a840 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a850 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a  backup.handle;..
1a860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a870 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1a880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1a890 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
1a8a0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
1a8b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1a8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1a900 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
1a910 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70  nal SQLiteBackup
1a920 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
1a930 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
1a940 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70  n, IntPtr backup
1a950 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
1a960 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
1a970 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1a980 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a990 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
1a9a0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1a9b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1a9c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1a9d0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
1a9e0 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
1a9f0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
1aa00 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20  e(backup);..    
1aa10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1aa20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1aa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1aa80 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
1aa90 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d  eBackupHandle().
1aaa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
1aab0 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
1aac0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1aad0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
1aae0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
1aaf0 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
1ab00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1ab10 20 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74     ref UnsafeNat
1ab20 69 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75  iveMethods.backu
1ab30 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
1ab40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1ab50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1ab60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1aba0 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
1abb0 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
1abc0 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
1abd0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1abe0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
1abf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
1ac00 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ac10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ac20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1ac30 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
1ac40 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
1ac50 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
1ac60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1ac70 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
1ac80 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
1ac90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
1aca0 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
1acb0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1acc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1acd0 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73  SQLiteBase.Finis
1ace0 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63  hBackup(cnn, loc
1acf0 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
1ad00 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1ad10 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
1ad20 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
1ad30 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1ad40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ad50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1ad60 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53  race.WriteLine(S
1ad70 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
1ad80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ad90 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61         "FinishBa
1ada0 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  ckup: {0}", loca
1adb0 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
1adc0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1add0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1ade0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1adf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ae00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1ae10 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1ae20 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
1ae30 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1ae40 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
1ae50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ae60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1ae70 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
1ae80 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1ae90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1aea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aeb0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1aec0 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75  Base.FinishBacku
1aed0 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d  p(cnn, handle);.
1aee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1aef0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
1af00 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
1af10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1af20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1af30 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
1af40 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
1af50 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1af60 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
1af70 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20 20  d.Decrement(..  
1af80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af90 20 20 72 65 66 20 55 6e 73 61 66 65 4e 61 74 69    ref UnsafeNati
1afa0 76 65 4d 65 74 68 6f 64 73 2e 62 61 63 6b 75 70  veMethods.backup
1afb0 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
1afc0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
1afd0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1afe0 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
1aff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1b000 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
1b010 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
1b020 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
1b030 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
1b040 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
1b050 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1b060 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
1b070 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
1b080 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1b090 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
1b0a0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
1b0b0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
1b0c0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
1b0d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1b0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b0f0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
1b100 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
1b110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b120 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68           "Finish
1b130 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63  Backup: {0}, exc
1b140 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
1b150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b160 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
1b170 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
1b180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b190 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1b1a0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
1b1b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1b1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1b1d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1b1e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1b1f0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
1b200 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
1b210 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b220 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1b230 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
1b240 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
1b250 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
1b260 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b270 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
1b280 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
1b290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b2a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1b2b0 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
1b2c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1b2d0 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
1b2e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1b2f0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
1b300 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
1b310 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1b360 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
1b370 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
1b380 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
1b390 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
1b3a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b3b0 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
1b3c0 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 0d 0a 20  ed.Decrement(.. 
1b3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1b3e0 65 66 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ef UnsafeNativeM
1b3f0 65 74 68 6f 64 73 2e 62 61 63 6b 75 70 43 6f 75  ethods.backupCou
1b400 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
1b410 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1b420 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b470 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
1b480 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76  rride bool IsInv
1b490 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  alid..        {.
1b4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
1b4b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1b4c0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
1b4d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4f0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
1b500 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1b510 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b530 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d  return (handle =
1b540 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
1b550 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b560 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1b570 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
1b580 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1b5d0 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  ...#if DEBUG..  
1b5e0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
1b5f0 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53  rride string ToS
1b600 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20  tring()..       
1b610 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
1b620 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b630 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
1b640 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1b650 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1b660 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b670 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61         return ha
1b680 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  ndle.ToString();
1b690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1b6a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
1b6b0 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  if..    }..    #
1b6c0 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a        endregion..}..