System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 68224e3343d3cee7362e6327918f39a89f178d52:


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 4a 6f   * Written by Jo
0080: 65 20 4d 69 73 74 61 63 68 6b 69 6e 20 28 6a 6f  e Mistachkin (jo
0090: 65 40 6d 69 73 74 61 63 68 6b 69 6e 2e 63 6f 6d  e@mistachkin.com
00a0: 29 0d 0a 20 2a 0d 0a 20 2a 20 52 65 6c 65 61 73  ).. *.. * Releas
00b0: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00c0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00d0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00e0: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
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 2f 0d 0a 0d 0a 75 73  *********/....us
0120: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0130: 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d  ctions.Generic;.
0140: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c  .using System.Gl
0150: 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 0d 0a  obalization;....
0160: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0170: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0180: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e  using System.Run
0190: 74 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72  time.CompilerSer
01a0: 76 69 63 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  vices;..#endif..
01b0: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52  ..using System.R
01c0: 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65  untime.InteropSe
01d0: 72 76 69 63 65 73 3b 0d 0a 75 73 69 6e 67 20 53  rvices;..using S
01e0: 79 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 6e  ystem.Text;....n
01f0: 61 6d 65 73 70 61 63 65 20 53 79 73 74 65 6d 2e  amespace System.
0200: 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a  Data.SQLite..{..
0210: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
0220: 74 65 43 6f 6e 74 65 78 74 20 48 65 6c 70 65 72  teContext Helper
0230: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
0240: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0250: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
0260: 70 72 65 73 65 6e 74 73 20 61 20 63 6f 6e 74 65  presents a conte
0270: 78 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  xt from the SQLi
0280: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
0290: 74 68 61 74 20 63 61 6e 0d 0a 20 20 20 20 2f 2f  that can..    //
02a0: 2f 20 62 65 20 70 61 73 73 65 64 20 74 6f 20 74  / be passed to t
02b0: 68 65 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  he sqlite3_resul
02c0: 74 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69  t_*() and associ
02d0: 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d  ated functions..
02e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
02f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
0300: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
0310: 69 74 65 43 6f 6e 74 65 78 74 20 3a 20 49 53 51  iteContext : ISQ
0320: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
0330: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
0340: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0350: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   Data..        /
0360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0370: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
0380: 74 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e  tive context han
0390: 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle...        //
03a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
03b0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e        private In
03c0: 74 50 74 72 20 70 43 6f 6e 74 65 78 74 3b 0d 0a  tPtr pContext;..
03d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
03e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
03f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0430: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0440: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0450: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
0460: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
0470: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
0480: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
0490: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
04a0: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
04b0: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
04c0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
04d0: 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 2e 0d 0a  ontext handle...
04e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
04f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0500: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0510: 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20  "pContext">..   
0520: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
0530: 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e 64  ive context hand
0540: 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  le to use...    
0550: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
0560: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
0570: 61 6c 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74  al SQLiteContext
0580: 28 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74  (IntPtr pContext
0590: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
05a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70            this.p
05b0: 43 6f 6e 74 65 78 74 20 3d 20 70 43 6f 6e 74 65  Context = pConte
05c0: 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  xt;..        }..
05d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
05e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0630: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0640: 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
0650: 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d  NativeHandle Mem
0660: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
0670: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0680: 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
0690: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
06a0: 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
06b0: 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
06c0: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
06d0: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
06e0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
06f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0700: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0710: 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e  IntPtr NativeHan
0720: 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
0730: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
0740: 7b 20 72 65 74 75 72 6e 20 70 43 6f 6e 74 65 78  { return pContex
0750: 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  t; }..        }.
0760: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
0770: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
07d0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
07e0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
07f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0800: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0810: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0820: 73 75 6c 74 20 74 6f 20 4e 55 4c 4c 2e 0d 0a 20  sult to NULL... 
0830: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
0840: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
0850: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 4e 75  ublic void SetNu
0860: 6c 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ll()..        {.
0870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
0880: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
0890: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
08a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
08b0: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
08c0: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
08d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
08e0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
08f0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
0900: 75 6c 74 5f 6e 75 6c 6c 28 70 43 6f 6e 74 65 78  ult_null(pContex
0910: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
0920: 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
0980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0990: 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
09a0: 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20   context result 
09b0: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
09c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
09d0: 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
09e0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
09f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0a00: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
0a10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
0a20: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
0a30: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
0a40: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
0a50: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
0a60: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
0a70: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0a80: 76 6f 69 64 20 53 65 74 44 6f 75 62 6c 65 28 64  void SetDouble(d
0a90: 6f 75 62 6c 65 20 76 61 6c 75 65 29 0d 0a 20 20  ouble value)..  
0aa0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ab0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
0ac0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
0ad0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
0ae0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
0af0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
0b00: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
0b10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0b20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
0b30: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
0b40: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
0b50: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
0b60: 6c 65 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c  le(pContext, val
0b70: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
0b80: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
0b90: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
0ba0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
0bb0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
0bc0: 62 6c 65 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e  ble_interop(pCon
0bd0: 74 65 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29  text, ref value)
0be0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
0bf0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
0c00: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
0c10: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
0c20: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
0c30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
0c90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0ca0: 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
0cb0: 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74  context result t
0cc0: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
0cd0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
0ce0: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
0cf0: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
0d00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0d10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
0d20: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
0d30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
0d40: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
0d50: 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
0d60: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
0d70: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
0d80: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
0d90: 64 20 53 65 74 49 6e 74 28 69 6e 74 20 76 61 6c  d SetInt(int val
0da0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0dc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
0dd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
0de0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
0df0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
0e00: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
0e10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
0e20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
0e30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
0e40: 6c 74 5f 69 6e 74 28 70 43 6f 6e 74 65 78 74 2c  lt_int(pContext,
0e50: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
0e60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0ec0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0ed0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0ee0: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0ef0: 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63  sult to the spec
0f00: 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
0f10: 22 49 6e 74 36 34 22 20 2f 3e 0d 0a 20 20 20 20  "Int64" />..    
0f20: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
0f30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
0f40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0f50: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0f60: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
0f70: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0f80: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
0f90: 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20  alue to use...  
0fa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
0fb0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
0fc0: 69 63 20 76 6f 69 64 20 53 65 74 49 6e 74 36 34  ic void SetInt64
0fd0: 28 6c 6f 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20  (long value)..  
0fe0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ff0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
1000: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
1010: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1020: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
1030: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
1040: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
1050: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1060: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1070: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
1080: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
1090: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
10a0: 34 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75  4(pContext, valu
10b0: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
10c0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
10d0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
10e0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
10f0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
1100: 34 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e 74 65  4_interop(pConte
1110: 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  xt, ref value);.
1120: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1130: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
1140: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
1150: 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69 66  ption();..#endif
1160: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1170: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11e0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
11f0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1200: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1210: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
1220: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
1230: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
1240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1260: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
1270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1280: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
1290: 72 69 6e 67 22 20 2f 3e 20 76 61 6c 75 65 20 74  ring" /> value t
12a0: 6f 20 75 73 65 2e 20 20 54 68 69 73 20 76 61 6c  o use.  This val
12b0: 75 65 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ue will be..    
12c0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65      /// converte
12d0: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
12e0: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
12f0: 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20   being used...  
1300: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1310: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
1320: 69 63 20 76 6f 69 64 20 53 65 74 53 74 72 69 6e  ic void SetStrin
1330: 67 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d  g(string value).
1340: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1350: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1360: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1370: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1380: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1390: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
13a0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
13c0: 5b 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74  [] bytes = SQLit
13d0: 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42  eString.GetUtf8B
13e0: 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76  ytesFromString(v
13f0: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
1400: 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
1410: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1420: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1430: 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
1440: 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65  Exception("value
1450: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
1460: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
1470: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1480: 65 73 75 6c 74 5f 74 65 78 74 28 0d 0a 20 20 20  esult_text(..   
1490: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
14a0: 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62 79  ntext, bytes, by
14b0: 74 65 73 2e 4c 65 6e 67 74 68 2c 20 28 49 6e 74  tes.Length, (Int
14c0: 50 74 72 29 28 2d 31 29 29 3b 0d 0a 20 20 20 20  Ptr)(-1));..    
14d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1520: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1530: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1540: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
1550: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
1560: 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70  result to the sp
1570: 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
1580: 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 0d 0a 20  f="String" />.. 
1590: 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65         /// value
15a0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6e 20 65   containing an e
15b0: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
15c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
15f0: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1600: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1610: 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 76  ef="String" /> v
1620: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  alue containing 
1630: 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
1640: 65 20 74 65 78 74 2e 0d 0a 20 20 20 20 20 20 20  e text...       
1650: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
1660: 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65  will be converte
1670: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
1680: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
1690: 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20 20   being..        
16a0: 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
16b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16d0: 76 6f 69 64 20 53 65 74 45 72 72 6f 72 28 73 74  void SetError(st
16e0: 72 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ring value)..   
16f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1700: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
1710: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1730: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1740: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1750: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1760: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
1770: 79 74 65 73 20 3d 20 53 51 4c 69 74 65 53 74 72  ytes = SQLiteStr
1780: 69 6e 67 2e 47 65 74 55 74 66 38 42 79 74 65 73  ing.GetUtf8Bytes
1790: 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
17a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17b0: 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
17c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
17d0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
17e0: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
17f0: 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
1800: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
1810: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1820: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
1830: 74 5f 65 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  t_error(..      
1840: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65            pConte
1850: 78 74 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73  xt, bytes, bytes
1860: 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20  .Length);..     
1870: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
18f0: 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72  ts the context r
1900: 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65  esult to the spe
1910: 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
1920: 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ="SQLiteErrorCod
1930: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
1940: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
1950: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1960: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1970: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
1980: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1990: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19a0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 22  SQLiteErrorCode"
19b0: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65   /> value to use
19c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19e0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
19f0: 45 72 72 6f 72 43 6f 64 65 28 53 51 4c 69 74 65  ErrorCode(SQLite
1a00: 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29  ErrorCode value)
1a10: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1a20: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
1a30: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
1a40: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1a50: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
1a60: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
1a70: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
1a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1a90: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1aa0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
1ab0: 65 72 72 6f 72 5f 63 6f 64 65 28 70 43 6f 6e 74  error_code(pCont
1ac0: 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ext, value);..  
1ad0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ae0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1b40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b50: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
1b60: 74 20 72 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74  t result to cont
1b70: 61 69 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f  ain the error co
1b80: 64 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47  de SQLITE_TOOBIG
1b90: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ba0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1bb0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
1bc0: 65 74 45 72 72 6f 72 54 6f 6f 42 69 67 28 29 0d  etErrorTooBig().
1bd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1be0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1bf0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1c00: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1c10: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1c20: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
1c30: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
1c50: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1c60: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1c70: 72 72 6f 72 5f 74 6f 6f 62 69 67 28 70 43 6f 6e  rror_toobig(pCon
1c80: 74 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  text);..        
1c90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1cf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d00: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
1d10: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
1d20: 6c 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  lt to contain th
1d30: 65 20 65 72 72 6f 72 20 63 6f 64 65 20 53 51 4c  e error code SQL
1d40: 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a 20 20 20 20  ITE_NOMEM...    
1d50: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
1d70: 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f 72  ic void SetError
1d80: 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a 20 20 20 20  NoMemory()..    
1d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1da0: 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20     if (pContext 
1db0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dd0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
1de0: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
1df0: 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tion();....     
1e00: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1e10: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1e20: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
1e30: 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65 78 74 29 3b  nomem(pContext);
1e40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e50: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ea0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1eb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ec0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
1ed0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1ee0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1ef0: 65 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f  ee cref="Byte" /
1f00: 3e 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20  > array..       
1f10: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
1f20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1f30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1f40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1f50: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1f60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1f70: 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79  ="Byte" /> array
1f80: 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a   value to use...
1f90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1fa0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
1fb0: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 42 6c 6f  blic void SetBlo
1fc0: 62 28 62 79 74 65 5b 5d 20 76 61 6c 75 65 29 0d  b(byte[] value).
1fd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1ff0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
2000: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2010: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2020: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
2030: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
2040: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2050: 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2070: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
2080: 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
2090: 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20  "value");....   
20a0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
20b0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
20c0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
20d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
20e0: 20 20 20 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c     pContext, val
20f0: 75 65 2c 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68  ue, value.Length
2100: 2c 20 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b  , (IntPtr)(-1));
2110: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2120: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2170: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2180: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2190: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
21a0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
21b0: 61 20 42 4c 4f 42 20 6f 66 20 7a 65 72 6f 73 20  a BLOB of zeros 
21c0: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
21d0: 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20 20   size...        
21e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2200: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
2210: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2220: 65 20 6e 75 6d 62 65 72 20 6f 66 20 7a 65 72 6f  e number of zero
2230: 20 62 79 74 65 73 20 74 6f 20 75 73 65 20 66 6f   bytes to use fo
2240: 72 20 74 68 65 20 42 4c 4f 42 20 63 6f 6e 74 65  r the BLOB conte
2250: 78 74 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20  xt result...    
2260: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2270: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2280: 20 76 6f 69 64 20 53 65 74 5a 65 72 6f 42 6c 6f   void SetZeroBlo
2290: 62 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20  b(int value)..  
22a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22b0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
22c0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
22d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22e0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
22f0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
2300: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  eption();....   
2310: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
2320: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2330: 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
2340: 62 6c 6f 62 28 70 43 6f 6e 74 65 78 74 2c 20 76  blob(pContext, v
2350: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
2360: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23d0: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
23e0: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
23f0: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
2400: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
2410: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 2e 0d  QLiteValue" />..
2420: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2440: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2450: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
2460: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2470: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2480: 65 22 20 2f 3e 20 74 6f 20 75 73 65 2e 0d 0a 20  e" /> to use... 
2490: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24a0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
24b0: 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75  lic void SetValu
24c0: 65 28 53 51 4c 69 74 65 56 61 6c 75 65 20 76 61  e(SQLiteValue va
24d0: 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lue)..        {.
24e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
24f0: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
2500: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2510: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
2520: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
2530: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
2540: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2550: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
2560: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2570: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
2580: 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
2590: 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a  tion("value");..
25a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
25b0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
25c0: 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  s.sqlite3_result
25d0: 5f 76 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  _value(..       
25e0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78           pContex
25f0: 74 2c 20 76 61 6c 75 65 2e 4e 61 74 69 76 65 48  t, value.NativeH
2600: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
2610: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2620: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
2630: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2640: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
26a0: 53 51 4c 69 74 65 56 61 6c 75 65 20 48 65 6c 70  SQLiteValue Help
26b0: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
26c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26d0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
26e0: 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 61 6c  represents a val
26f0: 75 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ue from the SQLi
2700: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2710: 74 68 61 74 20 63 61 6e 20 62 65 0d 0a 20 20 20  that can be..   
2720: 20 2f 2f 2f 20 70 61 73 73 65 64 20 74 6f 20 74   /// passed to t
2730: 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  he sqlite3_value
2740: 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69 61  _*() and associa
2750: 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  ted functions...
2760: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2770: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
2780: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2790: 74 65 56 61 6c 75 65 20 3a 20 49 53 51 4c 69 74  teValue : ISQLit
27a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20  eNativeHandle.. 
27b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
27c0: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
27d0: 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ta..        /// 
27e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27f0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2800: 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 2e 0d  e value handle..
2810: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2820: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2830: 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
2840: 70 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  pValue;..       
2850: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2860: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28b0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
28c0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
28d0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
28e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28f0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
2900: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
2910: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
2920: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
2930: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
2940: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 68 61      /// value ha
2950: 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndle...        /
2960: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2970: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2980: 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
2990: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
29a0: 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68  e native value h
29b0: 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20  andle to use... 
29c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  am>..        pri
29e0: 76 61 74 65 20 53 51 4c 69 74 65 56 61 6c 75 65  vate SQLiteValue
29f0: 28 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 0d  (IntPtr pValue).
2a00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2a10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 56 61          this.pVa
2a20: 6c 75 65 20 3d 20 70 56 61 6c 75 65 3b 0d 0a 20  lue = pValue;.. 
2a30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a40: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2a50: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2aa0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2ab0: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
2ac0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2ad0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ae0: 20 20 20 2f 2f 2f 20 49 6e 76 61 6c 69 64 61 74     /// Invalidat
2af0: 65 73 20 74 68 65 20 6e 61 74 69 76 65 20 76 61  es the native va
2b00: 6c 75 65 20 68 61 6e 64 6c 65 2c 20 74 68 65 72  lue handle, ther
2b10: 65 62 79 20 70 72 65 76 65 6e 74 69 6e 67 20 66  eby preventing f
2b20: 75 72 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  urther..        
2b30: 2f 2f 2f 20 61 63 63 65 73 73 20 74 6f 20 69 74  /// access to it
2b40: 20 66 72 6f 6d 20 74 68 69 73 20 6f 62 6a 65 63   from this objec
2b50: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2b60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b70: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2b80: 76 61 74 65 20 76 6f 69 64 20 50 72 65 76 65 6e  vate void Preven
2b90: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 0d  tNativeAccess().
2ba0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2bb0: 20 20 20 20 20 20 20 20 70 56 61 6c 75 65 20 3d          pValue =
2bc0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
2bd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2be0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2bf0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c40: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2c50: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72 73  on Internal Mars
2c60: 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  hal Helper Metho
2c70: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2c80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c90: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2ca0: 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
2cb0: 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c   to a native sql
2cc0: 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72 75 63  ite3_value struc
2cd0: 74 75 72 65 20 69 6e 74 6f 0d 0a 20 20 20 20 20  ture into..     
2ce0: 20 20 20 2f 2f 2f 20 61 20 6d 61 6e 61 67 65 64     /// a managed
2cf0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
2d00: 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
2d10: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2d30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2d40: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2d50: 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
2d60: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
2d70: 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74  pointer to a nat
2d80: 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ive sqlite3_valu
2d90: 65 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 63  e structure to c
2da0: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
2db0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2dc0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2dd0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
2de0: 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 3c 73  / The managed <s
2df0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
2e00: 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  alue" /> object 
2e10: 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75 6c 6c  instance or null
2e20: 20 75 70 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f   upon..        /
2e30: 2f 2f 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  // failure...   
2e40: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2e50: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ns>..        int
2e60: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 53 51 4c  ernal static SQL
2e70: 69 74 65 56 61 6c 75 65 20 46 72 6f 6d 49 6e 74  iteValue FromInt
2e80: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
2e90: 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d    IntPtr pValue.
2ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
2eb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ec0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
2ed0: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2ee0: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
2ef0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f00: 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 56 61 6c  rn new SQLiteVal
2f10: 75 65 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  ue(pValue);..   
2f20: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2f30: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2f80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2f90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2fa0: 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67 69 63  Converts a logic
2fb0: 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  al array of nati
2fc0: 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6e  ve pointers to n
2fd0: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61  ative sqlite3_va
2fe0: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lue..        ///
2ff0: 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 74 6f   structures into
3000: 20 61 20 6d 61 6e 61 67 65 64 20 61 72 72 61 79   a managed array
3010: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
3020: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 0d 0a  QLiteValue" />..
3030: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
3040: 63 74 20 69 6e 73 74 61 6e 63 65 73 2e 0d 0a 20  ct instances... 
3050: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
3060: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
3070: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
3080: 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
3090: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
30a0: 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68  f elements in th
30b0: 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
30c0: 6f 66 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  of native sqlite
30d0: 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  3_value..       
30e0: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 73 2e   /// structures.
30f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3100: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
3110: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3120: 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
3130: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
3140: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c  pointer to the l
3150: 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
3160: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
3170: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  alue..        //
3180: 2f 20 73 74 72 75 63 74 75 72 65 73 20 74 6f 20  / structures to 
3190: 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
31a0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
31b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
31c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
31d0: 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 61  // The managed a
31e0: 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
31f0: 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
3200: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
3210: 63 65 73 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  ces or..        
3220: 2f 2f 2f 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61  /// null upon fa
3230: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
3240: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3250: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
3260: 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 56 61   static SQLiteVa
3270: 6c 75 65 5b 5d 20 41 72 72 61 79 46 72 6f 6d 53  lue[] ArrayFromS
3280: 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20  izeAndIntPtr(.. 
3290: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
32a0: 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
32b0: 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20    IntPtr argv.. 
32c0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
32d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32e0: 20 20 20 20 20 69 66 20 28 61 72 67 63 20 3c 20       if (argc < 
32f0: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
3300: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
3310: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3320: 69 66 20 28 61 72 67 76 20 3d 3d 20 49 6e 74 50  if (argv == IntP
3330: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
3340: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3350: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
3360: 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
3370: 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  e[] result = new
3380: 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 61 72 67   SQLiteValue[arg
3390: 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  c];....         
33a0: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65     for (int inde
33b0: 78 20 3d 20 30 2c 20 6f 66 66 73 65 74 20 3d 20  x = 0, offset = 
33c0: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
33d0: 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3c 20          index < 
33e0: 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d 0a  result.Length;..
33f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3400: 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f 66 66      index++, off
3410: 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69  set += IntPtr.Si
3420: 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze)..           
3430: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3440: 20 20 20 20 49 6e 74 50 74 72 20 70 41 72 67 20      IntPtr pArg 
3450: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
3460: 52 65 61 64 49 6e 74 50 74 72 28 61 72 67 76 2c  ReadIntPtr(argv,
3470: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
3480: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
3490: 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28 70 41  ult[index] = (pA
34a0: 72 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  rg != IntPtr.Zer
34b0: 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  o) ?..          
34c0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
34d0: 4c 69 74 65 56 61 6c 75 65 28 70 41 72 67 29 20  LiteValue(pArg) 
34e0: 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
34f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3500: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
3510: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
3520: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
3530: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
3540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3590: 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
35a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65  eNativeHandle Me
35b0: 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
35c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
35d0: 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
35e0: 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
35f0: 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68   SQLite native h
3600: 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64  andle associated
3610: 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
3620: 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
3630: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
3640: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3650: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3660: 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61   IntPtr NativeHa
3670: 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
3680: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
3690: 20 7b 20 72 65 74 75 72 6e 20 70 56 61 6c 75 65   { return pValue
36a0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
36b0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
36c0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
36d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3710: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
3720: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
3730: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
3740: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
3750: 20 70 65 72 73 69 73 74 65 64 3b 0d 0a 20 20 20   persisted;..   
3760: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3770: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3780: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
3790: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
37a0: 51 4c 69 74 65 20 76 61 6c 75 65 20 68 61 73 20  QLite value has 
37b0: 62 65 65 6e 20 73 75 63 63 65 73 73 66 75 6c 6c  been successfull
37c0: 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  y..        /// p
37d0: 65 72 73 69 73 74 65 64 20 61 73 20 61 20 6d 61  ersisted as a ma
37e0: 6e 61 67 65 64 20 76 61 6c 75 65 20 77 69 74 68  naged value with
37f0: 69 6e 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  in this object i
3800: 6e 73 74 61 6e 63 65 20 28 69 2e 65 2e 20 74 68  nstance (i.e. th
3810: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
3820: 73 65 65 20 63 72 65 66 3d 22 56 61 6c 75 65 22  see cref="Value"
3830: 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 6d 61 79   /> property may
3840: 20 74 68 65 6e 20 62 65 20 72 65 61 64 20 73 75   then be read su
3850: 63 63 65 73 73 66 75 6c 6c 79 29 2e 0d 0a 20 20  ccessfully)...  
3860: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3870: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
3880: 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72 73 69 73  blic bool Persis
3890: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ted..        {..
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
38b0: 7b 20 72 65 74 75 72 6e 20 70 65 72 73 69 73 74  { return persist
38c0: 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ed; }..        }
38d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3920: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
3930: 72 69 76 61 74 65 20 6f 62 6a 65 63 74 20 76 61  rivate object va
3940: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue;..        //
3950: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3960: 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20       /// If the 
3970: 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 66 6f  managed value fo
3980: 72 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  r this object in
3990: 73 74 61 6e 63 65 20 69 73 20 61 76 61 69 6c 61  stance is availa
39a0: 62 6c 65 20 28 69 2e 65 2e 20 69 74 0d 0a 20 20  ble (i.e. it..  
39b0: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 62 65        /// has be
39c0: 65 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 70 65  en previously pe
39d0: 72 73 69 73 74 65 64 20 76 69 61 20 74 68 65 20  rsisted via the 
39e0: 3c 73 65 65 20 63 72 65 66 3d 22 50 65 72 73 69  <see cref="Persi
39f0: 73 74 22 20 2f 3e 29 20 6d 65 74 68 6f 64 2c 0d  st" />) method,.
3a00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61  .        /// tha
3a10: 74 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  t value is retur
3a20: 6e 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  ned; otherwise, 
3a30: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20  an exception is 
3a40: 74 68 72 6f 77 6e 2e 20 20 54 68 65 0d 0a 20 20  thrown.  The..  
3a50: 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
3a60: 65 64 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20  ed value may be 
3a70: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
3a80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3a90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62         public ob
3aa0: 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20 20 20 20  ject Value..    
3ab0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ac0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
3ad0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ae0: 20 20 20 20 20 20 20 69 66 20 28 21 70 65 72 73         if (!pers
3af0: 69 73 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20  isted)..        
3b00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3b20: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
3b30: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
3b40: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 61               "va
3b60: 6c 75 65 20 77 61 73 20 6e 6f 74 20 70 65 72 73  lue was not pers
3b70: 69 73 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20  isted");..      
3b80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3ba0: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
3bb0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3bc0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3bd0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3be0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3c30: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
3c40: 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
3c50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3c60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3c70: 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
3c80: 75 72 6e 73 20 74 68 65 20 74 79 70 65 20 61 66  urns the type af
3c90: 66 69 6e 69 74 79 20 61 73 73 6f 63 69 61 74 65  finity associate
3ca0: 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75  d with this valu
3cb0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
3cc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3cd0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
3ce0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
3cf0: 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79  he type affinity
3d00: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3d10: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
3d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
3d30: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
3d40: 62 6c 69 63 20 54 79 70 65 41 66 66 69 6e 69 74  blic TypeAffinit
3d50: 79 20 47 65 74 54 79 70 65 41 66 66 69 6e 69 74  y GetTypeAffinit
3d60: 79 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  y()..        {..
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3d80: 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
3d90: 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 54 79  .Zero) return Ty
3da0: 70 65 41 66 66 69 6e 69 74 79 2e 4e 6f 6e 65 3b  peAffinity.None;
3db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3dc0: 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
3dd0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
3de0: 5f 76 61 6c 75 65 5f 74 79 70 65 28 70 56 61 6c  _value_type(pVal
3df0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
3e00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e50: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
3e60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3e70: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
3e80: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  d returns the nu
3e90: 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61 73  mber of bytes as
3ea0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
3eb0: 69 73 20 76 61 6c 75 65 2c 20 69 66 0d 0a 20 20  is value, if..  
3ec0: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 72 65 66        /// it ref
3ed0: 65 72 73 20 74 6f 20 61 20 55 54 46 2d 38 20 65  ers to a UTF-8 e
3ee0: 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 2e 0d 0a  ncoded string...
3ef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
3f00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3f10: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3f20: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
3f30: 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61  umber of bytes a
3f40: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
3f50: 68 69 73 20 76 61 6c 75 65 2e 20 20 54 68 65 20  his value.  The 
3f60: 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 0d 0a  returned value..
3f70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79 20          /// may 
3f80: 62 65 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  be zero...      
3f90: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
3fa0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3fb0: 20 69 6e 74 20 47 65 74 42 79 74 65 73 28 29 0d   int GetBytes().
3fc0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3fd0: 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c          if (pVal
3fe0: 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ue == IntPtr.Zer
3ff0: 6f 29 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20  o) return 0;..  
4000: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4010: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
4020: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c  hods.sqlite3_val
4030: 75 65 5f 62 79 74 65 73 28 70 56 61 6c 75 65 29  ue_bytes(pValue)
4040: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
4050: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
4060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
40a0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
40b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
40c0: 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
40d0: 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
40e0: 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20  cref="Int32" /> 
40f0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
4100: 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
4110: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
4120: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4130: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
4140: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
4150: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
4160: 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 61 73  ef="Int32" /> as
4170: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
4180: 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  is value...     
4190: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
41a0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
41b0: 63 20 69 6e 74 20 47 65 74 49 6e 74 28 29 0d 0a  c int GetInt()..
41c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
41d0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
41e0: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
41f0: 29 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74  ) return default
4200: 28 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  (int);..        
4210: 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66      return Unsaf
4220: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4230: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
4240: 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  (pValue);..     
4250: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
4260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
42b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
42c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
42d0: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
42e0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
42f0: 74 36 34 22 20 2f 3e 20 61 73 73 6f 63 69 61 74  t64" /> associat
4300: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
4310: 20 2f 2f 2f 20 74 68 69 73 20 76 61 6c 75 65 2e   /// this value.
4320: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4330: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4340: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
4350: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
4360: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
4370: 34 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64  4" /> associated
4380: 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65   with this value
4390: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
43a0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
43b0: 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 47     public long G
43c0: 65 74 49 6e 74 36 34 28 29 0d 0a 20 20 20 20 20  etInt64()..     
43d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
43e0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
43f0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
4400: 75 72 6e 20 64 65 66 61 75 6c 74 28 6c 6f 6e 67  urn default(long
4410: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
4420: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4430: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4440: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
4450: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4460: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
4470: 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66  (pValue);..#elif
4480: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
4490: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  D..            l
44a0: 6f 6e 67 20 76 61 6c 75 65 20 3d 20 30 3b 0d 0a  ong value = 0;..
44b0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
44c0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
44d0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
44e0: 74 36 34 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c  t64_interop(pVal
44f0: 75 65 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  ue, ref value);.
4500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
4510: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73  urn value;..#els
4520: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  e..            t
4530: 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c  hrow new NotImpl
4540: 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e  ementedException
4550: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
4560: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4570: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
45c0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
45d0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
45e0: 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
45f0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
4600: 44 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63  Double" /> assoc
4610: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
4620: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
4630: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
4640: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4650: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
4660: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
4670: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  The <see cref="D
4680: 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63 69  ouble" /> associ
4690: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
46a0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
46b0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
46c0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f         public do
46d0: 75 62 6c 65 20 47 65 74 44 6f 75 62 6c 65 28 29  uble GetDouble()
46e0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
46f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
4700: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
4710: 72 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61 75  ro) return defau
4720: 6c 74 28 64 6f 75 62 6c 65 29 3b 0d 0a 0d 0a 23  lt(double);....#
4730: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
4740: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
4750: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4760: 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
4770: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
4780: 6c 75 65 5f 64 6f 75 62 6c 65 28 70 56 61 6c 75  lue_double(pValu
4790: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
47a0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
47b0: 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20           double 
47c0: 76 61 6c 75 65 20 3d 20 30 2e 30 3b 0d 0a 20 20  value = 0.0;..  
47d0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
47e0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
47f0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
4800: 6c 65 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c 75  le_interop(pValu
4810: 65 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d 0a  e, ref value);..
4820: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4830: 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73 65  rn value;..#else
4840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
4850: 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65  row new NotImple
4860: 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28  mentedException(
4870: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
4880: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4890: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
48a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
48e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
48f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
4900: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
4910: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
4920: 74 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69  tring" /> associ
4930: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a  ated with this..
4940: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
4950: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
4960: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4970: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4980: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
4990: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
49a0: 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69 61  ring" /> associa
49b0: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
49c0: 6c 75 65 2e 20 20 54 68 65 20 76 61 6c 75 65 20  lue.  The value 
49d0: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
49e0: 63 6f 6e 76 65 72 74 65 64 20 66 72 6f 6d 20 74  converted from t
49f0: 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
4a00: 67 20 70 72 69 6f 72 20 74 6f 20 62 65 69 6e 67  g prior to being
4a10: 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
4a20: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
4a30: 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
4a40: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 74 72  ic string GetStr
4a50: 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
4a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
4a70: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
4a80: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
4a90: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
4aa0: 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 3b       int length;
4ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
4ac0: 74 50 74 72 20 70 53 74 72 69 6e 67 3b 0d 0a 0d  tPtr pString;...
4ad0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
4ae0: 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
4af0: 20 20 6c 65 6e 67 74 68 20 3d 20 55 6e 73 61 66    length = Unsaf
4b00: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4b10: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
4b20: 65 73 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  es(pValue);..   
4b30: 20 20 20 20 20 20 20 20 20 70 53 74 72 69 6e 67           pString
4b40: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
4b50: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
4b60: 61 6c 75 65 5f 74 65 78 74 28 70 56 61 6c 75 65  alue_text(pValue
4b70: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
4b80: 20 20 20 20 20 20 20 6c 65 6e 67 74 68 20 3d 20         length = 
4b90: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
4ba0: 20 20 70 53 74 72 69 6e 67 20 3d 20 55 6e 73 61    pString = Unsa
4bb0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
4bc0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
4bd0: 78 74 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  xt_interop(..   
4be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 56 61               pVa
4bf0: 6c 75 65 2c 20 72 65 66 20 6c 65 6e 67 74 68 29  lue, ref length)
4c00: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
4c10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4c20: 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72  SQLiteString.Str
4c30: 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
4c40: 72 28 70 53 74 72 69 6e 67 2c 20 6c 65 6e 67 74  r(pString, lengt
4c50: 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  h);..        }..
4c60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
4c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cb0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
4cc0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4cd0: 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64      /// Gets and
4ce0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65   returns the <se
4cf0: 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e  e cref="Byte" />
4d00: 20 61 72 72 61 79 20 61 73 73 6f 63 69 61 74 65   array associate
4d10: 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
4d20: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
4d30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
4d40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
4d50: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
4d60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
4d70: 3c 73 65 65 20 63 72 65 66 3d 22 42 79 74 65 22  <see cref="Byte"
4d80: 20 2f 3e 20 61 72 72 61 79 20 61 73 73 6f 63 69   /> array associ
4d90: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
4da0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
4db0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4dc0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
4dd0: 74 65 5b 5d 20 47 65 74 42 6c 6f 62 28 29 0d 0a  te[] GetBlob()..
4de0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4df0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
4e00: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
4e10: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
4e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
4e30: 74 75 72 6e 20 53 51 4c 69 74 65 42 79 74 65 73  turn SQLiteBytes
4e40: 2e 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20  .FromIntPtr(..  
4e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
4e60: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
4e70: 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  s.sqlite3_value_
4e80: 62 6c 6f 62 28 70 56 61 6c 75 65 29 2c 20 47 65  blob(pValue), Ge
4e90: 74 42 79 74 65 73 28 29 29 3b 0d 0a 20 20 20 20  tBytes());..    
4ea0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4eb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ef0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4f00: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4f10: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
4f20: 73 65 73 20 74 68 65 20 6e 61 74 69 76 65 20 76  ses the native v
4f30: 61 6c 75 65 20 68 61 6e 64 6c 65 20 74 6f 20 6f  alue handle to o
4f40: 62 74 61 69 6e 20 61 6e 64 20 73 74 6f 72 65 20  btain and store 
4f50: 74 68 65 20 6d 61 6e 61 67 65 64 20 76 61 6c 75  the managed valu
4f60: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  e..        /// f
4f70: 6f 72 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  or this object i
4f80: 6e 73 74 61 6e 63 65 2c 20 74 68 75 73 20 73 61  nstance, thus sa
4f90: 76 69 6e 67 20 69 74 20 66 6f 72 20 6c 61 74 65  ving it for late
4fa0: 72 20 75 73 65 2e 20 20 54 68 65 20 74 79 70 65  r use.  The type
4fb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66  ..        /// of
4fc0: 20 74 68 65 20 6d 61 6e 61 67 65 64 20 76 61 6c   the managed val
4fd0: 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64  ue is determined
4fe0: 20 62 79 20 74 68 65 20 74 79 70 65 20 61 66 66   by the type aff
4ff0: 69 6e 69 74 79 20 6f 66 20 74 68 65 0d 0a 20 20  inity of the..  
5000: 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
5010: 20 76 61 6c 75 65 2e 20 20 49 66 20 74 68 65 20   value.  If the 
5020: 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 69 73  type affinity is
5030: 20 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65 64 20   not recognized 
5040: 62 79 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20  by this..       
5050: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2c 20 6e 6f 20   /// method, no 
5060: 77 6f 72 6b 20 69 73 20 64 6f 6e 65 20 61 6e 64  work is done and
5070: 20 66 61 6c 73 65 20 69 73 20 72 65 74 75 72 6e   false is return
5080: 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
5090: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
50a0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
50b0: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
50c0: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
50d0: 6e 61 74 69 76 65 20 76 61 6c 75 65 20 77 61 73  native value was
50e0: 20 70 65 72 73 69 73 74 65 64 20 73 75 63 63 65   persisted succe
50f0: 73 73 66 75 6c 6c 79 2e 0d 0a 20 20 20 20 20 20  ssfully...      
5100: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
5110: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
5120: 20 62 6f 6f 6c 20 50 65 72 73 69 73 74 28 29 0d   bool Persist().
5130: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
5140: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28          switch (
5150: 47 65 74 54 79 70 65 41 66 66 69 6e 69 74 79 28  GetTypeAffinity(
5160: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
5170: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5180: 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69     case TypeAffi
5190: 6e 69 74 79 2e 55 6e 69 6e 69 74 69 61 6c 69 7a  nity.Uninitializ
51a0: 65 64 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed:..           
51b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
51c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51d0: 20 20 20 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c      value = null
51e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
51f0: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65             Preve
5200: 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29  ntNativeAccess()
5210: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5220: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
5230: 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74  n (persisted = t
5240: 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
5250: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
5270: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
5280: 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20 20 20  Int64:..        
5290: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
52a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52b0: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 47         value = G
52c0: 65 74 49 6e 74 36 34 28 29 3b 0d 0a 20 20 20 20  etInt64();..    
52d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52e0: 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76      PreventNativ
52f0: 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20  eAccess();..    
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5310: 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73      return (pers
5320: 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a  isted = true);..
5330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5340: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5350: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
5360: 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 3a  Affinity.Double:
5370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5380: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53a0: 20 76 61 6c 75 65 20 3d 20 47 65 74 44 6f 75 62   value = GetDoub
53b0: 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  le();..         
53c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
53d0: 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65  reventNativeAcce
53e0: 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ss();..         
53f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5400: 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64  eturn (persisted
5410: 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20   = true);..     
5420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5440: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5450: 69 74 79 2e 54 65 78 74 3a 0d 0a 20 20 20 20 20  ity.Text:..     
5460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5480: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
5490: 3d 20 47 65 74 53 74 72 69 6e 67 28 29 3b 0d 0a  = GetString();..
54a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54b0: 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e          PreventN
54c0: 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a  ativeAccess();..
54d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
54f0: 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65  persisted = true
5500: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5510: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5520: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
5530: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f  TypeAffinity.Blo
5540: 62 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b:..            
5550: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5570: 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74 42 79     value = GetBy
5580: 74 65 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  tes();..        
5590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55a0: 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63  PreventNativeAcc
55b0: 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ess();..        
55c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55d0: 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65  return (persiste
55e0: 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20  d = true);..    
55f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5600: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
5610: 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69     case TypeAffi
5620: 6e 69 74 79 2e 4e 75 6c 6c 3a 0d 0a 20 20 20 20  nity.Null:..    
5630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5640: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5650: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
5660: 20 3d 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 3b   = DBNull.Value;
5670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5680: 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e            Preven
5690: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b  tNativeAccess();
56a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
56b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
56c0: 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72   (persisted = tr
56d0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
56e0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
56f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66               def
5700: 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20  ault:..         
5710: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5730: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
5740: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
5750: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5760: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5770: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
5780: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
5790: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
57a0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
57b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57f0: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
5800: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  n SQLiteIndexCon
5810: 73 74 72 61 69 6e 74 4f 70 20 45 6e 75 6d 65 72  straintOp Enumer
5820: 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ation..    /// <
5830: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
5840: 2f 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20  / These are the 
5850: 61 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73 20 66  allowed values f
5860: 6f 72 20 74 68 65 20 6f 70 65 72 61 74 6f 72 73  or the operators
5870: 20 74 68 61 74 20 61 72 65 20 70 61 72 74 20 6f   that are part o
5880: 66 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e  f a..    /// con
5890: 73 74 72 61 69 6e 74 20 74 65 72 6d 20 69 6e 20  straint term in 
58a0: 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65  the WHERE clause
58b0: 20 6f 66 20 61 20 71 75 65 72 79 20 74 68 61 74   of a query that
58c0: 20 75 73 65 73 20 61 20 76 69 72 74 75 61 6c 0d   uses a virtual.
58d0: 0a 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 2e 0d  .    /// table..
58e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
58f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
5900: 65 6e 75 6d 20 53 51 4c 69 74 65 49 6e 64 65 78  enum SQLiteIndex
5910: 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 3a 20 62  ConstraintOp : b
5920: 79 74 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  yte..    {..    
5930: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5940: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
5950: 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73  his value repres
5960: 65 6e 74 73 20 74 68 65 20 65 71 75 61 6c 69 74  ents the equalit
5970: 79 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  y operator...   
5980: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5990: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 45 71 75  ry>..        Equ
59a0: 61 6c 54 6f 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20  alTo = 2,....   
59b0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
59c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
59d0: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
59e0: 73 65 6e 74 73 20 74 68 65 20 67 72 65 61 74 65  sents the greate
59f0: 72 20 74 68 61 6e 20 6f 70 65 72 61 74 6f 72 2e  r than operator.
5a00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
5a10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5a20: 20 20 47 72 65 61 74 65 72 54 68 61 6e 20 3d 20    GreaterThan = 
5a30: 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  4,....        //
5a40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5a50: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
5a60: 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74  lue represents t
5a70: 68 65 20 6c 65 73 73 20 74 68 61 6e 20 6f 72 20  he less than or 
5a80: 65 71 75 61 6c 20 74 6f 20 6f 70 65 72 61 74 6f  equal to operato
5a90: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
5aa0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5ab0: 20 20 20 20 4c 65 73 73 54 68 61 6e 4f 72 45 71      LessThanOrEq
5ac0: 75 61 6c 54 6f 20 3d 20 38 2c 0d 0a 0d 0a 20 20  ualTo = 8,....  
5ad0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5ae0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5af0: 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72   This value repr
5b00: 65 73 65 6e 74 73 20 74 68 65 20 6c 65 73 73 20  esents the less 
5b10: 74 68 61 6e 20 6f 70 65 72 61 74 6f 72 2e 0d 0a  than operator...
5b20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
5b30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5b40: 4c 65 73 73 54 68 61 6e 20 3d 20 31 36 2c 0d 0a  LessThan = 16,..
5b50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
5b60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
5b70: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
5b80: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 67  represents the g
5b90: 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65  reater than or e
5ba0: 71 75 61 6c 20 74 6f 20 6f 70 65 72 61 74 6f 72  qual to operator
5bb0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5bc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5bd0: 20 20 20 47 72 65 61 74 65 72 54 68 61 6e 4f 72     GreaterThanOr
5be0: 45 71 75 61 6c 54 6f 20 3d 20 33 32 2c 0d 0a 0d  EqualTo = 32,...
5bf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
5c00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5c10: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72  /// This value r
5c20: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 4d 41  epresents the MA
5c30: 54 43 48 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20  TCH operator... 
5c40: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
5c50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4d  mary>..        M
5c60: 61 74 63 68 20 3d 20 36 34 2c 0d 0a 0d 0a 20 20  atch = 64,....  
5c70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5c80: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5c90: 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72   This value repr
5ca0: 65 73 65 6e 74 73 20 74 68 65 20 4c 49 4b 45 20  esents the LIKE 
5cb0: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
5cc0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5cd0: 3e 0d 0a 20 20 20 20 20 20 20 20 4c 69 6b 65 20  >..        Like 
5ce0: 3d 20 36 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  = 65,....       
5cf0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5d00: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
5d10: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
5d20: 73 20 74 68 65 20 47 4c 4f 42 20 6f 70 65 72 61  s the GLOB opera
5d30: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
5d40: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5d50: 20 20 20 20 20 20 47 6c 6f 62 20 3d 20 36 36 2c        Glob = 66,
5d60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
5d70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5d80: 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75     /// This valu
5d90: 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  e represents the
5da0: 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f 72   REGEXP operator
5db0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5dc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5dd0: 20 20 20 52 65 67 65 78 70 20 3d 20 36 37 0d 0a     Regexp = 67..
5de0: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
5df0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
5e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e40: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
5e50: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e  #region SQLiteIn
5e60: 64 65 78 46 6c 61 67 73 20 45 6e 75 6d 65 72 61  dexFlags Enumera
5e70: 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  tion..    /// <s
5e80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
5e90: 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20 61   These are the a
5ea0: 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73 20 66 6f  llowed values fo
5eb0: 72 20 74 68 65 20 69 6e 64 65 78 20 66 6c 61 67  r the index flag
5ec0: 73 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  s from the..    
5ed0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
5ee0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
5ef0: 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f  ule.BestIndex" /
5f00: 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f  > method...    /
5f10: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5f20: 20 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20     [Flags()]..  
5f30: 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
5f40: 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 0d 0a  LiteIndexFlags..
5f50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
5f60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5f70: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 73 70 65        /// No spe
5f80: 63 69 61 6c 20 68 61 6e 64 6c 69 6e 67 2e 20 20  cial handling.  
5f90: 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61  This is the defa
5fa0: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ult...        //
5fb0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5fc0: 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20 30 78 30        None = 0x0
5fd0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ,....        ///
5fe0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5ff0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
6000: 75 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  ue indicates tha
6010: 74 20 74 68 65 20 73 63 61 6e 20 6f 66 20 74 68  t the scan of th
6020: 65 20 69 6e 64 65 78 20 77 69 6c 6c 20 76 69 73  e index will vis
6030: 69 74 20 61 74 0d 0a 20 20 20 20 20 20 20 20 2f  it at..        /
6040: 2f 2f 20 6d 6f 73 74 20 6f 6e 65 20 72 6f 77 2e  // most one row.
6050: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6060: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6070: 20 20 53 63 61 6e 55 6e 69 71 75 65 20 3d 20 30    ScanUnique = 0
6080: 78 31 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  x1..    }..    #
6090: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
60a0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
60b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
60f0: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
6100: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
6110: 74 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a  t Helper Class..
6120: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6130: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
6140: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
6150: 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
6160: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
6170: 61 69 6e 74 20 73 74 72 75 63 74 75 72 65 0d 0a  aint structure..
6180: 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65      /// from the
6190: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
61a0: 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rary...    /// <
61b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
61c0: 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61  ublic sealed cla
61d0: 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ss SQLiteIndexCo
61e0: 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d  nstraint..    {.
61f0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
6200: 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72   Internal Constr
6210: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
6220: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6230: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
6240: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
6250: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
6260: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
6270: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
6280: 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
6290: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
62a0: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
62b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
62c0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
62d0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
62e0: 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20  nstraint">..    
62f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
6300: 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ve sqlite3_index
6310: 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72 75  _constraint stru
6320: 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d 0a 20  cture to use... 
6330: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
6340: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
6350: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
6360: 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20  xConstraint(..  
6370: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
6380: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
6390: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
63a0: 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e  traint constrain
63b0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
63c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
63d0: 74 68 69 73 28 63 6f 6e 73 74 72 61 69 6e 74 2e  this(constraint.
63e0: 69 43 6f 6c 75 6d 6e 2c 20 63 6f 6e 73 74 72 61  iColumn, constra
63f0: 69 6e 74 2e 6f 70 2c 20 63 6f 6e 73 74 72 61 69  int.op, constrai
6400: 6e 74 2e 75 73 61 62 6c 65 2c 0d 0a 20 20 20 20  nt.usable,..    
6410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
6420: 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f  onstraint.iTermO
6430: 66 66 73 65 74 29 0d 0a 20 20 20 20 20 20 20 20  ffset)..        
6440: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
6450: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
6460: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
6470: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6480: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
64d0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
64e0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
64f0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
6500: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6510: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
6520: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
6530: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
6540: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
6550: 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20 20 20  ied field..     
6560: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a     /// values...
6570: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
6580: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6590: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
65a0: 22 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20 20 20  "iColumn">..    
65b0: 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6f      /// Column o
65c0: 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65  n left-hand side
65d0: 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d   of constraint..
65e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
65f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
6600: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6610: 6f 70 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  op">..        //
6620: 2f 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f 70 65  / Constraint ope
6630: 72 61 74 6f 72 20 28 3c 73 65 65 20 63 72 65 66  rator (<see cref
6640: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  ="SQLiteIndexCon
6650: 73 74 72 61 69 6e 74 4f 70 22 20 2f 3e 29 2e 0d  straintOp" />)..
6660: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
6670: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
6680: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6690: 75 73 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  usable">..      
66a0: 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 74 68    /// True if th
66b0: 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73  is constraint is
66c0: 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20   usable...      
66d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
66e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
66f0: 61 6d 20 6e 61 6d 65 3d 22 69 54 65 72 6d 4f 66  am name="iTermOf
6700: 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
6710: 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e 61  /// Used interna
6720: 6c 6c 79 20 2d 20 3c 73 65 65 20 63 72 65 66 3d  lly - <see cref=
6730: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
6740: 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22  odule.BestIndex"
6750: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
6760: 20 73 68 6f 75 6c 64 20 69 67 6e 6f 72 65 2e 0d   should ignore..
6770: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
6780: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
6790: 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64  rivate SQLiteInd
67a0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20  exConstraint(.. 
67b0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
67c0: 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20  Column,..       
67d0: 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
67e0: 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 2c  ConstraintOp op,
67f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
6800: 74 65 20 75 73 61 62 6c 65 2c 0d 0a 20 20 20 20  te usable,..    
6810: 20 20 20 20 20 20 20 20 69 6e 74 20 69 54 65 72          int iTer
6820: 6d 4f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20  mOffset..       
6830: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
6840: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
6850: 68 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d 20 69 43  his.iColumn = iC
6860: 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
6870: 20 20 20 20 74 68 69 73 2e 6f 70 20 3d 20 6f 70      this.op = op
6880: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
6890: 68 69 73 2e 75 73 61 62 6c 65 20 3d 20 75 73 61  his.usable = usa
68a0: 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ble;..          
68b0: 20 20 74 68 69 73 2e 69 54 65 72 6d 4f 66 66 73    this.iTermOffs
68c0: 65 74 20 3d 20 69 54 65 72 6d 4f 66 66 73 65 74  et = iTermOffset
68d0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
68e0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
68f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
6900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6940: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
6950: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 46 69 65  egion Public Fie
6960: 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lds..        ///
6970: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6980: 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6f      /// Column o
6990: 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65  n left-hand side
69a0: 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d   of constraint..
69b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
69c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
69d0: 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c   public int iCol
69e0: 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  umn;....        
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a30: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
6a40: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6a50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
6a60: 73 74 72 61 69 6e 74 20 6f 70 65 72 61 74 6f 72  straint operator
6a70: 20 28 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c   (<see cref="SQL
6a80: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
6a90: 6e 74 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20 20 20  ntOp" />)...    
6aa0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6ab0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
6ac0: 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
6ad0: 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a  nstraintOp op;..
6ae0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
6af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
6b40: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6b50: 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 74     /// True if t
6b60: 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  his constraint i
6b70: 73 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20 20 20  s usable...     
6b80: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6b90: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
6ba0: 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a  c byte usable;..
6bb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
6bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
6c10: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6c20: 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65     /// Used inte
6c30: 72 6e 61 6c 6c 79 20 2d 20 3c 73 65 65 20 63 72  rnally - <see cr
6c40: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
6c50: 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
6c60: 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  ex" />..        
6c70: 2f 2f 2f 20 73 68 6f 75 6c 64 20 69 67 6e 6f 72  /// should ignor
6c80: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
6c90: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6ca0: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
6cb0: 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20  TermOffset;..   
6cc0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
6cd0: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
6ce0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
6cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6d40: 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49   #region SQLiteI
6d50: 6e 64 65 78 4f 72 64 65 72 42 79 20 48 65 6c 70  ndexOrderBy Help
6d60: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
6d70: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6d80: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
6d90: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e  represents the n
6da0: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e  ative sqlite3_in
6db0: 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74 72 75  dex_orderby stru
6dc0: 63 74 75 72 65 20 66 72 6f 6d 0d 0a 20 20 20 20  cture from..    
6dd0: 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20 63  /// the SQLite c
6de0: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
6df0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
6e00: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61  ..    public sea
6e10: 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
6e20: 49 6e 64 65 78 4f 72 64 65 72 42 79 0d 0a 20 20  IndexOrderBy..  
6e30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
6e40: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f  gion Internal Co
6e50: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
6e60: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6e70: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
6e80: 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
6e90: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
6ea0: 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70  ass using the sp
6eb0: 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a  ecified native..
6ec0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
6ed0: 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
6ee0: 79 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  y structure...  
6ef0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6f00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
6f10: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
6f20: 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20 20 20  rderBy">..      
6f30: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
6f40: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f   sqlite3_index_o
6f50: 72 64 65 72 62 79 20 73 74 72 75 63 74 75 72 65  rderby structure
6f60: 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   to use...      
6f70: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6f80: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
6f90: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
6fa0: 72 42 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rBy(..          
6fb0: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
6fc0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
6fd0: 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72 64 65  dex_orderby orde
6fe0: 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rBy..           
6ff0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
7000: 3a 20 74 68 69 73 28 6f 72 64 65 72 42 79 2e 69  : this(orderBy.i
7010: 43 6f 6c 75 6d 6e 2c 20 6f 72 64 65 72 42 79 2e  Column, orderBy.
7020: 64 65 73 63 29 0d 0a 20 20 20 20 20 20 20 20 7b  desc)..        {
7030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
7040: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
7050: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
7060: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
7070: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
70c0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
70d0: 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75   Private Constru
70e0: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
70f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7100: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
7110: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
7120: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 75   of this class u
7130: 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  sing the specifi
7140: 65 64 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20  ed field..      
7150: 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a 20    /// values... 
7160: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
7170: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7180: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7190: 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20 20 20 20  iColumn">..     
71a0: 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6e 75     /// Column nu
71b0: 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
71c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
71d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
71e0: 6e 61 6d 65 3d 22 64 65 73 63 22 3e 0d 0a 20 20  name="desc">..  
71f0: 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 66        /// True f
7200: 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20  or DESC.  False 
7210: 66 6f 72 20 41 53 43 2e 0d 0a 20 20 20 20 20 20  for ASC...      
7220: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
7230: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
7240: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
7250: 42 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  By(..           
7260: 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c 0d 0a 20   int iColumn,.. 
7270: 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 20             byte 
7280: 64 65 73 63 0d 0a 20 20 20 20 20 20 20 20 20 20  desc..          
7290: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
72a0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
72b0: 2e 69 43 6f 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75  .iColumn = iColu
72c0: 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn;..           
72d0: 20 74 68 69 73 2e 64 65 73 63 20 3d 20 64 65 73   this.desc = des
72e0: 63 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  c;..        }.. 
72f0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
7300: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
7310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7350: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
7360: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 46 69  region Public Fi
7370: 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  elds..        //
7380: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7390: 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20       /// Column 
73a0: 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20  number...       
73b0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
73c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
73d0: 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a  int iColumn;....
73e0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
73f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7410: 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
7430: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7440: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7450: 20 2f 2f 2f 20 54 72 75 65 20 66 6f 72 20 44 45   /// True for DE
7460: 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41  SC.  False for A
7470: 53 43 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  SC...        ///
7480: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7490: 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
74a0: 20 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20   desc;..        
74b0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
74c0: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
74d0: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
74e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7520: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
7530: 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ion SQLiteIndexC
7540: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 48  onstraintUsage H
7550: 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20  elper Class..   
7560: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7570: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
7580: 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ss represents th
7590: 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
75a0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
75b0: 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 2f 2f 2f  t_usage..    ///
75c0: 20 73 74 72 75 63 74 75 72 65 20 66 72 6f 6d 20   structure from 
75d0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
75e0: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
75f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7600: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
7610: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
7620: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
7630: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
7640: 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61   #region Interna
7650: 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  l Constructors..
7660: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
7670: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7680: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 20  // Constructs a 
7690: 64 65 66 61 75 6c 74 20 69 6e 73 74 61 6e 63 65  default instance
76a0: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
76b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
76c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
76d0: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
76e0: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
76f0: 73 61 67 65 28 29 0d 0a 20 20 20 20 20 20 20 20  sage()..        
7700: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
7710: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
7720: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7730: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7780: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7790: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
77a0: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
77b0: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
77c0: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
77d0: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
77e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
77f0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
7800: 74 72 61 69 6e 74 5f 75 73 61 67 65 20 73 74 72  traint_usage str
7810: 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
7820: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7830: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
7840: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 73 74 72  ram name="constr
7850: 61 69 6e 74 55 73 61 67 65 22 3e 0d 0a 20 20 20  aintUsage">..   
7860: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
7870: 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ive sqlite3_inde
7880: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
7890: 67 65 20 73 74 72 75 63 74 75 72 65 20 74 6f 20  ge structure to 
78a0: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
78b0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
78c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
78d0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
78e0: 6e 74 55 73 61 67 65 28 0d 0a 20 20 20 20 20 20  ntUsage(..      
78f0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
7900: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
7910: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
7920: 6e 74 5f 75 73 61 67 65 20 63 6f 6e 73 74 72 61  nt_usage constra
7930: 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20  intUsage..      
7940: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
7950: 20 20 20 20 20 3a 20 74 68 69 73 28 63 6f 6e 73       : this(cons
7960: 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76  traintUsage.argv
7970: 49 6e 64 65 78 2c 20 63 6f 6e 73 74 72 61 69 6e  Index, constrain
7980: 74 55 73 61 67 65 2e 6f 6d 69 74 29 0d 0a 20 20  tUsage.omit)..  
7990: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
79a0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
79b0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
79c0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
79d0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
79e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a20: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
7a30: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
7a40: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
7a50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7a60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
7a70: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
7a80: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
7a90: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
7aa0: 73 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 0d  specified field.
7ab0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
7ac0: 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ues...        //
7ad0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7ae0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
7af0: 20 6e 61 6d 65 3d 22 61 72 67 76 49 6e 64 65 78   name="argvIndex
7b00: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
7b10: 49 66 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  If greater than 
7b20: 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73  0, constraint is
7b30: 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f   part of argv to
7b40: 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20 20   xFilter...     
7b50: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
7b60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
7b70: 72 61 6d 20 6e 61 6d 65 3d 22 6f 6d 69 74 22 3e  ram name="omit">
7b80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 6f  ..        /// Do
7b90: 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74   not code a test
7ba0: 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72   for this constr
7bb0: 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aint...        /
7bc0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
7bd0: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
7be0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
7bf0: 6e 74 55 73 61 67 65 28 0d 0a 20 20 20 20 20 20  ntUsage(..      
7c00: 20 20 20 20 20 20 69 6e 74 20 61 72 67 76 49 6e        int argvIn
7c10: 64 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  dex,..          
7c20: 20 20 62 79 74 65 20 6f 6d 69 74 0d 0a 20 20 20    byte omit..   
7c30: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
7c40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7c50: 20 20 20 74 68 69 73 2e 61 72 67 76 49 6e 64 65     this.argvInde
7c60: 78 20 3d 20 61 72 67 76 49 6e 64 65 78 3b 0d 0a  x = argvIndex;..
7c70: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
7c80: 2e 6f 6d 69 74 20 3d 20 6f 6d 69 74 3b 0d 0a 20  .omit = omit;.. 
7c90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7ca0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7cb0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7d00: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
7d10: 6f 6e 20 50 75 62 6c 69 63 20 46 69 65 6c 64 73  on Public Fields
7d20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7d30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7d40: 20 2f 2f 2f 20 49 66 20 67 72 65 61 74 65 72 20   /// If greater 
7d50: 74 68 61 6e 20 30 2c 20 63 6f 6e 73 74 72 61 69  than 0, constrai
7d60: 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72  nt is part of ar
7d70: 67 76 20 74 6f 20 78 46 69 6c 74 65 72 2e 0d 0a  gv to xFilter...
7d80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
7d90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7da0: 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49  public int argvI
7db0: 6e 64 65 78 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ndex;....       
7dc0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e00: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
7e10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7e20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
7e30: 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73  o not code a tes
7e40: 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74  t for this const
7e50: 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  raint...        
7e60: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7e70: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
7e80: 79 74 65 20 6f 6d 69 74 3b 0d 0a 20 20 20 20 20  yte omit;..     
7e90: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
7ea0: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
7eb0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
7ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f00: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
7f10: 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64  region SQLiteInd
7f20: 65 78 49 6e 70 75 74 73 20 48 65 6c 70 65 72 20  exInputs Helper 
7f30: 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
7f40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
7f50: 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70  / This class rep
7f60: 72 65 73 65 6e 74 73 20 74 68 65 20 76 61 72 69  resents the vari
7f70: 6f 75 73 20 69 6e 70 75 74 73 20 70 72 6f 76 69  ous inputs provi
7f80: 64 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74  ded by the SQLit
7f90: 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f 20  e core..    /// 
7fa0: 6c 69 62 72 61 72 79 20 74 6f 20 74 68 65 20 3c  library to the <
7fb0: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
7fc0: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42  eManagedModule.B
7fd0: 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74  estIndex" /> met
7fe0: 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  hod...    /// </
7ff0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
8000: 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73  blic sealed clas
8010: 73 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  s SQLiteIndexInp
8020: 75 74 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  uts..    {..    
8030: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
8040: 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72  rnal Constructor
8050: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
8060: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8070: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
8080: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
8090: 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
80a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
80b0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
80c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43   <param name="nC
80d0: 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20  onstraint">..   
80e0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
80f0: 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ber of <see cref
8100: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  ="SQLiteIndexCon
8110: 73 74 72 61 69 6e 74 22 20 2f 3e 20 69 6e 73 74  straint" /> inst
8120: 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20  ances to..      
8130: 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61    /// pre-alloca
8140: 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20  te space for... 
8150: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
8160: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
8170: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f   <param name="nO
8180: 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20 20 20  rderBy">..      
8190: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
81a0: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
81b0: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
81c0: 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20  y" /> instances 
81d0: 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
81e0: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61  pre-allocate spa
81f0: 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20  ce for...       
8200: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8210: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
8220: 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74  SQLiteIndexInput
8230: 73 28 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e  s(int nConstrain
8240: 74 2c 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 29  t, int nOrderBy)
8250: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
8260: 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61           constra
8270: 69 6e 74 73 20 3d 20 6e 65 77 20 53 51 4c 69 74  ints = new SQLit
8280: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
8290: 5b 6e 43 6f 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a  [nConstraint];..
82a0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 64 65              orde
82b0: 72 42 79 73 20 3d 20 6e 65 77 20 53 51 4c 69 74  rBys = new SQLit
82c0: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 6e 4f  eIndexOrderBy[nO
82d0: 72 64 65 72 42 79 5d 3b 0d 0a 20 20 20 20 20 20  rderBy];..      
82e0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
82f0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
8300: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8350: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
8360: 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d  blic Properties.
8370: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
8380: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
8390: 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61  traint[] constra
83a0: 69 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ints;..        /
83b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
83c0: 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72        /// An arr
83d0: 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ay of <see cref=
83e0: 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73  "SQLiteIndexCons
83f0: 74 72 61 69 6e 74 22 20 2f 3e 20 6f 62 6a 65 63  traint" /> objec
8400: 74 20 69 6e 73 74 61 6e 63 65 73 2c 0d 0a 20 20  t instances,..  
8410: 20 20 20 20 20 20 2f 2f 2f 20 65 61 63 68 20 63        /// each c
8420: 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d  ontaining inform
8430: 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 64 20 62  ation supplied b
8440: 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  y the SQLite cor
8450: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
8460: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8470: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
8480: 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
8490: 6e 73 74 72 61 69 6e 74 5b 5d 20 43 6f 6e 73 74  nstraint[] Const
84a0: 72 61 69 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  raints..        
84b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
84c0: 65 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e 73  et { return cons
84d0: 74 72 61 69 6e 74 73 3b 20 7d 0d 0a 20 20 20 20  traints; }..    
84e0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
84f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8530: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8540: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
8550: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d  teIndexOrderBy[]
8560: 20 6f 72 64 65 72 42 79 73 3b 0d 0a 20 20 20 20   orderBys;..    
8570: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8580: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
8590: 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20  n array of <see 
85a0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
85b0: 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 6f 62 6a  xOrderBy" /> obj
85c0: 65 63 74 20 69 6e 73 74 61 6e 63 65 73 2c 0d 0a  ect instances,..
85d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 61 63 68          /// each
85e0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f   containing info
85f0: 72 6d 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 64  rmation supplied
8600: 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
8610: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
8620: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
8630: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
8640: 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
8650: 4f 72 64 65 72 42 79 5b 5d 20 4f 72 64 65 72 42  OrderBy[] OrderB
8660: 79 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ys..        {.. 
8670: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
8680: 20 72 65 74 75 72 6e 20 6f 72 64 65 72 42 79 73   return orderBys
8690: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
86a0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
86b0: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
86c0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
86d0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
86e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8720: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
8730: 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 48  teIndexOutputs H
8740: 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20  elper Class..   
8750: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8760: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
8770: 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ss represents th
8780: 65 20 76 61 72 69 6f 75 73 20 6f 75 74 70 75 74  e various output
8790: 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
87a0: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20  e SQLite core.. 
87b0: 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 62     /// library b
87c0: 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  y the <see cref=
87d0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
87e0: 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22  odule.BestIndex"
87f0: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
8800: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8810: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c  .    public seal
8820: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49  ed class SQLiteI
8830: 6e 64 65 78 4f 75 74 70 75 74 73 0d 0a 20 20 20  ndexOutputs..   
8840: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
8850: 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e  ion Internal Con
8860: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
8870: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8880: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
8890: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
88a0: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
88b0: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
88c0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
88d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
88e0: 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e  name="nConstrain
88f0: 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
8900: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
8910: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
8920: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
8930: 73 61 67 65 22 20 2f 3e 20 69 6e 73 74 61 6e 63  sage" /> instanc
8940: 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  es..        /// 
8950: 74 6f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20  to pre-allocate 
8960: 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20  space for...    
8970: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
8980: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
8990: 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75  al SQLiteIndexOu
89a0: 74 70 75 74 73 28 69 6e 74 20 6e 43 6f 6e 73 74  tputs(int nConst
89b0: 72 61 69 6e 74 29 0d 0a 20 20 20 20 20 20 20 20  raint)..        
89c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
89d0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 20  onstraintUsages 
89e0: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
89f0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
8a00: 5b 6e 43 6f 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a  [nConstraint];..
8a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
8a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
8a30: 20 42 55 47 46 49 58 3a 20 43 72 65 61 74 65 20   BUGFIX: Create 
8a40: 74 68 65 20 5b 65 6d 70 74 79 5d 20 63 6f 6e 73  the [empty] cons
8a50: 74 72 61 69 6e 74 20 75 73 61 67 65 73 20 6e 6f  traint usages no
8a60: 77 20 73 6f 20 74 68 65 79 20 63 61 6e 20 62 65  w so they can be
8a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
8a80: 20 20 20 20 20 20 20 20 20 75 73 65 64 20 62 79           used by
8a90: 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   the xBestIndex 
8aa0: 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20 20 20  callback...     
8ab0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
8ac0: 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
8ad0: 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b  iConstraint = 0;
8ae0: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e   iConstraint < n
8af0: 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e  Constraint; iCon
8b00: 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20  straint++)..    
8b10: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
8b20: 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69 43 6f  traintUsages[iCo
8b30: 6e 73 74 72 61 69 6e 74 5d 20 3d 20 6e 65 77 20  nstraint] = new 
8b40: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
8b50: 72 61 69 6e 74 55 73 61 67 65 28 29 3b 0d 0a 20  raintUsage();.. 
8b60: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8b70: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
8b80: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
8b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8bd0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8be0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8bf0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
8c00: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 65   if the native e
8c10: 73 74 69 6d 61 74 65 64 52 6f 77 73 20 66 69 65  stimatedRows fie
8c20: 6c 64 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20  ld can be used, 
8c30: 62 61 73 65 64 20 6f 6e 0d 0a 20 20 20 20 20 20  based on..      
8c40: 20 20 2f 2f 2f 20 74 68 65 20 61 76 61 69 6c 61    /// the availa
8c50: 62 6c 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74  ble version of t
8c60: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
8c70: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
8c80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8c90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
8ca0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
8cb0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
8cc0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 45  the <see cref="E
8cd0: 73 74 69 6d 61 74 65 64 52 6f 77 73 22 20 2f 3e  stimatedRows" />
8ce0: 20 70 72 6f 70 65 72 74 79 20 69 73 20 73 75 70   property is sup
8cf0: 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ported..        
8d00: 2f 2f 2f 20 62 79 20 74 68 65 20 53 51 4c 69 74  /// by the SQLit
8d10: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
8d20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
8d30: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
8d40: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 61 6e   public bool Can
8d50: 55 73 65 45 73 74 69 6d 61 74 65 64 52 6f 77 73  UseEstimatedRows
8d60: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
8d70: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 55             if (U
8d80: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
8d90: 64 73 2e 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  ds.sqlite3_libve
8da0: 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 20 3e  rsion_number() >
8db0: 3d 20 33 30 30 38 30 30 32 29 0d 0a 20 20 20 20  = 3008002)..    
8dc0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8dd0: 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20  rn true;....    
8de0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
8df0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
8e00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
8e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e50: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
8e60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8e70: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
8e80: 69 6e 65 73 20 69 66 20 74 68 65 20 6e 61 74 69  ines if the nati
8e90: 76 65 20 66 6c 61 67 73 20 66 69 65 6c 64 20 63  ve flags field c
8ea0: 61 6e 20 62 65 20 75 73 65 64 2c 20 62 61 73 65  an be used, base
8eb0: 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  d on the..      
8ec0: 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 20    /// available 
8ed0: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53  version of the S
8ee0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
8ef0: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
8f00: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8f10: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
8f20: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
8f30: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
8f40: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 64 65 78  <see cref="Index
8f50: 46 6c 61 67 73 22 20 2f 3e 20 70 72 6f 70 65 72  Flags" /> proper
8f60: 74 79 20 69 73 20 73 75 70 70 6f 72 74 65 64 20  ty is supported 
8f70: 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  by..        /// 
8f80: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
8f90: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
8fa0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
8fb0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
8fc0: 20 62 6f 6f 6c 20 43 61 6e 55 73 65 49 6e 64 65   bool CanUseInde
8fd0: 78 46 6c 61 67 73 28 29 0d 0a 20 20 20 20 20 20  xFlags()..      
8fe0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8ff0: 20 69 66 20 28 55 6e 73 61 66 65 4e 61 74 69 76   if (UnsafeNativ
9000: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
9010: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
9020: 65 72 28 29 20 3e 3d 20 33 30 30 39 30 30 30 29  er() >= 3009000)
9030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9040: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
9050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
9060: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
9070: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9080: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
90d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
90e0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
90f0: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
9100: 65 20 6e 61 74 69 76 65 20 66 6c 61 67 73 20 66  e native flags f
9110: 69 65 6c 64 20 63 61 6e 20 62 65 20 75 73 65 64  ield can be used
9120: 2c 20 62 61 73 65 64 20 6f 6e 20 74 68 65 0d 0a  , based on the..
9130: 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 76 61 69          /// avai
9140: 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 6f 66  lable version of
9150: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
9160: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
9170: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9180: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
9190: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
91a0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
91b0: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
91c0: 22 43 6f 6c 75 6d 6e 73 55 73 65 64 22 20 2f 3e  "ColumnsUsed" />
91d0: 20 70 72 6f 70 65 72 74 79 20 69 73 20 73 75 70   property is sup
91e0: 70 6f 72 74 65 64 20 62 79 0d 0a 20 20 20 20 20  ported by..     
91f0: 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74     /// the SQLit
9200: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
9210: 0a 20 20 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 20  eturns>..       
9230: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 61 6e   public bool Can
9240: 55 73 65 43 6f 6c 75 6d 6e 73 55 73 65 64 28 29  UseColumnsUsed()
9250: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9260: 20 20 20 20 20 20 20 20 20 69 66 20 28 55 6e 73           if (Uns
9270: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
9280: 2e 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73  .sqlite3_libvers
9290: 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 20 3e 3d 20  ion_number() >= 
92a0: 33 30 31 30 30 30 30 29 0d 0a 20 20 20 20 20 20  3010000)..      
92b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
92c0: 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
92d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
92e0: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  se;..        }..
92f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
9300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9340: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
9350: 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70  gion Public Prop
9360: 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
9370: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
9380: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
9390: 67 65 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 55  ge[] constraintU
93a0: 73 61 67 65 73 3b 0d 0a 20 20 20 20 20 20 20 20  sages;..        
93b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
93c0: 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72         /// An ar
93d0: 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ray of <see cref
93e0: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  ="SQLiteIndexCon
93f0: 73 74 72 61 69 6e 74 55 73 61 67 65 22 20 2f 3e  straintUsage" />
9400: 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
9410: 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 73 2c 20   /// instances, 
9420: 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20  each containing 
9430: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 62  information to b
9440: 65 20 73 75 70 70 6c 69 65 64 20 74 6f 20 74 68  e supplied to th
9450: 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20  e SQLite..      
9460: 20 20 2f 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61    /// core libra
9470: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
9480: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9490: 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
94a0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
94b0: 74 55 73 61 67 65 5b 5d 20 43 6f 6e 73 74 72 61  tUsage[] Constra
94c0: 69 6e 74 55 73 61 67 65 73 0d 0a 20 20 20 20 20  intUsages..     
94d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
94e0: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 63    get { return c
94f0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 3b  onstraintUsages;
9500: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9510: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
9520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9560: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
9570: 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d  ate int indexNum
9580: 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber;..        //
9590: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
95a0: 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20       /// Number 
95b0: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
95c0: 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
95d0: 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20  ed index.  This 
95e0: 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20  value will..    
95f0: 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72 20 62 65      /// later be
9600: 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
9610: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
9620: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
9630: 2e 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20  .Filter" />..   
9640: 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e       /// method.
9650: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
9660: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9670: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 49 6e 64    public int Ind
9680: 65 78 4e 75 6d 62 65 72 0d 0a 20 20 20 20 20 20  exNumber..      
9690: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
96a0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e   get { return in
96b0: 64 65 78 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20  dexNumber; }..  
96c0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
96d0: 69 6e 64 65 78 4e 75 6d 62 65 72 20 3d 20 76 61  indexNumber = va
96e0: 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
96f0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
9700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9740: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
9750: 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 69  private string i
9760: 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20  ndexString;..   
9770: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9780: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
9790: 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20 68  String used to h
97a0: 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65  elp identify the
97b0: 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
97c0: 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c    This value wil
97d0: 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  l..        /// l
97e0: 61 74 65 72 20 62 65 20 70 72 6f 76 69 64 65 64  ater be provided
97f0: 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65   to the <see cre
9800: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
9810: 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20  dModule.Filter" 
9820: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
9830: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
9840: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9850: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
9860: 73 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69  string IndexStri
9870: 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ng..        {.. 
9880: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
9890: 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53 74 72   return indexStr
98a0: 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ing; }..        
98b0: 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65 78 53      set { indexS
98c0: 74 72 69 6e 67 20 3d 20 76 61 6c 75 65 3b 20 7d  tring = value; }
98d0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
98e0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
98f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9930: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
9940: 65 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65  e int needToFree
9950: 49 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20  IndexString;..  
9960: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
9970: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
9980: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
9990: 20 69 6e 64 65 78 20 73 74 72 69 6e 67 20 6d 75   index string mu
99a0: 73 74 20 62 65 20 66 72 65 65 64 20 62 79 20 74  st be freed by t
99b0: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a  he SQLite core..
99c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72          /// libr
99d0: 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
99e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
99f0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
9a00: 20 4e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78   NeedToFreeIndex
9a10: 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  String..        
9a20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
9a30: 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 65 65 64  et { return need
9a40: 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
9a50: 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  g; }..          
9a60: 20 20 73 65 74 20 7b 20 6e 65 65 64 54 6f 46 72    set { needToFr
9a70: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20 3d 20  eeIndexString = 
9a80: 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
9a90: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
9aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ae0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9af0: 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 6f 72    private int or
9b00: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 0d 0a  derByConsumed;..
9b10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
9b20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
9b30: 2f 2f 20 54 72 75 65 20 69 66 20 6f 75 74 70 75  // True if outpu
9b40: 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64  t is already ord
9b50: 65 72 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ered...        /
9b60: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9b70: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
9b80: 74 20 4f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65  t OrderByConsume
9b90: 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
9ba0: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
9bb0: 72 65 74 75 72 6e 20 6f 72 64 65 72 42 79 43 6f  return orderByCo
9bc0: 6e 73 75 6d 65 64 3b 20 7d 0d 0a 20 20 20 20 20  nsumed; }..     
9bd0: 20 20 20 20 20 20 20 73 65 74 20 7b 20 6f 72 64         set { ord
9be0: 65 72 42 79 43 6f 6e 73 75 6d 65 64 20 3d 20 76  erByConsumed = v
9bf0: 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
9c00: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
9c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c50: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9c60: 20 70 72 69 76 61 74 65 20 64 6f 75 62 6c 65 3f   private double?
9c70: 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 0d   estimatedCost;.
9c80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
9c90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9ca0: 2f 2f 2f 20 45 73 74 69 6d 61 74 65 64 20 63 6f  /// Estimated co
9cb0: 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73  st of using this
9cc0: 20 69 6e 64 65 78 2e 20 20 55 73 69 6e 67 20 61   index.  Using a
9cd0: 20 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65 72 65   null value here
9ce0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
9cf0: 64 69 63 61 74 65 73 20 74 68 61 74 20 61 20 64  dicates that a d
9d00: 65 66 61 75 6c 74 20 65 73 74 69 6d 61 74 65 64  efault estimated
9d10: 20 63 6f 73 74 20 76 61 6c 75 65 20 73 68 6f 75   cost value shou
9d20: 6c 64 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  ld be used...   
9d30: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9d40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
9d50: 6c 69 63 20 64 6f 75 62 6c 65 3f 20 45 73 74 69  lic double? Esti
9d60: 6d 61 74 65 64 43 6f 73 74 0d 0a 20 20 20 20 20  matedCost..     
9d70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9d80: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 65    get { return e
9d90: 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 7d 0d  stimatedCost; }.
9da0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
9db0: 20 7b 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74   { estimatedCost
9dc0: 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
9dd0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9de0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9e30: 20 20 20 20 20 70 72 69 76 61 74 65 20 6c 6f 6e       private lon
9e40: 67 3f 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73  g? estimatedRows
9e50: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
9e60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9e70: 20 20 2f 2f 2f 20 45 73 74 69 6d 61 74 65 64 20    /// Estimated 
9e80: 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72  number of rows r
9e90: 65 74 75 72 6e 65 64 2e 20 20 55 73 69 6e 67 20  eturned.  Using 
9ea0: 61 20 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65 72  a null value her
9eb0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
9ec0: 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61 20  ndicates that a 
9ed0: 64 65 66 61 75 6c 74 20 65 73 74 69 6d 61 74 65  default estimate
9ee0: 64 20 72 6f 77 73 20 76 61 6c 75 65 20 73 68 6f  d rows value sho
9ef0: 75 6c 64 20 62 65 20 75 73 65 64 2e 0d 0a 20 20  uld be used...  
9f00: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 70        /// This p
9f10: 72 6f 70 65 72 74 79 20 68 61 73 20 6e 6f 20 65  roperty has no e
9f20: 66 66 65 63 74 20 69 66 20 74 68 65 20 53 51 4c  ffect if the SQL
9f30: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
9f40: 20 69 73 20 6e 6f 74 20 61 74 0d 0a 20 20 20 20   is not at..    
9f50: 20 20 20 20 2f 2f 2f 20 6c 65 61 73 74 20 76 65      /// least ve
9f60: 72 73 69 6f 6e 20 33 2e 38 2e 32 2e 0d 0a 20 20  rsion 3.8.2...  
9f70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9f80: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
9f90: 62 6c 69 63 20 6c 6f 6e 67 3f 20 45 73 74 69 6d  blic long? Estim
9fa0: 61 74 65 64 52 6f 77 73 0d 0a 20 20 20 20 20 20  atedRows..      
9fb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9fc0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 65 73   get { return es
9fd0: 74 69 6d 61 74 65 64 52 6f 77 73 3b 20 7d 0d 0a  timatedRows; }..
9fe0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
9ff0: 7b 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 20  { estimatedRows 
a000: 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
a010: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a020: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a060: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
a070: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
a080: 74 65 49 6e 64 65 78 46 6c 61 67 73 3f 20 69 6e  teIndexFlags? in
a090: 64 65 78 46 6c 61 67 73 3b 0d 0a 20 20 20 20 20  dexFlags;..     
a0a0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a0b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
a0c0: 65 20 66 6c 61 67 73 20 74 68 61 74 20 73 68 6f  e flags that sho
a0d0: 75 6c 64 20 62 65 20 75 73 65 64 20 77 69 74 68  uld be used with
a0e0: 20 74 68 69 73 20 69 6e 64 65 78 2e 20 20 55 73   this index.  Us
a0f0: 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  ing a null value
a100: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 68 65  ..        /// he
a110: 72 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  re indicates tha
a120: 74 20 61 20 64 65 66 61 75 6c 74 20 66 6c 61 67  t a default flag
a130: 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62  s value should b
a140: 65 20 75 73 65 64 2e 20 20 54 68 69 73 0d 0a 20  e used.  This.. 
a150: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 70 65         /// prope
a160: 72 74 79 20 68 61 73 20 6e 6f 20 65 66 66 65 63  rty has no effec
a170: 74 20 69 66 20 74 68 65 20 53 51 4c 69 74 65 20  t if the SQLite 
a180: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 73 20  core library is 
a190: 6e 6f 74 20 61 74 20 6c 65 61 73 74 0d 0a 20 20  not at least..  
a1a0: 20 20 20 20 20 20 2f 2f 2f 20 76 65 72 73 69 6f        /// versio
a1b0: 6e 20 33 2e 39 2e 30 2e 0d 0a 20 20 20 20 20 20  n 3.9.0...      
a1c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a1d0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
a1e0: 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67   SQLiteIndexFlag
a1f0: 73 3f 20 49 6e 64 65 78 46 6c 61 67 73 0d 0a 20  s? IndexFlags.. 
a200: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a210: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
a220: 72 6e 20 69 6e 64 65 78 46 6c 61 67 73 3b 20 7d  rn indexFlags; }
a230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
a240: 74 20 7b 20 69 6e 64 65 78 46 6c 61 67 73 20 3d  t { indexFlags =
a250: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
a260: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
a270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
a2c0: 20 20 20 70 72 69 76 61 74 65 20 6c 6f 6e 67 3f     private long?
a2d0: 20 63 6f 6c 75 6d 6e 73 55 73 65 64 3b 0d 0a 20   columnsUsed;.. 
a2e0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
a2f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
a300: 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
a310: 20 20 2f 2f 2f 20 49 6e 64 69 63 61 74 65 73 20    /// Indicates 
a320: 77 68 69 63 68 20 63 6f 6c 75 6d 6e 73 20 6f 66  which columns of
a330: 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
a340: 6c 65 20 6d 61 79 20 62 65 20 72 65 71 75 69 72  le may be requir
a350: 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20  ed by the..     
a360: 20 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74 20 73     /// current s
a370: 63 61 6e 2e 20 20 56 69 72 74 75 61 6c 20 74 61  can.  Virtual ta
a380: 62 6c 65 20 63 6f 6c 75 6d 6e 73 20 61 72 65 20  ble columns are 
a390: 6e 75 6d 62 65 72 65 64 20 66 72 6f 6d 20 7a 65  numbered from ze
a3a0: 72 6f 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ro in the..     
a3b0: 20 20 20 2f 2f 2f 20 6f 72 64 65 72 20 69 6e 20     /// order in 
a3c0: 77 68 69 63 68 20 74 68 65 79 20 61 70 70 65 61  which they appea
a3d0: 72 20 77 69 74 68 69 6e 20 74 68 65 20 43 52 45  r within the CRE
a3e0: 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ATE TABLE statem
a3f0: 65 6e 74 20 70 61 73 73 65 64 0d 0a 20 20 20 20  ent passed..    
a400: 20 20 20 20 2f 2f 2f 20 74 6f 20 73 71 6c 69 74      /// to sqlit
a410: 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28  e3_declare_vtab(
a420: 29 2e 20 20 46 6f 72 20 74 68 65 20 66 69 72 73  ).  For the firs
a430: 74 20 36 33 20 63 6f 6c 75 6d 6e 73 20 28 63 6f  t 63 columns (co
a440: 6c 75 6d 6e 73 20 30 2d 36 32 29 2c 0d 0a 20 20  lumns 0-62),..  
a450: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 6f        /// the co
a460: 72 72 65 73 70 6f 6e 64 69 6e 67 20 62 69 74 20  rresponding bit 
a470: 69 73 20 73 65 74 20 77 69 74 68 69 6e 20 74 68  is set within th
a480: 65 20 62 69 74 20 6d 61 73 6b 20 69 66 20 74 68  e bit mask if th
a490: 65 20 63 6f 6c 75 6d 6e 20 6d 61 79 0d 0a 20 20  e column may..  
a4a0: 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 72 65 71        /// be req
a4b0: 75 69 72 65 64 20 62 79 20 53 51 4c 69 74 65 2e  uired by SQLite.
a4c0: 20 20 49 66 20 74 68 65 20 74 61 62 6c 65 20 68    If the table h
a4d0: 61 73 20 61 74 20 6c 65 61 73 74 20 36 34 20 63  as at least 64 c
a4e0: 6f 6c 75 6d 6e 73 20 61 6e 64 0d 0a 20 20 20 20  olumns and..    
a4f0: 20 20 20 20 2f 2f 2f 20 61 6e 79 20 63 6f 6c 75      /// any colu
a500: 6d 6e 20 74 6f 20 74 68 65 20 72 69 67 68 74 20  mn to the right 
a510: 6f 66 20 74 68 65 20 66 69 72 73 74 20 36 33 20  of the first 63 
a520: 69 73 20 72 65 71 75 69 72 65 64 2c 20 74 68 65  is required, the
a530: 6e 20 62 69 74 20 36 33 20 6f 66 0d 0a 20 20 20  n bit 63 of..   
a540: 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 55 73 65 64       /// colUsed
a550: 20 69 73 20 61 6c 73 6f 20 73 65 74 2e 20 20 49   is also set.  I
a560: 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 63  n other words, c
a570: 6f 6c 75 6d 6e 20 69 43 6f 6c 20 6d 61 79 20 62  olumn iCol may b
a580: 65 20 72 65 71 75 69 72 65 64 0d 0a 20 20 20 20  e required..    
a590: 20 20 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 65      /// if the e
a5a0: 78 70 72 65 73 73 69 6f 6e 0d 0a 20 20 20 20 20  xpression..     
a5b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
a5c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
a5d0: 61 3e 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20  a><code>..      
a5e0: 20 20 2f 2f 2f 20 28 63 6f 6c 55 73 65 64 20 26    /// (colUsed &
a5f0: 61 6d 70 3b 20 28 28 73 71 6c 69 74 65 33 5f 75  amp; ((sqlite3_u
a600: 69 6e 74 36 34 29 31 20 26 6c 74 3b 26 6c 74 3b  int64)1 &lt;&lt;
a610: 20 28 69 43 6f 6c 26 67 74 3b 3d 36 33 20 3f 20   (iCol&gt;=63 ? 
a620: 36 33 20 3a 20 69 43 6f 6c 29 29 29 0d 0a 20 20  63 : iCol)))..  
a630: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65        /// </code
a640: 3e 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  ></para>..      
a650: 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
a660: 20 20 20 20 20 20 2f 2f 2f 20 65 76 61 6c 75 61        /// evalua
a670: 74 65 73 20 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 2e  tes to non-zero.
a680: 20 20 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20 76    Using a null v
a690: 61 6c 75 65 20 68 65 72 65 20 69 6e 64 69 63 61  alue here indica
a6a0: 74 65 73 20 74 68 61 74 20 61 0d 0a 20 20 20 20  tes that a..    
a6b0: 20 20 20 20 2f 2f 2f 20 64 65 66 61 75 6c 74 20      /// default 
a6c0: 66 6c 61 67 73 20 76 61 6c 75 65 20 73 68 6f 75  flags value shou
a6d0: 6c 64 20 62 65 20 75 73 65 64 2e 20 20 54 68 69  ld be used.  Thi
a6e0: 73 20 70 72 6f 70 65 72 74 79 20 68 61 73 20 6e  s property has n
a6f0: 6f 20 65 66 66 65 63 74 20 69 66 0d 0a 20 20 20  o effect if..   
a700: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
a710: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
a720: 20 69 73 20 6e 6f 74 20 61 74 20 6c 65 61 73 74   is not at least
a730: 20 76 65 72 73 69 6f 6e 20 33 2e 31 30 2e 30 2e   version 3.10.0.
a740: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
a750: 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
a760: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
a770: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f         public lo
a780: 6e 67 3f 20 43 6f 6c 75 6d 6e 73 55 73 65 64 0d  ng? ColumnsUsed.
a790: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
a7a0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
a7b0: 74 75 72 6e 20 63 6f 6c 75 6d 6e 73 55 73 65 64  turn columnsUsed
a7c0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
a7d0: 20 73 65 74 20 7b 20 63 6f 6c 75 6d 6e 73 55 73   set { columnsUs
a7e0: 65 64 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  ed = value; }.. 
a7f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
a800: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
a810: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
a820: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
a830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a870: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
a880: 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65  egion SQLiteInde
a890: 78 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a  x Helper Class..
a8a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a8b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
a8c0: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
a8d0: 20 74 68 65 20 76 61 72 69 6f 75 73 20 69 6e 70   the various inp
a8e0: 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20  uts and outputs 
a8f0: 75 73 65 64 20 77 69 74 68 20 74 68 65 0d 0a 20  used with the.. 
a900: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
a910: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
a920: 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78  Module.BestIndex
a930: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
a940: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a950: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61  ..    public sea
a960: 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
a970: 49 6e 64 65 78 0d 0a 20 20 20 20 7b 0d 0a 20 20  Index..    {..  
a980: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
a990: 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74  ternal Construct
a9a0: 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
a9b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
a9c0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
a9d0: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
a9e0: 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
a9f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
aa00: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
aa10: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
aa20: 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20  nConstraint">.. 
aa30: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
aa40: 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72  umber of <see cr
aa50: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
aa60: 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 28 61  onstraint" /> (a
aa70: 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nd..        /// 
aa80: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
aa90: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
aaa0: 55 73 61 67 65 22 20 2f 3e 29 20 69 6e 73 74 61  Usage" />) insta
aab0: 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20  nces to..       
aac0: 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74   /// pre-allocat
aad0: 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20  e space for...  
aae0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
aaf0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
ab00: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72  <param name="nOr
ab10: 64 65 72 42 79 22 3e 0d 0a 20 20 20 20 20 20 20  derBy">..       
ab20: 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
ab30: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
ab40: 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79  LiteIndexOrderBy
ab50: 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74  " /> instances t
ab60: 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  o..        /// p
ab70: 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63  re-allocate spac
ab80: 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  e for...        
ab90: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
aba0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
abb0: 51 4c 69 74 65 49 6e 64 65 78 28 0d 0a 20 20 20  QLiteIndex(..   
abc0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f           int nCo
abd0: 6e 73 74 72 61 69 6e 74 2c 0d 0a 20 20 20 20 20  nstraint,..     
abe0: 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65         int nOrde
abf0: 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rBy..           
ac00: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
ac10: 20 20 20 20 20 20 20 20 20 20 20 69 6e 70 75 74             input
ac20: 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  s = new SQLiteIn
ac30: 64 65 78 49 6e 70 75 74 73 28 6e 43 6f 6e 73 74  dexInputs(nConst
ac40: 72 61 69 6e 74 2c 20 6e 4f 72 64 65 72 42 79 29  raint, nOrderBy)
ac50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ;..            o
ac60: 75 74 70 75 74 73 20 3d 20 6e 65 77 20 53 51 4c  utputs = new SQL
ac70: 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 28  iteIndexOutputs(
ac80: 6e 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20  nConstraint);.. 
ac90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
aca0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
acb0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
acc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ace0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ad00: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
ad10: 6f 6e 20 50 72 69 76 61 74 65 20 4d 61 72 73 68  on Private Marsh
ad20: 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  al Helper Method
ad30: 73 20 28 46 6f 72 20 54 65 73 74 20 55 73 65 20  s (For Test Use 
ad40: 4f 6e 6c 79 29 0d 0a 20 20 20 20 20 20 20 20 2f  Only)..        /
ad50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ad60: 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
ad70: 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ts to determine 
ad80: 74 68 65 20 73 74 72 75 63 74 75 72 65 20 73 69  the structure si
ad90: 7a 65 73 20 6e 65 65 64 65 64 20 74 6f 20 63 72  zes needed to cr
ada0: 65 61 74 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  eate and..      
adb0: 20 20 2f 2f 2f 20 70 6f 70 75 6c 61 74 65 20 61    /// populate a
adc0: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
add0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
ade0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
adf0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
ae00: 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20  x_info" />..    
ae10: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
ae20: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
ae30: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ae40: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
ae50: 61 6d 65 3d 22 73 69 7a 65 4f 66 49 6e 66 6f 54  ame="sizeOfInfoT
ae60: 79 70 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ype">..        /
ae70: 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74  // The size of t
ae80: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
ae90: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
aea0: 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  ="UnsafeNativeMe
aeb0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
aec0: 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20  dex_info" />..  
aed0: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
aee0: 75 72 65 20 69 73 20 73 74 6f 72 65 64 20 68 65  ure is stored he
aef0: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
af00: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
af10: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
af20: 6d 65 3d 22 73 69 7a 65 4f 66 43 6f 6e 73 74 72  me="sizeOfConstr
af30: 61 69 6e 74 54 79 70 65 22 3e 0d 0a 20 20 20 20  aintType">..    
af40: 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65      /// The size
af50: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a   of the native..
af60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
af70: 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
af80: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
af90: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
afa0: 69 6e 74 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  int" />..       
afb0: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 69   /// structure i
afc0: 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0d 0a  s stored here...
afd0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
afe0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
aff0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
b000: 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
b010: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
b020: 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  The size of the 
b030: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
b040: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55  /// <see cref="U
b050: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
b060: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
b070: 5f 6f 72 64 65 72 62 79 22 20 2f 3e 0d 0a 20 20  _orderby" />..  
b080: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
b090: 75 72 65 20 69 73 20 73 74 6f 72 65 64 20 68 65  ure is stored he
b0a0: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
b0b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
b0c0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
b0d0: 6d 65 3d 22 73 69 7a 65 4f 66 43 6f 6e 73 74 72  me="sizeOfConstr
b0e0: 61 69 6e 74 55 73 61 67 65 54 79 70 65 22 3e 0d  aintUsageType">.
b0f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
b100: 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6e 61 74   size of the nat
b110: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
b120: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
b130: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
b140: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
b150: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 22 20  nstraint_usage" 
b160: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
b170: 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74 6f  structure is sto
b180: 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20 20  red here...     
b190: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
b1a0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
b1b0: 20 73 74 61 74 69 63 20 76 6f 69 64 20 53 69 7a   static void Siz
b1c0: 65 4f 66 4e 61 74 69 76 65 28 0d 0a 20 20 20 20  eOfNative(..    
b1d0: 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74 20          out int 
b1e0: 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 2c 0d  sizeOfInfoType,.
b1f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74  .            out
b200: 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74   int sizeOfConst
b210: 72 61 69 6e 74 54 79 70 65 2c 0d 0a 20 20 20 20  raintType,..    
b220: 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74 20          out int 
b230: 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70  sizeOfOrderByTyp
b240: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
b250: 6f 75 74 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f  out int sizeOfCo
b260: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
b270: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
b280: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
b290: 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 49           sizeOfI
b2a0: 6e 66 6f 54 79 70 65 20 3d 20 4d 61 72 73 68 61  nfoType = Marsha
b2b0: 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28  l.SizeOf(typeof(
b2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b2d0: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
b2e0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
b2f0: 64 65 78 5f 69 6e 66 6f 29 29 3b 0d 0a 0d 0a 20  dex_info));.... 
b300: 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f             sizeO
b310: 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20  fConstraintType 
b320: 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66  = Marshal.SizeOf
b330: 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20  (typeof(..      
b340: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
b350: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
b360: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
b370: 74 72 61 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  traint));....   
b380: 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 4f           sizeOfO
b390: 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d 61 72  rderByType = Mar
b3a0: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65  shal.SizeOf(type
b3b0: 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
b3c0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
b3d0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
b3e0: 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 29  _index_orderby))
b3f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b400: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
b410: 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72  tUsageType = Mar
b420: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65  shal.SizeOf(type
b430: 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
b440: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
b450: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
b460: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
b470: 74 5f 75 73 61 67 65 29 29 3b 0d 0a 20 20 20 20  t_usage));..    
b480: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
b490: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
b4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b4e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
b4f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
b500: 74 74 65 6d 70 74 73 20 74 6f 20 61 6c 6c 6f 63  ttempts to alloc
b510: 61 74 65 20 61 6e 64 20 69 6e 69 74 69 61 6c 69  ate and initiali
b520: 7a 65 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20  ze a native..   
b530: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
b540: 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65  ef="UnsafeNative
b550: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
b560: 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a  index_info" />..
b570: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
b580: 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
b590: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b5a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b5b0: 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72  am name="nConstr
b5c0: 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  aint">..        
b5d0: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
b5e0: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
b5f0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
b600: 6e 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73  nt" /> instances
b610: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
b620: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70   pre-allocate sp
b630: 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20  ace for...      
b640: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
b650: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b660: 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42  am name="nOrderB
b670: 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
b680: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
b690: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b6a0: 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e  IndexOrderBy" />
b6b0: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20   instances to.. 
b6c0: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61         /// pre-a
b6d0: 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
b6e0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
b6f0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b700: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
b710: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
b720: 20 6e 65 77 6c 79 20 61 6c 6c 6f 63 61 74 65 64   newly allocated
b730: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
b740: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
b750: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
b760: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
b770: 78 5f 69 6e 66 6f 22 20 2f 3e 20 73 74 72 75 63  x_info" /> struc
b780: 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ture..        //
b790: 2f 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65 66  / -OR- <see cref
b7a0: 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f  ="IntPtr.Zero" /
b7b0: 3e 20 69 66 20 69 74 20 63 6f 75 6c 64 20 6e 6f  > if it could no
b7c0: 74 20 62 65 20 66 75 6c 6c 79 20 61 6c 6c 6f 63  t be fully alloc
b7d0: 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
b7e0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
b7f0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
b800: 74 61 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c  tatic IntPtr All
b810: 6f 63 61 74 65 41 6e 64 49 6e 69 74 69 61 6c 69  ocateAndInitiali
b820: 7a 65 4e 61 74 69 76 65 28 0d 0a 20 20 20 20 20  zeNative(..     
b830: 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73         int nCons
b840: 74 72 61 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20  traint,..       
b850: 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42       int nOrderB
b860: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
b870: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
b880: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
b890: 70 49 6e 64 65 78 20 3d 20 49 6e 74 50 74 72 2e  pIndex = IntPtr.
b8a0: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
b8b0: 20 20 20 49 6e 74 50 74 72 20 70 49 6e 66 6f 20     IntPtr pInfo 
b8c0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
b8d0: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
b8e0: 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d  tr pConstraint =
b8f0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
b900: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
b910: 72 20 70 4f 72 64 65 72 42 79 20 3d 20 49 6e 74  r pOrderBy = Int
b920: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
b930: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
b940: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d  onstraintUsage =
b950: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
b960: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
b970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
b980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b990: 20 69 6e 74 20 73 69 7a 65 4f 66 49 6e 66 6f 54   int sizeOfInfoT
b9a0: 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ype;..          
b9b0: 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66        int sizeOf
b9c0: 4f 72 64 65 72 42 79 54 79 70 65 3b 0d 0a 20 20  OrderByType;..  
b9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
b9e0: 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
b9f0: 6e 74 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20  ntType;..       
ba00: 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
ba10: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
ba20: 67 65 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20  geType;....     
ba30: 20 20 20 20 20 20 20 20 20 20 20 53 69 7a 65 4f             SizeO
ba40: 66 4e 61 74 69 76 65 28 6f 75 74 20 73 69 7a 65  fNative(out size
ba50: 4f 66 49 6e 66 6f 54 79 70 65 2c 20 6f 75 74 20  OfInfoType, out 
ba60: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
ba70: 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Type,..         
ba80: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 20 73             out s
ba90: 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
baa0: 2c 20 6f 75 74 20 73 69 7a 65 4f 66 43 6f 6e 73  , out sizeOfCons
bab0: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 29  traintUsageType)
bac0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
bad0: 20 20 20 20 20 69 66 20 28 28 73 69 7a 65 4f 66       if ((sizeOf
bae0: 49 6e 66 6f 54 79 70 65 20 3e 20 30 29 20 26 26  InfoType > 0) &&
baf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bb00: 20 20 20 20 20 20 28 73 69 7a 65 4f 66 43 6f 6e        (sizeOfCon
bb10: 73 74 72 61 69 6e 74 54 79 70 65 20 3e 20 30 29  straintType > 0)
bb20: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
bb30: 20 20 20 20 20 20 20 20 20 28 73 69 7a 65 4f 66           (sizeOf
bb40: 4f 72 64 65 72 42 79 54 79 70 65 20 3e 20 30 29  OrderByType > 0)
bb50: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
bb60: 20 20 20 20 20 20 20 20 20 28 73 69 7a 65 4f 66           (sizeOf
bb70: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54  ConstraintUsageT
bb80: 79 70 65 20 3e 20 30 29 29 0d 0a 20 20 20 20 20  ype > 0))..     
bb90: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbb0: 20 20 70 49 6e 66 6f 20 3d 20 53 51 4c 69 74 65    pInfo = SQLite
bbc0: 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28  Memory.Allocate(
bbd0: 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 29 3b  sizeOfInfoType);
bbe0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
bbf0: 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61          pConstra
bc00: 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  int = SQLiteMemo
bc10: 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a 20 20  ry.Allocate(..  
bc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc30: 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f 6e 73        sizeOfCons
bc40: 74 72 61 69 6e 74 54 79 70 65 20 2a 20 6e 43 6f  traintType * nCo
bc50: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
bc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc70: 20 20 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c    pOrderBy = SQL
bc80: 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
bc90: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
bca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a               siz
bcb0: 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20 2a  eOfOrderByType *
bcc0: 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 0d 0a 20   nOrderBy);.... 
bcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bce0: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73     pConstraintUs
bcf0: 61 67 65 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  age = SQLiteMemo
bd00: 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a 20 20  ry.Allocate(..  
bd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd20: 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f 6e 73        sizeOfCons
bd30: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 20  traintUsageType 
bd40: 2a 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d  * nConstraint);.
bd50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
bd60: 20 20 20 20 20 20 20 69 66 20 28 28 70 49 6e 66         if ((pInf
bd70: 6f 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  o != IntPtr.Zero
bd80: 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
bd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
bda0: 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 49 6e  Constraint != In
bdb0: 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d 0a 20  tPtr.Zero) &&.. 
bdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdd0: 20 20 20 20 20 20 20 28 70 4f 72 64 65 72 42 79         (pOrderBy
bde0: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
bdf0: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
be00: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 43               (pC
be10: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21  onstraintUsage !
be20: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 0d  = IntPtr.Zero)).
be30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
be40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
be50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be60: 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d  int offset = 0;.
be70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
be80: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
be90: 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
bea0: 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t32(..          
beb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bec0: 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c    pInfo, offset,
bed0: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a   nConstraint);..
bee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bef0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
bf00: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
bf10: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
bf20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf30: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
bf40: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
bf50: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
bf60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bf70: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
bf80: 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
bf90: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
bfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfb0: 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c    pInfo, offset,
bfc0: 20 70 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a   pConstraint);..
bfd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bfe0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
bff0: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
c000: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
c010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c020: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
c030: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
c040: 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
c050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c060: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
c070: 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
c080: 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
c090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0a0: 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20   pInfo, offset, 
c0b0: 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20  nOrderBy);....  
c0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0d0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c0e0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c0f0: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c110: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
c120: 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
c130: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c150: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
c160: 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
c170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c190: 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20 70 4f 72  nfo, offset, pOr
c1a0: 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  derBy);....     
c1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1c0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
c1d0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
c1e0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
c1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c200: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74       offset, Int
c210: 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72  Ptr.Size, IntPtr
c220: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
c230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c240: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
c250: 2e 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20  .WriteIntPtr(.. 
c260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c270: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f             pInfo
c280: 2c 20 6f 66 66 73 65 74 2c 20 70 43 6f 6e 73 74  , offset, pConst
c290: 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 0d 0a  raintUsage);....
c2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2b0: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 20 3d          pIndex =
c2c0: 20 70 49 6e 66 6f 3b 20 2f 2a 20 4e 4f 54 45 3a   pInfo; /* NOTE:
c2d0: 20 53 75 63 63 65 73 73 2e 20 2a 2f 0d 0a 20 20   Success. */..  
c2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
c300: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
c310: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
c320: 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
c330: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c340: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
c350: 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e  Index == IntPtr.
c360: 5a 65 72 6f 29 20 2f 2a 20 4e 4f 54 45 3a 20 46  Zero) /* NOTE: F
c370: 61 69 6c 75 72 65 3f 20 2a 2f 0d 0a 20 20 20 20  ailure? */..    
c380: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3a0: 20 20 20 69 66 20 28 70 43 6f 6e 73 74 72 61 69     if (pConstrai
c3b0: 6e 74 55 73 61 67 65 20 21 3d 20 49 6e 74 50 74  ntUsage != IntPt
c3c0: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
c3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3f0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65          SQLiteMe
c400: 6d 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e 73 74  mory.Free(pConst
c410: 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20  raintUsage);..  
c420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c430: 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e        pConstrain
c440: 74 55 73 61 67 65 20 3d 20 49 6e 74 50 74 72 2e  tUsage = IntPtr.
c450: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
c460: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
c470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c480: 20 20 20 20 69 66 20 28 70 4f 72 64 65 72 42 79      if (pOrderBy
c490: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
c4a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c4b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4d0: 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72   SQLiteMemory.Fr
c4e0: 65 65 28 70 4f 72 64 65 72 42 79 29 3b 0d 0a 20  ee(pOrderBy);.. 
c4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c500: 20 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 20         pOrderBy 
c510: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
c520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c530: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
c540: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
c550: 28 70 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20  (pConstraint != 
c560: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
c570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c580: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c590: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
c5a0: 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
c5b0: 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20  Constraint);..  
c5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5d0: 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e        pConstrain
c5e0: 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  t = IntPtr.Zero;
c5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c600: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
c620: 66 20 28 70 49 6e 66 6f 20 21 3d 20 49 6e 74 50  f (pInfo != IntP
c630: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
c640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
c650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c660: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
c670: 65 6d 6f 72 79 2e 46 72 65 65 28 70 49 6e 66 6f  emory.Free(pInfo
c680: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
c690: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66              pInf
c6a0: 6f 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  o = IntPtr.Zero;
c6b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c6c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
c6d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
c6e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
c6f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c700: 70 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  pIndex;..       
c710: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
c720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c760: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
c770: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
c780: 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72 65 65          /// Free
c790: 73 20 61 6c 6c 20 74 68 65 20 6d 65 6d 6f 72 79  s all the memory
c7a0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
c7b0: 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20   a native..     
c7c0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
c7d0: 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  ="UnsafeNativeMe
c7e0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
c7f0: 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20  dex_info" />..  
c800: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
c810: 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
c820: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
c830: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
c840: 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d   name="pIndex">.
c850: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
c860: 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
c870: 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  to the native sq
c880: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
c890: 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d 0a 20   structure to.. 
c8a0: 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 65 65 2e         /// free.
c8b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
c8c0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
c8d0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76  private static v
c8e0: 6f 69 64 20 46 72 65 65 4e 61 74 69 76 65 28 0d  oid FreeNative(.
c8f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
c900: 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20  Ptr pIndex..    
c910: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
c920: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c930: 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d 3d 20    if (pIndex == 
c940: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
c950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c960: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
c970: 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20       int offset 
c980: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
c990: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
c9a0: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
c9b0: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
c9c0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
c9d0: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49  , sizeof(int), I
c9e0: 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a  ntPtr.Size);....
c9f0: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
ca00: 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d  tr pConstraint =
ca10: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
ca20: 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  eadIntPtr(..    
ca30: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
ca40: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
ca50: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
ca60: 63 6f 6e 73 74 72 61 69 6e 74 4f 66 66 73 65 74  constraintOffset
ca70: 20 3d 20 6f 66 66 73 65 74 3b 0d 0a 0d 0a 20 20   = offset;....  
ca80: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
ca90: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
caa0: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
cab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cac0: 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
cad0: 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ize, sizeof(int)
cae0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
caf0: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
cb00: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
cb10: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
cb20: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
cb30: 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
cb40: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
cb50: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
cb60: 20 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69   pOrderBy = SQLi
cb70: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
cb80: 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
cb90: 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f         pIndex, o
cba0: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
cbb0: 20 20 20 20 20 20 20 69 6e 74 20 6f 72 64 65 72         int order
cbc0: 42 79 4f 66 66 73 65 74 20 3d 20 6f 66 66 73 65  ByOffset = offse
cbd0: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
cbe0: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
cbf0: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
cc00: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
cc10: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
cc20: 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74  IntPtr.Size, Int
cc30: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
cc40: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
cc50: 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   pConstraintUsag
cc60: 65 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  e = SQLiteMarsha
cc70: 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20  l.ReadIntPtr(.. 
cc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
cc90: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
cca0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
ccb0: 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  nt constraintUsa
ccc0: 67 65 4f 66 66 73 65 74 20 3d 20 6f 66 66 73 65  geOffset = offse
ccd0: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
cce0: 20 20 69 66 20 28 70 43 6f 6e 73 74 72 61 69 6e    if (pConstrain
ccf0: 74 55 73 61 67 65 20 21 3d 20 49 6e 74 50 74 72  tUsage != IntPtr
cd00: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
cd10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
cd20: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
cd30: 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e 73 74 72  ory.Free(pConstr
cd40: 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20 20  aintUsage);..   
cd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
cd60: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
cd70: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
cd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd90: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
cda0: 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  iteIntPtr(..    
cdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdc0: 70 49 6e 64 65 78 2c 20 63 6f 6e 73 74 72 61 69  pIndex, constrai
cdd0: 6e 74 55 73 61 67 65 4f 66 66 73 65 74 2c 20 70  ntUsageOffset, p
cde0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 29  ConstraintUsage)
cdf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
ce00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ce10: 69 66 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20  if (pOrderBy != 
ce20: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
ce30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ce40: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
ce50: 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
ce60: 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20  OrderBy);..     
ce70: 20 20 20 20 20 20 20 20 20 20 20 70 4f 72 64 65             pOrde
ce80: 72 42 79 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  rBy = IntPtr.Zer
ce90: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
cea0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
ceb0: 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
cec0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ced0: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 72        pIndex, or
cee0: 64 65 72 42 79 4f 66 66 73 65 74 2c 20 70 4f 72  derByOffset, pOr
cef0: 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20  derBy);..       
cf00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
cf10: 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 73 74        if (pConst
cf20: 72 61 69 6e 74 20 21 3d 20 49 6e 74 50 74 72 2e  raint != IntPtr.
cf30: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
cf40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cf50: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
cf60: 72 79 2e 46 72 65 65 28 70 43 6f 6e 73 74 72 61  ry.Free(pConstra
cf70: 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  int);..         
cf80: 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69         pConstrai
cf90: 6e 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  nt = IntPtr.Zero
cfa0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
cfb0: 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
cfc0: 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 0d  al.WriteIntPtr(.
cfd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cfe0: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 63 6f 6e       pIndex, con
cff0: 73 74 72 61 69 6e 74 4f 66 66 73 65 74 2c 20 70  straintOffset, p
d000: 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20  Constraint);..  
d010: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
d020: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
d030: 49 6e 64 65 78 20 21 3d 20 49 6e 74 50 74 72 2e  Index != IntPtr.
d040: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
d050: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d060: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
d070: 72 79 2e 46 72 65 65 28 70 49 6e 64 65 78 29 3b  ry.Free(pIndex);
d080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d090: 20 20 70 49 6e 64 65 78 20 3d 20 49 6e 74 50 74    pIndex = IntPt
d0a0: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
d0b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d0c0: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
d0d0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
d0e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
d0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d120: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
d130: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
d140: 72 6e 61 6c 20 4d 61 72 73 68 61 6c 20 48 65 6c  rnal Marshal Hel
d150: 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
d160: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
d170: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
d180: 43 6f 6e 76 65 72 74 73 20 61 20 6e 61 74 69 76  Converts a nativ
d190: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e  e pointer to a n
d1a0: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e  ative sqlite3_in
d1b0: 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75  dex_info structu
d1c0: 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
d1d0: 69 6e 74 6f 20 61 20 6e 65 77 20 3c 73 65 65 20  into a new <see 
d1e0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
d1f0: 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
d200: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
d210: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d220: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
d230: 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22  am name="pIndex"
d240: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
d250: 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
d260: 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20  r to the native 
d270: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
d280: 66 6f 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d  fo structure to.
d290: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  .        /// con
d2a0: 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
d2b0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
d2c0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
d2d0: 6e 61 6d 65 3d 22 69 6e 63 6c 75 64 65 4f 75 74  name="includeOut
d2e0: 70 75 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  put">..        /
d2f0: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 69  // Non-zero to i
d300: 6e 63 6c 75 64 65 20 66 69 65 6c 64 73 20 66 72  nclude fields fr
d310: 6f 6d 20 74 68 65 20 6f 75 74 70 75 74 73 20 70  om the outputs p
d320: 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 61  ortion of the na
d330: 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tive..        //
d340: 2f 20 73 74 72 75 63 74 75 72 65 3b 20 6f 74 68  / structure; oth
d350: 65 72 77 69 73 65 2c 20 74 68 65 20 22 6f 75 74  erwise, the "out
d360: 70 75 74 22 20 66 69 65 6c 64 73 20 77 69 6c 6c  put" fields will
d370: 20 6e 6f 74 20 62 65 20 72 65 61 64 2e 0d 0a 20   not be read... 
d380: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
d390: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
d3a0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e   <param name="in
d3b0: 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  dex">..        /
d3c0: 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
d3d0: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
d3e0: 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
d3f0: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20   to contain the 
d400: 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f  newly..        /
d410: 2f 2f 20 63 72 65 61 74 65 64 20 3c 73 65 65 20  // created <see 
d420: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
d430: 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
d440: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
d450: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
d460: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
d470: 74 61 74 69 63 20 76 6f 69 64 20 46 72 6f 6d 49  tatic void FromI
d480: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
d490: 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
d4a0: 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
d4b0: 62 6f 6f 6c 20 69 6e 63 6c 75 64 65 4f 75 74 70  bool includeOutp
d4c0: 75 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ut,..           
d4d0: 20 72 65 66 20 53 51 4c 69 74 65 49 6e 64 65 78   ref SQLiteIndex
d4e0: 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20   index..        
d4f0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
d500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
d510: 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50   (pIndex == IntP
d520: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
d530: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d540: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d550: 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
d560: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d570: 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20  int nConstraint 
d580: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
d590: 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20  ReadInt32(..    
d5a0: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
d5b0: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
d5c0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
d5d0: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
d5e0: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
d5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d600: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
d610: 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69  (int), IntPtr.Si
d620: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
d630: 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73      IntPtr pCons
d640: 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d  traint = SQLiteM
d650: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
d660: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
d670: 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73      pIndex, offs
d680: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
d690: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
d6a0: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
d6b0: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
d6c0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
d6d0: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73  , IntPtr.Size, s
d6e0: 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
d6f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
d700: 6e 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74  nOrderBy = SQLit
d710: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
d720: 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
d730: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
d740: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
d750: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
d760: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
d770: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
d780: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
d790: 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20  t, sizeof(int), 
d7a0: 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
d7b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
d7c0: 50 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20 53  Ptr pOrderBy = S
d7d0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
d7e0: 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
d7f0: 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78            pIndex
d800: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
d810: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
d820: 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   pConstraintUsag
d830: 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e = IntPtr.Zero;
d840: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d850: 69 66 20 28 69 6e 63 6c 75 64 65 4f 75 74 70 75  if (includeOutpu
d860: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
d870: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d880: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
d890: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
d8a0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
d8c0: 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  set, IntPtr.Size
d8d0: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d  , IntPtr.Size);.
d8e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d8f0: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73     pConstraintUs
d900: 61 67 65 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  age = SQLiteMars
d910: 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d  hal.ReadIntPtr(.
d920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d930: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
d940: 73 65 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  set);..         
d950: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d960: 20 20 20 20 69 6e 64 65 78 20 3d 20 6e 65 77 20      index = new 
d970: 53 51 4c 69 74 65 49 6e 64 65 78 28 6e 43 6f 6e  SQLiteIndex(nCon
d980: 73 74 72 61 69 6e 74 2c 20 6e 4f 72 64 65 72 42  straint, nOrderB
d990: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
d9a0: 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75   SQLiteIndexInpu
d9b0: 74 73 20 69 6e 70 75 74 73 20 3d 20 69 6e 64 65  ts inputs = inde
d9c0: 78 2e 49 6e 70 75 74 73 3b 0d 0a 0d 0a 20 20 20  x.Inputs;....   
d9d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 70           if (inp
d9e0: 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  uts == null)..  
d9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
da00: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
da10: 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
da20: 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 63 6f 6e  Constraint[] con
da30: 73 74 72 61 69 6e 74 73 20 3d 20 69 6e 70 75 74  straints = input
da40: 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a  s.Constraints;..
da50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
da60: 20 28 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d 3d   (constraints ==
da70: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
da80: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
da90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
daa0: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
dab0: 79 5b 5d 20 6f 72 64 65 72 42 79 73 20 3d 20 69  y[] orderBys = i
dac0: 6e 70 75 74 73 2e 4f 72 64 65 72 42 79 73 3b 0d  nputs.OrderBys;.
dad0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
dae0: 66 20 28 6f 72 64 65 72 42 79 73 20 3d 3d 20 6e  f (orderBys == n
daf0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
db00: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
db10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70  .            Typ
db20: 65 20 63 6f 6e 73 74 72 61 69 6e 74 54 79 70 65  e constraintType
db30: 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20 20   = typeof(..    
db40: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
db50: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
db60: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
db70: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
db80: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
db90: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79  zeOfConstraintTy
dba0: 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a  pe = Marshal.Siz
dbb0: 65 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eOf(..          
dbc0: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
dbd0: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
dbe0: 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
dbf0: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20  Constraint = 0; 
dc00: 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43  iConstraint < nC
dc10: 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73  onstraint; iCons
dc20: 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20  traint++)..     
dc30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
dc40: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
dc50: 20 70 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74   pOffset = SQLit
dc60: 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46  eMarshal.IntPtrF
dc70: 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20  orOffset(..     
dc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
dc90: 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69 43 6f 6e  Constraint, iCon
dca0: 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66  straint * sizeOf
dcb0: 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29 3b  ConstraintType);
dcc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dcd0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
dce0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
dcf0: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
dd00: 20 63 6f 6e 73 74 72 61 69 6e 74 20 3d 0d 0a 20   constraint =.. 
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd20: 20 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65     (UnsafeNative
dd30: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
dd40: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
dd50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dd60: 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
dd70: 61 6c 2e 50 74 72 54 6f 53 74 72 75 63 74 75 72  al.PtrToStructur
dd80: 65 28 70 4f 66 66 73 65 74 2c 20 63 6f 6e 73 74  e(pOffset, const
dd90: 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20  raintType);.... 
dda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
ddb0: 6f 6e 73 74 72 61 69 6e 74 73 5b 69 43 6f 6e 73  onstraints[iCons
ddc0: 74 72 61 69 6e 74 5d 20 3d 20 6e 65 77 20 53 51  traint] = new SQ
ddd0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
dde0: 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
ddf0: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
de00: 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  aint);..        
de10: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
de20: 20 20 20 20 20 54 79 70 65 20 6f 72 64 65 72 42       Type orderB
de30: 79 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28 0d  yType = typeof(.
de40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
de50: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
de60: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
de70: 65 78 5f 6f 72 64 65 72 62 79 29 3b 0d 0a 0d 0a  ex_orderby);....
de80: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
de90: 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70  sizeOfOrderByTyp
dea0: 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
deb0: 4f 66 28 6f 72 64 65 72 42 79 54 79 70 65 29 3b  Of(orderByType);
dec0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ded0: 66 6f 72 20 28 69 6e 74 20 69 4f 72 64 65 72 42  for (int iOrderB
dee0: 79 20 3d 20 30 3b 20 69 4f 72 64 65 72 42 79 20  y = 0; iOrderBy 
def0: 3c 20 6e 4f 72 64 65 72 42 79 3b 20 69 4f 72 64  < nOrderBy; iOrd
df00: 65 72 42 79 2b 2b 29 0d 0a 20 20 20 20 20 20 20  erBy++)..       
df10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
df20: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
df30: 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  Offset = SQLiteM
df40: 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72  arshal.IntPtrFor
df50: 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20  Offset(..       
df60: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f 72               pOr
df70: 64 65 72 42 79 2c 20 69 4f 72 64 65 72 42 79 20  derBy, iOrderBy 
df80: 2a 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54  * sizeOfOrderByT
df90: 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ype);....       
dfa0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
dfb0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
dfc0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
dfd0: 62 79 20 6f 72 64 65 72 42 79 20 3d 0d 0a 20 20  by orderBy =..  
dfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dff0: 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d    (UnsafeNativeM
e000: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
e010: 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 0d 0a 20  ndex_orderby).. 
e020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e030: 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50         Marshal.P
e040: 74 72 54 6f 53 74 72 75 63 74 75 72 65 28 70 4f  trToStructure(pO
e050: 66 66 73 65 74 2c 20 6f 72 64 65 72 42 79 54 79  ffset, orderByTy
e060: 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  pe);....        
e070: 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79 73          orderBys
e080: 5b 69 4f 72 64 65 72 42 79 5d 20 3d 20 6e 65 77  [iOrderBy] = new
e090: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
e0a0: 72 42 79 28 6f 72 64 65 72 42 79 29 3b 0d 0a 20  rBy(orderBy);.. 
e0b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
e0c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e0d0: 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 29 0d 0a  includeOutput)..
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
e100: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
e110: 73 20 6f 75 74 70 75 74 73 20 3d 20 69 6e 64 65  s outputs = inde
e120: 78 2e 4f 75 74 70 75 74 73 3b 0d 0a 0d 0a 20 20  x.Outputs;....  
e130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
e140: 20 28 6f 75 74 70 75 74 73 20 3d 3d 20 6e 75 6c   (outputs == nul
e150: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
e160: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
e170: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e180: 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f     SQLiteIndexCo
e190: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20  nstraintUsage[] 
e1a0: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  constraintUsages
e1b0: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
e1c0: 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
e1d0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  ConstraintUsages
e1e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e1f0: 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
e200: 69 6e 74 55 73 61 67 65 73 20 3d 3d 20 6e 75 6c  intUsages == nul
e210: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
e220: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
e230: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e240: 20 20 20 54 79 70 65 20 63 6f 6e 73 74 72 61 69     Type constrai
e250: 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 74 79  ntUsageType = ty
e260: 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  peof(..         
e270: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
e280: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
e290: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
e2a0: 73 74 72 61 69 6e 74 5f 75 73 61 67 65 29 3b 0d  straint_usage);.
e2b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e2c0: 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e     int sizeOfCon
e2d0: 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65  straintUsageType
e2e0: 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
e2f0: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
e300: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
e310: 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d  ntUsageType);...
e320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e330: 20 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74   for (int iConst
e340: 72 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73  raint = 0; iCons
e350: 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72  traint < nConstr
e360: 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e  aint; iConstrain
e370: 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20  t++)..          
e380: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e390: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
e3a0: 50 74 72 20 70 4f 66 66 73 65 74 20 3d 20 53 51  Ptr pOffset = SQ
e3b0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50  LiteMarshal.IntP
e3c0: 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20  trForOffset(..  
e3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3e0: 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e        pConstrain
e3f0: 74 55 73 61 67 65 2c 20 69 43 6f 6e 73 74 72 61  tUsage, iConstra
e400: 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73  int * sizeOfCons
e410: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 29  traintUsageType)
e420: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e430: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
e440: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
e450: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
e460: 72 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e 73  raint_usage cons
e470: 74 72 61 69 6e 74 55 73 61 67 65 20 3d 0d 0a 20  traintUsage =.. 
e480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e490: 20 20 20 20 20 20 20 28 55 6e 73 61 66 65 4e 61         (UnsafeNa
e4a0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
e4b0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
e4c0: 61 69 6e 74 5f 75 73 61 67 65 29 0d 0a 20 20 20  aint_usage)..   
e4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4e0: 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
e4f0: 2e 50 74 72 54 6f 53 74 72 75 63 74 75 72 65 28  .PtrToStructure(
e500: 70 4f 66 66 73 65 74 2c 20 63 6f 6e 73 74 72 61  pOffset, constra
e510: 69 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a  intUsageType);..
e520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e530: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
e540: 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72 61 69  Usages[iConstrai
e550: 6e 74 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  nt] = new SQLite
e560: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
e570: 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  sage(..         
e580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
e590: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 29 3b  onstraintUsage);
e5a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e5b0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
e5c0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
e5d0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
e5e0: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
e5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e600: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
e610: 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74  Size, sizeof(int
e620: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
e630: 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49         outputs.I
e640: 6e 64 65 78 4e 75 6d 62 65 72 20 3d 20 53 51 4c  ndexNumber = SQL
e650: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
e660: 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20  nt32(..         
e670: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
e680: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
e690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e6a0: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
e6b0: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
e6c0: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
e6d0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
e6e0: 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e   sizeof(int), In
e6f0: 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
e700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e710: 75 74 70 75 74 73 2e 49 6e 64 65 78 53 74 72 69  utputs.IndexStri
e720: 6e 67 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  ng = SQLiteStrin
e730: 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  g.StringFromUtf8
e740: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
e750: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
e760: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
e770: 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f 66  ntPtr(pIndex, of
e780: 66 73 65 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  fset));....     
e790: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
e7a0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
e7b0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
e7c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e7d0: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74       offset, Int
e7e0: 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66  Ptr.Size, sizeof
e7f0: 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  (int));....     
e800: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
e810: 74 73 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e 64  ts.NeedToFreeInd
e820: 65 78 53 74 72 69 6e 67 20 3d 20 53 51 4c 69 74  exString = SQLit
e830: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
e840: 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
e850: 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c           pIndex,
e860: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
e870: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
e880: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
e890: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
e8a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e8b0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
e8c0: 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65  izeof(int), size
e8d0: 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
e8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
e8f0: 70 75 74 73 2e 4f 72 64 65 72 42 79 43 6f 6e 73  puts.OrderByCons
e900: 75 6d 65 64 20 3d 20 53 51 4c 69 74 65 4d 61 72  umed = SQLiteMar
e910: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d  shal.ReadInt32(.
e920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e930: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
e940: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
e950: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
e960: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
e970: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
e980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e990: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
e9a0: 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 64  f(int), sizeof(d
e9b0: 6f 75 62 6c 65 29 29 3b 0d 0a 0d 0a 20 20 20 20  ouble));....    
e9c0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
e9d0: 75 74 73 2e 45 73 74 69 6d 61 74 65 64 43 6f 73  uts.EstimatedCos
e9e0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
e9f0: 6c 2e 52 65 61 64 44 6f 75 62 6c 65 28 0d 0a 20  l.ReadDouble(.. 
ea00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea10: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
ea20: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
ea30: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
ea40: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
ea50: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
ea60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea70: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
ea80: 64 6f 75 62 6c 65 29 2c 20 73 69 7a 65 6f 66 28  double), sizeof(
ea90: 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  long));....     
eaa0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
eab0: 75 74 70 75 74 73 2e 43 61 6e 55 73 65 45 73 74  utputs.CanUseEst
eac0: 69 6d 61 74 65 64 52 6f 77 73 28 29 29 0d 0a 20  imatedRows()).. 
ead0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
eae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eaf0: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73        outputs.Es
eb00: 74 69 6d 61 74 65 64 52 6f 77 73 20 3d 20 53 51  timatedRows = SQ
eb10: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
eb20: 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20  Int64(..        
eb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb40: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
eb50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eb60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
eb70: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
eb80: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
eb90: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
eba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebb0: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
ebc0: 6c 6f 6e 67 29 2c 20 73 69 7a 65 6f 66 28 69 6e  long), sizeof(in
ebd0: 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
ebe0: 20 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70          if (outp
ebf0: 75 74 73 2e 43 61 6e 55 73 65 49 6e 64 65 78 46  uts.CanUseIndexF
ec00: 6c 61 67 73 28 29 29 0d 0a 20 20 20 20 20 20 20  lags())..       
ec10: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ec20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec30: 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 46 6c 61  outputs.IndexFla
ec40: 67 73 20 3d 20 28 53 51 4c 69 74 65 49 6e 64 65  gs = (SQLiteInde
ec50: 78 46 6c 61 67 73 29 0d 0a 20 20 20 20 20 20 20  xFlags)..       
ec60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec70: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
ec80: 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c  eadInt32(pIndex,
ec90: 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20 20   offset);..     
eca0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecc0: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
ecd0: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
ece0: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
ecf0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
ed00: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73  , sizeof(int), s
ed10: 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d  izeof(long));...
ed20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ed30: 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61 6e   if (outputs.Can
ed40: 55 73 65 43 6f 6c 75 6d 6e 73 55 73 65 64 28 29  UseColumnsUsed()
ed50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ed60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ed70: 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74            output
ed80: 73 2e 43 6f 6c 75 6d 6e 73 55 73 65 64 20 3d 20  s.ColumnsUsed = 
ed90: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
eda0: 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20  adInt64(..      
edb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
edc0: 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74    pIndex, offset
edd0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
ede0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
edf0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
ee00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
ee10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee50: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
ee60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
ee70: 20 20 20 20 20 2f 2f 2f 20 50 6f 70 75 6c 61 74       /// Populat
ee80: 65 73 20 74 68 65 20 6f 75 74 70 75 74 73 20 6f  es the outputs o
ee90: 66 20 61 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65  f a pre-allocate
eea0: 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  d native sqlite3
eeb0: 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20  _index_info..   
eec0: 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
eed0: 72 65 20 75 73 69 6e 67 20 61 6e 20 65 78 69 73  re using an exis
eee0: 74 69 6e 67 20 3c 73 65 65 20 63 72 65 66 3d 22  ting <see cref="
eef0: 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20  SQLiteIndex" /> 
ef00: 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
ef10: 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  /// instance... 
ef20: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
ef30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
ef40: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
ef50: 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  index">..       
ef60: 20 2f 2f 2f 20 54 68 65 20 65 78 69 73 74 69 6e   /// The existin
ef70: 67 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  g <see cref="SQL
ef80: 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a  iteIndex" /> obj
ef90: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e  ect instance con
efa0: 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20  taining..       
efb0: 20 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 20   /// the output 
efc0: 64 61 74 61 20 74 6f 20 75 73 65 2e 0d 0a 20 20  data to use...  
efd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
efe0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
eff0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49 6e  <param name="pIn
f000: 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  dex">..        /
f010: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
f020: 69 6e 74 65 72 20 74 6f 20 74 68 65 20 70 72 65  inter to the pre
f030: 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69 76  -allocated nativ
f040: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
f050: 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  info..        //
f060: 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  / structure...  
f070: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
f080: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
f090: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 63  <param name="inc
f0a0: 6c 75 64 65 49 6e 70 75 74 22 3e 0d 0a 20 20 20  ludeInput">..   
f0b0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
f0c0: 6f 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 69 65  o to include fie
f0d0: 6c 64 73 20 66 72 6f 6d 20 74 68 65 20 69 6e 70  lds from the inp
f0e0: 75 74 73 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74  uts portion of t
f0f0: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
f100: 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
f110: 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65  ; otherwise, the
f120: 20 22 69 6e 70 75 74 22 20 66 69 65 6c 64 73 20   "input" fields 
f130: 77 69 6c 6c 20 6e 6f 74 20 62 65 20 77 72 69 74  will not be writ
f140: 74 65 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ten...        //
f150: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
f160: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
f170: 74 69 63 20 76 6f 69 64 20 54 6f 49 6e 74 50 74  tic void ToIntPt
f180: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
f190: 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65  SQLiteIndex inde
f1a0: 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
f1b0: 49 6e 74 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a  IntPtr pIndex,..
f1c0: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
f1d0: 20 69 6e 63 6c 75 64 65 49 6e 70 75 74 0d 0a 20   includeInput.. 
f1e0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
f1f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f200: 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 20 3d       if (index =
f210: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
f220: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
f230: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f240: 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75  SQLiteIndexOutpu
f250: 74 73 20 6f 75 74 70 75 74 73 20 3d 20 69 6e 64  ts outputs = ind
f260: 65 78 2e 4f 75 74 70 75 74 73 3b 0d 0a 0d 0a 20  ex.Outputs;.... 
f270: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
f280: 75 74 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  utputs == null).
f290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f2a0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
f2b0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
f2c0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
f2d0: 67 65 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 55  ge[] constraintU
f2e0: 73 61 67 65 73 20 3d 0d 0a 20 20 20 20 20 20 20  sages =..       
f2f0: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
f300: 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  .ConstraintUsage
f310: 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
f320: 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74    if (constraint
f330: 55 73 61 67 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d  Usages == null).
f340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f350: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
f360: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
f370: 64 65 78 49 6e 70 75 74 73 20 69 6e 70 75 74 73  dexInputs inputs
f380: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
f390: 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
f3a0: 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 63 6f  xConstraint[] co
f3b0: 6e 73 74 72 61 69 6e 74 73 20 3d 20 6e 75 6c 6c  nstraints = null
f3c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ;..            S
f3d0: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
f3e0: 79 5b 5d 20 6f 72 64 65 72 42 79 73 20 3d 20 6e  y[] orderBys = n
f3f0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
f400: 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 49      if (includeI
f410: 6e 70 75 74 29 0d 0a 20 20 20 20 20 20 20 20 20  nput)..         
f420: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f430: 20 20 20 20 20 20 69 6e 70 75 74 73 20 3d 20 69        inputs = i
f440: 6e 64 65 78 2e 49 6e 70 75 74 73 3b 0d 0a 0d 0a  ndex.Inputs;....
f450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f460: 69 66 20 28 69 6e 70 75 74 73 20 3d 3d 20 6e 75  if (inputs == nu
f470: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
f480: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
f490: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f4a0: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 73 20      constraints 
f4b0: 3d 20 69 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61  = inputs.Constra
f4c0: 69 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ints;....       
f4d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
f4e0: 73 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c  straints == null
f4f0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
f500: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
f510: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f520: 20 20 6f 72 64 65 72 42 79 73 20 3d 20 69 6e 70    orderBys = inp
f530: 75 74 73 2e 4f 72 64 65 72 42 79 73 3b 0d 0a 0d  uts.OrderBys;...
f540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f550: 20 69 66 20 28 6f 72 64 65 72 42 79 73 20 3d 3d   if (orderBys ==
f560: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f570: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f580: 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rn;..           
f590: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
f5a0: 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d 3d 20    if (pIndex == 
f5b0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
f5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f5d0: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
f5e0: 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20       int offset 
f5f0: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
f600: 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61      int nConstra
f610: 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  int = SQLiteMars
f620: 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 49  hal.ReadInt32(pI
f630: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
f640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
f650: 20 28 69 6e 63 6c 75 64 65 49 6e 70 75 74 20 26   (includeInput &
f660: 26 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20 21  & (nConstraint !
f670: 3d 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 4c 65  = constraints.Le
f680: 6e 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20 20  ngth))..        
f690: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
f6a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
f6b0: 66 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20 21  f (nConstraint !
f6c0: 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  = constraintUsag
f6d0: 65 73 2e 4c 65 6e 67 74 68 29 0d 0a 20 20 20 20  es.Length)..    
f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f6f0: 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
f700: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
f710: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
f720: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
f730: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
f740: 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e   sizeof(int), In
f750: 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
f760: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
f770: 6e 63 6c 75 64 65 49 6e 70 75 74 29 0d 0a 20 20  ncludeInput)..  
f780: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f790: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
f7a0: 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20  Ptr pConstraint 
f7b0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
f7c0: 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20  ReadIntPtr(..   
f7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7e0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
f7f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f800: 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43       int sizeOfC
f810: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20  onstraintType = 
f820: 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74  Marshal.SizeOf(t
f830: 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
f840: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
f850: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
f860: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
f870: 6e 73 74 72 61 69 6e 74 29 29 3b 0d 0a 0d 0a 20  nstraint));.... 
f880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
f890: 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61  or (int iConstra
f8a0: 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72  int = 0; iConstr
f8b0: 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69  aint < nConstrai
f8c0: 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b  nt; iConstraint+
f8d0: 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
f8e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f8f0: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
f900: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
f910: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
f920: 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69  straint constrai
f930: 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  nt =..          
f940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
f950: 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
f960: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
f970: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d  dex_constraint(.
f980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f990: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
f9a0: 73 74 72 61 69 6e 74 73 5b 69 43 6f 6e 73 74 72  straints[iConstr
f9b0: 61 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20  aint]);....     
f9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
f9d0: 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75 72 65  arshal.Structure
f9e0: 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ToPtr(..        
f9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa00: 63 6f 6e 73 74 72 61 69 6e 74 2c 20 53 51 4c 69  constraint, SQLi
fa10: 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72  teMarshal.IntPtr
fa20: 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20  ForOffset(..    
fa30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa40: 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 2c      pConstraint,
fa50: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73   iConstraint * s
fa60: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54  izeOfConstraintT
fa70: 79 70 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ype),..         
fa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
fa90: 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alse);..        
faa0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
fab0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
fac0: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
fad0: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
fae0: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
faf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
fb00: 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
fb10: 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  e, sizeof(int));
fb20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fb30: 69 6e 74 20 6e 4f 72 64 65 72 42 79 20 3d 20 69  int nOrderBy = i
fb40: 6e 63 6c 75 64 65 49 6e 70 75 74 20 3f 0d 0a 20  ncludeInput ?.. 
fb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
fb60: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
fb70: 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  dInt32(pIndex, o
fb80: 66 66 73 65 74 29 20 3a 20 30 3b 0d 0a 0d 0a 20  ffset) : 0;.... 
fb90: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
fba0: 6e 63 6c 75 64 65 49 6e 70 75 74 20 26 26 20 28  ncludeInput && (
fbb0: 6e 4f 72 64 65 72 42 79 20 21 3d 20 6f 72 64 65  nOrderBy != orde
fbc0: 72 42 79 73 2e 4c 65 6e 67 74 68 29 29 0d 0a 20  rBys.Length)).. 
fbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
fbe0: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
fbf0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
fc00: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
fc10: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
fc20: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
fc30: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
fc40: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
fc50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
fc60: 20 28 69 6e 63 6c 75 64 65 49 6e 70 75 74 29 0d   (includeInput).
fc70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
fc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc90: 49 6e 74 50 74 72 20 70 4f 72 64 65 72 42 79 20  IntPtr pOrderBy 
fca0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
fcb0: 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64 65  ReadIntPtr(pInde
fcc0: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
fcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
fce0: 6e 74 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79  nt sizeOfOrderBy
fcf0: 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53  Type = Marshal.S
fd00: 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20  izeOf(typeof(.. 
fd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd20: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
fd30: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
fd40: 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 29 3b 0d  ndex_orderby));.
fd50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
fd60: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 4f 72 64     for (int iOrd
fd70: 65 72 42 79 20 3d 20 30 3b 20 69 4f 72 64 65 72  erBy = 0; iOrder
fd80: 42 79 20 3c 20 6e 4f 72 64 65 72 42 79 3b 20 69  By < nOrderBy; i
fd90: 4f 72 64 65 72 42 79 2b 2b 29 0d 0a 20 20 20 20  OrderBy++)..    
fda0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
fdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdc0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
fdd0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
fde0: 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72 64  ndex_orderby ord
fdf0: 65 72 42 79 20 3d 0d 0a 20 20 20 20 20 20 20 20  erBy =..        
fe00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe10: 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
fe20: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
fe30: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a  index_orderby(..
fe40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe50: 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 64 65              orde
fe60: 72 42 79 73 5b 69 4f 72 64 65 72 42 79 5d 29 3b  rBys[iOrderBy]);
fe70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fe80: 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
fe90: 53 74 72 75 63 74 75 72 65 54 6f 50 74 72 28 0d  StructureToPtr(.
fea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
feb0: 20 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79           orderBy
fec0: 2c 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  , SQLiteMarshal.
fed0: 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
fee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fef0: 20 20 20 20 20 20 20 20 20 20 70 4f 72 64 65 72            pOrder
ff00: 42 79 2c 20 69 4f 72 64 65 72 42 79 20 2a 20 73  By, iOrderBy * s
ff10: 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
ff20: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
ff30: 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73              fals
ff40: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
ff50: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
ff60: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
ff70: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
ff80: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
ff90: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
ffa0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
ffb0: 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20  t, IntPtr.Size, 
ffc0: 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
ffd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
ffe0: 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 55  Ptr pConstraintU
fff0: 73 61 67 65 20 3d 20 53 51 4c 69 74 65 4d 61 72  sage = SQLiteMar
10000 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
10010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10020 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74    pIndex, offset
10030 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10040 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73    int sizeOfCons
10050 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 20  traintUsageType 
10060 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66  = Marshal.SizeOf
10070 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20  (typeof(..      
10080 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
10090 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
100a0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
100b0 74 72 61 69 6e 74 5f 75 73 61 67 65 29 29 3b 0d  traint_usage));.
100c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  ...            f
100d0 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61  or (int iConstra
100e0 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72  int = 0; iConstr
100f0 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69  aint < nConstrai
10100 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b  nt; iConstraint+
10110 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
10120 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10130 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
10140 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
10150 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
10160 75 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74  usage constraint
10170 55 73 61 67 65 20 3d 0d 0a 20 20 20 20 20 20 20  Usage =..       
10180 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
10190 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
101a0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
101b0 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
101c0 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
101d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
101e0 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69  nstraintUsages[i
101f0 43 6f 6e 73 74 72 61 69 6e 74 5d 29 3b 0d 0a 0d  Constraint]);...
10200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10210 20 4d 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75   Marshal.Structu
10220 72 65 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20  reToPtr(..      
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
10240 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20 53  nstraintUsage, S
10250 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74  QLiteMarshal.Int
10260 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20  PtrForOffset(.. 
10270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10280 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73     pConstraintUs
10290 61 67 65 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74  age, iConstraint
102a0 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61   * sizeOfConstra
102b0 69 6e 74 55 73 61 67 65 54 79 70 65 29 2c 0d 0a  intUsageType),..
102c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102d0 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20      false);..   
102e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
102f0 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
10300 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
10310 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
10320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10330 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
10340 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ize, sizeof(int)
10350 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10360 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
10370 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65  WriteInt32(pInde
10380 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  x, offset,..    
10390 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
103a0 75 74 73 2e 49 6e 64 65 78 4e 75 6d 62 65 72 29  uts.IndexNumber)
103b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
103c0 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
103d0 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
103e0 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
103f0 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
10400 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50  izeof(int), IntP
10410 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
10420 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
10430 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50  arshal.WriteIntP
10440 74 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  tr(pIndex, offse
10450 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
10460 20 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67      SQLiteString
10470 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
10480 74 72 69 6e 67 28 6f 75 74 70 75 74 73 2e 49 6e  tring(outputs.In
10490 64 65 78 53 74 72 69 6e 67 29 29 3b 0d 0a 0d 0a  dexString));....
104a0 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
104b0 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
104c0 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
104d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
104e0 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72    offset, IntPtr
104f0 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e  .Size, sizeof(in
10500 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
10510 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10520 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20      // NOTE: We 
10530 6a 75 73 74 20 61 6c 6c 6f 63 61 74 65 64 20 74  just allocated t
10540 68 65 20 49 6e 64 65 78 53 74 72 69 6e 67 20 66  he IndexString f
10550 69 65 6c 64 3b 20 74 68 65 72 65 66 6f 72 65 2c  ield; therefore,
10560 20 77 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20   we..           
10570 20 2f 2f 20 20 20 20 20 20 20 6e 65 65 64 20 74   //       need t
10580 6f 20 73 65 74 20 6d 61 6b 65 20 73 75 72 65 20  o set make sure 
10590 74 68 65 20 4e 65 65 64 54 6f 46 72 65 65 49 6e  the NeedToFreeIn
105a0 64 65 78 53 74 72 69 6e 67 20 66 69 65 6c 64 0d  dexString field.
105b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
105c0 20 20 20 20 20 20 69 73 20 6e 6f 6e 2d 7a 65 72        is non-zer
105d0 6f 3b 20 68 6f 77 65 76 65 72 2c 20 77 65 20 61  o; however, we a
105e0 72 65 20 6e 6f 74 20 70 69 63 6b 79 20 61 62 6f  re not picky abo
105f0 75 74 20 74 68 65 20 65 78 61 63 74 0d 0a 20 20  ut the exact..  
10600 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10610 20 20 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20     value...     
10620 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
10630 20 20 20 20 20 20 20 69 6e 74 20 6e 65 65 64 54         int needT
10640 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
10650 20 3d 20 6f 75 74 70 75 74 73 2e 4e 65 65 64 54   = outputs.NeedT
10660 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
10670 20 21 3d 20 30 20 3f 0d 0a 20 20 20 20 20 20 20   != 0 ?..       
10680 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
10690 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78  .NeedToFreeIndex
106a0 53 74 72 69 6e 67 20 3a 20 31 3b 0d 0a 0d 0a 20  String : 1;.... 
106b0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
106c0 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
106d0 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
106e0 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
106f0 20 20 20 20 20 6e 65 65 64 54 6f 46 72 65 65 49       needToFreeI
10700 6e 64 65 78 53 74 72 69 6e 67 29 3b 0d 0a 0d 0a  ndexString);....
10710 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
10720 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
10730 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
10740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10750 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
10760 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69 6e  (int), sizeof(in
10770 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
10780 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
10790 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e  l.WriteInt32(pIn
107a0 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
107b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
107c0 74 70 75 74 73 2e 4f 72 64 65 72 42 79 43 6f 6e  tputs.OrderByCon
107d0 73 75 6d 65 64 29 3b 0d 0a 0d 0a 20 20 20 20 20  sumed);....     
107e0 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
107f0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
10800 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
10810 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
10820 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
10830 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  , sizeof(double)
10840 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10850 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 45 73    if (outputs.Es
10860 74 69 6d 61 74 65 64 43 6f 73 74 2e 48 61 73 56  timatedCost.HasV
10870 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20  alue)..         
10880 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10890 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
108a0 68 61 6c 2e 57 72 69 74 65 44 6f 75 62 6c 65 28  hal.WriteDouble(
108b0 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d  pIndex, offset,.
108c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
108d0 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73 74       outputs.Est
108e0 69 6d 61 74 65 64 43 6f 73 74 2e 47 65 74 56 61  imatedCost.GetVa
108f0 6c 75 65 4f 72 44 65 66 61 75 6c 74 28 29 29 3b  lueOrDefault());
10900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
10910 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
10920 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
10930 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
10940 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
10950 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
10960 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 73 69 7a  eof(double), siz
10970 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20  eof(long));.... 
10980 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
10990 75 74 70 75 74 73 2e 43 61 6e 55 73 65 45 73 74  utputs.CanUseEst
109a0 69 6d 61 74 65 64 52 6f 77 73 28 29 20 26 26 0d  imatedRows() &&.
109b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
109c0 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74   outputs.Estimat
109d0 65 64 52 6f 77 73 2e 48 61 73 56 61 6c 75 65 29  edRows.HasValue)
109e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
109f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10a00 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
10a10 72 69 74 65 49 6e 74 36 34 28 70 49 6e 64 65 78  riteInt64(pIndex
10a20 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  , offset,..     
10a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
10a40 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64  utputs.Estimated
10a50 52 6f 77 73 2e 47 65 74 56 61 6c 75 65 4f 72 44  Rows.GetValueOrD
10a60 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20  efault());..    
10a70 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10a80 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
10a90 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
10aa0 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
10ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
10ac0 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 6c 6f  ffset, sizeof(lo
10ad0 6e 67 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ng), sizeof(int)
10ae0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10af0 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61    if (outputs.Ca
10b00 6e 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28 29  nUseIndexFlags()
10b10 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
10b20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64       outputs.Ind
10b30 65 78 46 6c 61 67 73 2e 48 61 73 56 61 6c 75 65  exFlags.HasValue
10b40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
10b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10b60 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
10b70 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65  WriteInt32(pInde
10b80 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  x, offset,..    
10b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
10ba0 69 6e 74 29 6f 75 74 70 75 74 73 2e 49 6e 64 65  int)outputs.Inde
10bb0 78 46 6c 61 67 73 2e 47 65 74 56 61 6c 75 65 4f  xFlags.GetValueO
10bc0 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20  rDefault());..  
10bd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
10be0 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
10bf0 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
10c00 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
10c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10c20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
10c30 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e  int), sizeof(lon
10c40 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  g));....        
10c50 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
10c60 43 61 6e 55 73 65 43 6f 6c 75 6d 6e 73 55 73 65  CanUseColumnsUse
10c70 64 28 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  d() &&..        
10c80 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
10c90 43 6f 6c 75 6d 6e 73 55 73 65 64 2e 48 61 73 56  ColumnsUsed.HasV
10ca0 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20  alue)..         
10cb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10cc0 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
10cd0 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70  hal.WriteInt64(p
10ce0 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a  Index, offset,..
10cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d00 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75      outputs.Colu
10d10 6d 6e 73 55 73 65 64 2e 47 65 74 56 61 6c 75 65  mnsUsed.GetValue
10d20 4f 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20  OrDefault());.. 
10d30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
10d40 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10d50 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
10d60 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
10d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
10db0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
10dc0 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
10dd0 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ies..        pri
10de0 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78  vate SQLiteIndex
10df0 49 6e 70 75 74 73 20 69 6e 70 75 74 73 3b 0d 0a  Inputs inputs;..
10e00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
10e10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
10e20 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
10e30 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  ="SQLiteIndexInp
10e40 75 74 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  uts" /> object i
10e50 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69  nstance containi
10e60 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
10e70 74 68 65 20 69 6e 70 75 74 73 20 74 6f 20 74 68  the inputs to th
10e80 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
10e90 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
10ea0 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
10eb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
10ec0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
10ed0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10ee0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
10ef0 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 49  iteIndexInputs I
10f00 6e 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b  nputs..        {
10f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
10f20 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 70 75 74  t { return input
10f30 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  s; }..        }.
10f40 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
10f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f90 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
10fa0 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
10fb0 78 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74 73  xOutputs outputs
10fc0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
10fd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10fe0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
10ff0 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
11000 4f 75 74 70 75 74 73 22 20 2f 3e 20 6f 62 6a 65  Outputs" /> obje
11010 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74  ct instance cont
11020 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
11030 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 73 20  /// the outputs 
11040 66 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72  from the <see cr
11050 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
11060 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
11070 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  ex" />..        
11080 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  /// method...   
11090 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
110a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
110b0 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 4f  lic SQLiteIndexO
110c0 75 74 70 75 74 73 20 4f 75 74 70 75 74 73 0d 0a  utputs Outputs..
110d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
110e0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
110f0 75 72 6e 20 6f 75 74 70 75 74 73 3b 20 7d 0d 0a  urn outputs; }..
11100 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11110 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
11120 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
11130 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
11140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11180 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
11190 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72  region SQLiteVir
111a0 74 75 61 6c 54 61 62 6c 65 20 42 61 73 65 20 43  tualTable Base C
111b0 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
111c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
111d0 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
111e0 65 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64  esents a managed
111f0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
11200 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20  mplementation.  
11210 49 74 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e  It is..    /// n
11220 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20 73 68  ot sealed and sh
11230 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61 73 20  ould be used as 
11240 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66  the base class f
11250 6f 72 20 61 6e 79 20 75 73 65 72 2d 64 65 66 69  or any user-defi
11260 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 76 69 72  ned..    /// vir
11270 74 75 61 6c 20 74 61 62 6c 65 20 63 6c 61 73 73  tual table class
11280 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69  es implemented i
11290 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d  n managed code..
112a0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
112b0 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
112c0 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72 74  class SQLiteVirt
112d0 75 61 6c 54 61 62 6c 65 20 3a 0d 0a 20 20 20 20  ualTable :..    
112e0 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e          ISQLiteN
112f0 61 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44 69  ativeHandle, IDi
11300 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20  sposable /* NOT 
11310 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b  SEALED */..    {
11320 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
11330 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
11340 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nts..        ///
11350 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11360 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65      /// The inde
11370 78 20 77 69 74 68 69 6e 20 74 68 65 20 61 72 72  x within the arr
11380 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72  ay of strings pr
11390 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20  ovided to the.. 
113a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
113b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
113c0 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74  agedModule.Creat
113d0 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20  e" /> and..     
113e0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
113f0 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
11400 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
11410 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61  /> methods conta
11420 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
11430 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74     /// name of t
11440 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  he module implem
11450 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72 74  enting this virt
11460 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
11470 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11480 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
11490 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 4d 6f  ate const int Mo
114a0 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20  duleNameIndex = 
114b0 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  0;....        //
114c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11500 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
11510 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11520 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
11530 69 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68 65  index within the
11540 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67   array of string
11550 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
11560 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
11570 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
11580 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
11590 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20  reate" /> and.. 
115a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
115b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
115c0 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65  agedModule.Conne
115d0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63  ct" /> methods c
115e0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20  ontaining the.. 
115f0 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20         /// name 
11600 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
11610 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20  containing this 
11620 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
11630 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
11640 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
11650 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e  private const in
11660 74 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e  t DatabaseNameIn
11670 64 65 78 20 3d 20 31 3b 0d 0a 0d 0a 20 20 20 20  dex = 1;....    
11680 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
11690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
116d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
116e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
116f0 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68  / The index with
11700 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20  in the array of 
11710 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64  strings provided
11720 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
11730 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
11740 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
11750 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20  dule.Create" /> 
11760 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
11770 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
11780 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
11790 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  .Connect" /> met
117a0 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20  hods containing 
117b0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
117c0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72   name of the vir
117d0 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
117e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
117f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
11800 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 54  vate const int T
11810 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20  ableNameIndex = 
11820 32 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  2;..        #end
11830 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
11840 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
11850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11880 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
11890 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
118a0 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
118b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
118c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
118d0 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
118e0 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
118f0 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
11900 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11910 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
11920 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
11930 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20  uments">..      
11940 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
11950 61 6c 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  al array of stri
11960 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  ngs provided to 
11970 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
11980 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
11990 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
119a0 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d  .Create" /> and.
119b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
119c0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
119d0 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e  anagedModule.Con
119e0 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73  nect" /> methods
119f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11a00 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
11a10 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69   public SQLiteVi
11a20 72 74 75 61 6c 54 61 62 6c 65 28 0d 0a 20 20 20  rtualTable(..   
11a30 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
11a40 5d 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  ] arguments..   
11a50 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
11a60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11a70 20 20 20 74 68 69 73 2e 61 72 67 75 6d 65 6e 74     this.argument
11a80 73 20 3d 20 61 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = arguments;..
11a90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11aa0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
11ab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
11ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
11b10 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
11b20 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70  rties..        p
11b30 72 69 76 61 74 65 20 73 74 72 69 6e 67 5b 5d 20  rivate string[] 
11b40 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20  arguments;..    
11b50 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11b60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11b70 68 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61  he original arra
11b80 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f  y of strings pro
11b90 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
11ba0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
11bb0 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
11bc0 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
11bd0 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20  " /> and..      
11be0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
11bf0 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
11c00 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f  odule.Connect" /
11c10 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
11c20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11c30 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
11c40 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e  ic virtual strin
11c50 67 5b 5d 20 41 72 67 75 6d 65 6e 74 73 0d 0a 20  g[] Arguments.. 
11c60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11c70 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
11c80 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
11c90 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 3b 20 7d  urn arguments; }
11ca0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
11cb0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11d10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11d20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
11d30 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c   the module impl
11d40 65 6d 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69  ementing this vi
11d50 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
11d60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
11d70 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
11d80 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72  blic virtual str
11d90 69 6e 67 20 4d 6f 64 75 6c 65 4e 61 6d 65 0d 0a  ing ModuleName..
11da0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11db0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
11dc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11dd0 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
11de0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
11df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
11e00 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
11e10 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = Arguments;..
11e20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11e30 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
11e40 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
11e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e60 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e    (arguments.Len
11e70 67 74 68 20 3e 20 4d 6f 64 75 6c 65 4e 61 6d 65  gth > ModuleName
11e80 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20  Index))..       
11e90 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11eb0 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73  return arguments
11ec0 5b 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78  [ModuleNameIndex
11ed0 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
11ee0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
11ef0 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
11f00 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
11f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11f40 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
11f50 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
11f60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
11f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
11fc0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
11fd0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
11fe0 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
11ff0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20  containing this 
12000 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
12010 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
12020 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
12030 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73  public virtual s
12040 74 72 69 6e 67 20 44 61 74 61 62 61 73 65 4e 61  tring DatabaseNa
12050 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  me..        {.. 
12060 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
12070 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
12090 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
120a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
120b0 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75     string[] argu
120c0 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e 74  ments = Argument
120d0 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
120e0 20 20 20 20 20 20 69 66 20 28 28 61 72 67 75 6d        if ((argum
120f0 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26  ents != null) &&
12100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12110 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73        (arguments
12120 2e 4c 65 6e 67 74 68 20 3e 20 44 61 74 61 62 61  .Length > Databa
12130 73 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20  seNameIndex)).. 
12140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12160 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67        return arg
12170 75 6d 65 6e 74 73 5b 44 61 74 61 62 61 73 65 4e  uments[DatabaseN
12180 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20  ameIndex];..    
12190 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
121a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
121b0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
121c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
121d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
121e0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
121f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12200 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12210 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12220 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12260 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12270 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12280 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
12290 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76  he name of the v
122a0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
122b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
122c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
122d0 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74  ublic virtual st
122e0 72 69 6e 67 20 54 61 62 6c 65 4e 61 6d 65 0d 0a  ring TableName..
122f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12300 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
12310 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12320 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
12330 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
12340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
12350 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
12360 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = Arguments;..
12370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12380 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
12390 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
123a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123b0 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e    (arguments.Len
123c0 67 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65 49  gth > TableNameI
123d0 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20  ndex))..        
123e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
123f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12400 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b  eturn arguments[
12410 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b  TableNameIndex];
12420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12430 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
12440 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
12450 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
12460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12470 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
12480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12490 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
124a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
124b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
124c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12500 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
12510 65 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e  e SQLiteIndex in
12520 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dex;..        //
12530 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12540 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
12550 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
12560 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  dex" /> object i
12570 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69  nstance containi
12580 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20  ng all the..    
12590 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72      /// data for
125a0 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e 64 20   the inputs and 
125b0 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69 6e 67  outputs relating
125c0 20 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65 63   to the most rec
125d0 65 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20  ent index..     
125e0 20 20 20 2f 2f 2f 20 73 65 6c 65 63 74 69 6f 6e     /// selection
125f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12600 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
12610 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
12620 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 20 49 6e  l SQLiteIndex In
12630 64 65 78 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dex..        {..
12640 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
12650 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
12660 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 3b  ); return index;
12670 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
12680 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
12690 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
126a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
126f0 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
12700 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
12710 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12720 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
12730 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 6e 6f  method should no
12740 72 6d 61 6c 6c 79 20 62 65 20 75 73 65 64 20 62  rmally be used b
12750 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
12760 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
12770 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
12780 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
12790 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72   method in order
127a0 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
127b0 20 70 65 72 66 6f 72 6d 20 69 6e 64 65 78 20 73   perform index s
127c0 65 6c 65 63 74 69 6f 6e 20 62 61 73 65 64 20 6f  election based o
127d0 6e 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  n the constraint
127e0 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  s provided by th
127f0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  e..        /// S
12800 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
12810 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
12820 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12830 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
12840 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20  name="index">.. 
12850 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
12860 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
12870 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74  Index" /> object
12880 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69   instance contai
12890 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20  ning all the..  
128a0 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66        /// data f
128b0 6f 72 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e  or the inputs an
128c0 64 20 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69  d outputs relati
128d0 6e 67 20 74 6f 20 69 6e 64 65 78 20 73 65 6c 65  ng to index sele
128e0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
128f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
12900 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
12910 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
12920 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73   Non-zero upon s
12930 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20  uccess...       
12940 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
12950 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
12960 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 42 65 73  virtual bool Bes
12970 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
12980 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
12990 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20   index..        
129a0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
129b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
129c0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
129d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
129e0 69 73 2e 69 6e 64 65 78 20 3d 20 69 6e 64 65 78  is.index = index
129f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12a00 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
12a10 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12a20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
12a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12a70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
12a80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
12a90 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 72 65  / Attempts to re
12aa0 63 6f 72 64 20 74 68 65 20 72 65 6e 61 6d 69 6e  cord the renamin
12ab0 67 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  g of the virtual
12ac0 20 74 61 62 6c 65 20 61 73 73 6f 63 69 61 74 65   table associate
12ad0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
12ae0 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20  ith this object 
12af0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
12b00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12b10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
12b20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
12b30 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
12b40 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f 72  The new name for
12b50 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
12b60 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
12b70 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
12b80 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
12b90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
12ba0 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63  n-zero upon succ
12bb0 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ess...        //
12bc0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
12bd0 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
12be0 74 75 61 6c 20 62 6f 6f 6c 20 52 65 6e 61 6d 65  tual bool Rename
12bf0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
12c00 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20  tring name..    
12c10 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
12c20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12c30 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
12c40 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12c50 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
12c60 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
12c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61                (a
12c80 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20  rguments.Length 
12c90 3e 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78  > TableNameIndex
12ca0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
12cb0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12cc0 20 20 20 61 72 67 75 6d 65 6e 74 73 5b 54 61 62     arguments[Tab
12cd0 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 20 3d 20 6e  leNameIndex] = n
12ce0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
12cf0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
12d00 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
12d10 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
12d20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
12d30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12d40 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
12d50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12da0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
12db0 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
12dc0 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d  eHandle Members.
12dd0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
12de0 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61   IntPtr nativeHa
12df0 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ndle;..        /
12e00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12e10 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
12e20 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
12e30 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68   SQLite native h
12e40 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64  andle associated
12e50 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
12e60 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
12e70 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
12e80 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12e90 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
12ea0 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20   virtual IntPtr 
12eb0 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20  NativeHandle..  
12ec0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12ed0 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
12ee0 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
12ef0 72 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b  rn nativeHandle;
12f00 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12f10 69 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e  internal set { n
12f20 61 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61  ativeHandle = va
12f30 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
12f40 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
12f50 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
12f60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fa0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12fb0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
12fc0 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d  posable Members.
12fd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
12fe0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
12ff0 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
13000 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
13010 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
13020 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13030 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
13040 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
13050 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13060 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
13070 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
13080 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
13090 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
130a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
130b0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
130c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
130d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13110 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
13120 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
13130 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
13140 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
13150 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
13160 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
13170 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
13180 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65  // Throws an <se
13190 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69  e cref="ObjectDi
131a0 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22  sposedException"
131b0 20 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65   /> if this obje
131c0 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
131d0 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65  instance has bee
131e0 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  n disposed...   
131f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13200 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
13210 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44  vate void CheckD
13220 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72  isposed() /* thr
13230 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  ow */..        {
13240 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44  ..#if THROW_ON_D
13250 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20  ISPOSED..       
13260 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65       if (dispose
13270 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
13280 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13290 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a     throw new Obj
132a0 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70  ectDisposedExcep
132b0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
132c0 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
132d0 66 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  f(SQLiteVirtualT
132e0 61 62 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20  able).Name);..  
132f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
13300 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
13310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13360 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
13370 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13380 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73      /// Disposes
13390 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   of this object 
133a0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
133b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
133c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
133d0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70  param name="disp
133e0 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20  osing">..       
133f0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
13400 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   this method is 
13410 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f  being called fro
13420 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
13430 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69  // <see cref="Di
13440 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68  spose()" /> meth
13450 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69  od.  Zero if thi
13460 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e  s method is bein
13470 67 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20  g called..      
13480 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66    /// from the f
13490 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20  inalizer...     
134a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
134b0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
134c0 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
134d0 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
134e0 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
134f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13500 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a  if (!disposed)..
13510 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13530 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d  /if (disposing).
13540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13550 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   //{..          
13560 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f        //    ////
13570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
135a0 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f    //    // dispo
135b0 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
135c0 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
135d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
135e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
135f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13600 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
13610 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d            //}...
13620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13630 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13650 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
13660 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65           // rele
13670 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65  ase unmanaged re
13680 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
13690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
136a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
136b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
136d0 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
136e0 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
136f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
13700 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
13710 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
13720 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
13770 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
13780 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  Destructor..    
13790 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
137a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
137b0 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62  inalizes this ob
137c0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
137d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
137e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
137f0 7e 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  ~SQLiteVirtualTa
13800 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ble()..        {
13810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
13820 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
13830 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13840 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
13850 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
13860 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
13870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
138c0 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72 74  egion SQLiteVirt
138d0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 42  ualTableCursor B
138e0 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  ase Class..    /
138f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13900 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
13910 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61   represents a ma
13920 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61  naged virtual ta
13930 62 6c 65 20 63 75 72 73 6f 72 20 69 6d 70 6c 65  ble cursor imple
13940 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
13950 2f 2f 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65  /// It is not se
13960 61 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c 64 20  aled and should 
13970 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 62  be used as the b
13980 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e  ase class for an
13990 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 72 2d  y..    /// user-
139a0 64 65 66 69 6e 65 64 20 76 69 72 74 75 61 6c 20  defined virtual 
139b0 74 61 62 6c 65 20 63 75 72 73 6f 72 20 63 6c 61  table cursor cla
139c0 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64  sses implemented
139d0 20 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65   in managed code
139e0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
139f0 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
13a00 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69  c class SQLiteVi
13a10 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
13a20 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
13a30 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e  ISQLiteNativeHan
13a40 64 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65  dle, IDisposable
13a50 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a   /* NOT SEALED *
13a60 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  /..    {..      
13a70 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63    #region Protec
13a80 74 65 64 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ted Constants.. 
13a90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
13aa0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
13ab0 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70  / This value rep
13ac0 72 65 73 65 6e 74 73 20 61 6e 20 69 6e 76 61 6c  resents an inval
13ad0 69 64 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  id integer row s
13ae0 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 2e 0d  equence number..
13af0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
13b00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
13b10 20 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69   protected stati
13b20 63 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 49  c readonly int I
13b30 6e 76 61 6c 69 64 52 6f 77 49 6e 64 65 78 20 3d  nvalidRowIndex =
13b40 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e   0;..        #en
13b50 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
13b60 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
13bb0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
13bc0 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
13bd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13be0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
13bf0 68 65 20 66 69 65 6c 64 20 68 6f 6c 64 73 20 74  he field holds t
13c00 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  he integer row s
13c10 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66  equence number f
13c20 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  or the current r
13c30 6f 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ow..        /// 
13c40 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 74 68  pointed to by th
13c50 69 73 20 63 75 72 73 6f 72 20 6f 62 6a 65 63 74  is cursor object
13c60 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
13c70 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13c80 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
13c90 61 74 65 20 69 6e 74 20 72 6f 77 49 6e 64 65 78  ate int rowIndex
13ca0 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
13cb0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
13cc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13d10 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
13d20 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
13d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
13d40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13d50 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
13d60 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
13d70 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
13d80 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13d90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
13da0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
13db0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
13dc0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
13dd0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
13de0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
13df0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
13e00 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
13e10 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20  ith this object 
13e20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
13e30 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
13e40 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
13e50 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
13e60 6c 65 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20  leCursor(..     
13e70 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
13e80 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 0d  tualTable table.
13e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
13ea0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
13eb0 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
13ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
13ed0 73 2e 74 61 62 6c 65 20 3d 20 74 61 62 6c 65 3b  s.table = table;
13ee0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
13ef0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
13f00 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
13f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f50 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
13f60 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
13f70 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
13f80 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13f90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
13fa0 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
13fb0 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
13fc0 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
13fd0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13fe0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
13ff0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
14000 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20  Cursor()..      
14010 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14020 20 72 6f 77 49 6e 64 65 78 20 3d 20 49 6e 76 61   rowIndex = Inva
14030 6c 69 64 52 6f 77 49 6e 64 65 78 3b 0d 0a 20 20  lidRowIndex;..  
14040 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14050 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
14060 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
140b0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
140c0 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
140d0 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ies..        pri
140e0 76 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75  vate SQLiteVirtu
140f0 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d 0a  alTable table;..
14100 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
14110 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
14120 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
14130 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
14140 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
14150 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
14160 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
14170 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
14180 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
14190 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
141a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
141b0 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69  lic virtual SQLi
141c0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 54  teVirtualTable T
141d0 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  able..        {.
141e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
141f0 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
14200 28 29 3b 20 72 65 74 75 72 6e 20 74 61 62 6c 65  (); return table
14210 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
14220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14270 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
14280 76 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e 75  vate int indexNu
14290 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f  mber;..        /
142a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
142b0 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72        /// Number
142c0 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64   used to help id
142d0 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63  entify the selec
142e0 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73  ted index.  This
142f0 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20   value will..   
14300 20 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20       /// be set 
14310 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65  via the <see cre
14320 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  f="Filter" /> me
14330 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
14340 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14350 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
14360 72 74 75 61 6c 20 69 6e 74 20 49 6e 64 65 78 4e  rtual int IndexN
14370 75 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b  umber..        {
14380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
14390 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
143a0 64 28 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65  d(); return inde
143b0 78 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20  xNumber; }..    
143c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
143d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
143e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14410 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14420 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
14430 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d  ng indexString;.
14440 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
14450 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14460 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20  /// String used 
14470 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79  to help identify
14480 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e   the selected in
14490 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65  dex.  This value
144a0 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
144b0 2f 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68  // be set via th
144c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c  e <see cref="Fil
144d0 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
144e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
144f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
14500 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
14510 73 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69  string IndexStri
14520 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ng..        {.. 
14530 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
14540 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
14550 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53 74  ; return indexSt
14560 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ring; }..       
14570 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
14580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
145d0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56   private SQLiteV
145e0 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 3b 0d 0a  alue[] values;..
145f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
14600 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
14610 2f 2f 20 54 68 65 20 76 61 6c 75 65 73 20 75 73  // The values us
14620 65 64 20 74 6f 20 66 69 6c 74 65 72 20 74 68 65  ed to filter the
14630 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 76   rows returned v
14640 69 61 20 74 68 69 73 20 63 75 72 73 6f 72 20 6f  ia this cursor o
14650 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
14660 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68  // instance.  Th
14670 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  is value will be
14680 20 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65   set via the <se
14690 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20  e cref="Filter" 
146a0 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
146b0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
146c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
146d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
146e0 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 61  virtual SQLiteVa
146f0 6c 75 65 5b 5d 20 56 61 6c 75 65 73 0d 0a 20 20  lue[] Values..  
14700 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14710 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
14720 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
14730 72 6e 20 76 61 6c 75 65 73 3b 20 7d 0d 0a 20 20  rn values; }..  
14740 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14750 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
14760 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
147b0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
147c0 6e 20 50 72 6f 74 65 63 74 65 64 20 4d 65 74 68  n Protected Meth
147d0 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
147e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
147f0 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
14800 20 74 6f 20 70 65 72 73 69 73 74 20 74 68 65 20   to persist the 
14810 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
14820 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65  ref="SQLiteValue
14830 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20  " /> object..   
14840 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
14850 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6d  es in order to m
14860 61 6b 65 20 74 68 65 6d 20 61 76 61 69 6c 61 62  ake them availab
14870 6c 65 20 61 66 74 65 72 20 74 68 65 0d 0a 20 20  le after the..  
14880 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
14890 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
148a0 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72  gedModule.Filter
148b0 22 20 2f 3e 20 6d 65 74 68 6f 64 20 72 65 74 75  " /> method retu
148c0 72 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns...        //
148d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
148e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
148f0 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d   name="values">.
14900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
14910 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63   array of <see c
14920 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65  ref="SQLiteValue
14930 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
14940 61 6e 63 65 73 20 74 6f 20 62 65 0d 0a 20 20 20  ances to be..   
14950 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73 74       /// persist
14960 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
14970 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
14980 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
14990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
149a0 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65  e number of <see
149b0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c   cref="SQLiteVal
149c0 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ue" /> object in
149d0 73 74 61 6e 63 65 73 20 74 68 61 74 20 77 65 72  stances that wer
149e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
149f0 75 63 63 65 73 73 66 75 6c 6c 79 20 70 65 72 73  uccessfully pers
14a00 69 73 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  isted...        
14a10 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
14a20 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
14a30 64 20 76 69 72 74 75 61 6c 20 69 6e 74 20 54 72  d virtual int Tr
14a40 79 50 65 72 73 69 73 74 56 61 6c 75 65 73 28 0d  yPersistValues(.
14a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
14a60 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65  iteValue[] value
14a70 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  s..            )
14a80 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
14a90 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
14aa0 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ult = 0;....    
14ab0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
14ac0 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es != null)..   
14ad0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
14ae0 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65              fore
14af0 61 63 68 20 28 53 51 4c 69 74 65 56 61 6c 75 65  ach (SQLiteValue
14b00 20 76 61 6c 75 65 20 69 6e 20 76 61 6c 75 65 73   value in values
14b10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
14b20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14b30 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
14b40 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
14b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b60 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
14b70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14b80 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
14b90 2e 50 65 72 73 69 73 74 28 29 29 0d 0a 20 20 20  .Persist())..   
14ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14bb0 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a       result++;..
14bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14bd0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
14be0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14bf0 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
14c00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14c10 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
14c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
14c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
14c80 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
14c90 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
14ca0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
14cb0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
14cc0 6f 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c  od should normal
14cd0 6c 79 20 62 65 20 75 73 65 64 20 62 79 20 74 68  ly be used by th
14ce0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
14cf0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
14d00 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46  eManagedModule.F
14d10 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
14d20 20 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20   in order to..  
14d30 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72        /// perfor
14d40 6d 20 66 69 6c 74 65 72 69 6e 67 20 6f 66 20 74  m filtering of t
14d50 68 65 20 72 65 73 75 6c 74 20 72 6f 77 73 20 61  he result rows a
14d60 6e 64 2f 6f 72 20 74 6f 20 72 65 63 6f 72 64 20  nd/or to record 
14d70 74 68 65 20 66 69 6c 74 65 72 69 6e 67 0d 0a 20  the filtering.. 
14d80 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 69 74 65         /// crite
14d90 72 69 61 20 70 72 6f 76 69 64 65 64 20 62 79 20  ria provided by 
14da0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
14db0 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
14dc0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14dd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
14de0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78  aram name="index
14df0 4e 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20  Number">..      
14e00 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65    /// Number use
14e10 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69  d to help identi
14e20 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  fy the selected 
14e30 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
14e40 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
14e50 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
14e60 20 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69   name="indexStri
14e70 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ng">..        //
14e80 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f  / String used to
14e90 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74   help identify t
14ea0 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
14eb0 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
14ec0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
14ed0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
14ee0 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
14ef0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
14f00 75 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  ues correspondin
14f10 67 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e  g to each column
14f20 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64   in the selected
14f30 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
14f40 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
14f50 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
14f60 72 74 75 61 6c 20 76 6f 69 64 20 46 69 6c 74 65  rtual void Filte
14f70 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
14f80 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c  int indexNumber,
14f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
14fa0 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67  ring indexString
14fb0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
14fc0 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c  QLiteValue[] val
14fd0 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ues..           
14fe0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
14ff0 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
15000 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
15010 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
15020 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c 29 20  values != null) 
15030 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
15040 20 20 20 20 28 54 72 79 50 65 72 73 69 73 74 56      (TryPersistV
15050 61 6c 75 65 73 28 76 61 6c 75 65 73 29 20 21 3d  alues(values) !=
15060 20 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 29 29   values.Length))
15070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
15080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15090 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
150a0 65 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  eException(..   
150b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150c0 20 22 66 61 69 6c 65 64 20 74 6f 20 70 65 72 73   "failed to pers
150d0 69 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  ist one or more 
150e0 76 61 6c 75 65 73 22 29 3b 0d 0a 20 20 20 20 20  values");..     
150f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
15100 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64          this.ind
15110 65 78 4e 75 6d 62 65 72 20 3d 20 69 6e 64 65 78  exNumber = index
15120 4e 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20  Number;..       
15130 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 53       this.indexS
15140 74 72 69 6e 67 20 3d 20 69 6e 64 65 78 53 74 72  tring = indexStr
15150 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ing;..          
15160 20 20 74 68 69 73 2e 76 61 6c 75 65 73 20 3d 20    this.values = 
15170 76 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20  values;..       
15180 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
15190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151b0 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
151e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
151f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
15200 72 6d 69 6e 65 73 20 74 68 65 20 69 6e 74 65 67  rmines the integ
15210 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20  er row sequence 
15220 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63  number for the c
15230 75 72 72 65 6e 74 20 72 6f 77 2e 0d 0a 20 20 20  urrent row...   
15240 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15250 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
15260 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
15270 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65      /// The inte
15280 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65  ger row sequence
15290 20 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20   number for the 
152a0 63 75 72 72 65 6e 74 20 72 6f 77 20 2d 4f 52 2d  current row -OR-
152b0 20 7a 65 72 6f 20 69 66 0d 0a 20 20 20 20 20 20   zero if..      
152c0 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20    /// it cannot 
152d0 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
152e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
152f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
15300 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 69  public virtual i
15310 6e 74 20 47 65 74 52 6f 77 49 6e 64 65 78 28 29  nt GetRowIndex()
15320 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
15330 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15340 72 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  rowIndex;..     
15350 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
15360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
153b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
153c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 64  ..        /// Ad
153d0 6a 75 73 74 73 20 74 68 65 20 69 6e 74 65 67 65  justs the intege
153e0 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e  r row sequence n
153f0 75 6d 62 65 72 20 73 6f 20 74 68 61 74 20 69 74  umber so that it
15400 20 72 65 66 65 72 73 20 74 6f 20 74 68 65 0d 0a   refers to the..
15410 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74          /// next
15420 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f   row...        /
15430 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15440 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
15450 72 74 75 61 6c 20 76 6f 69 64 20 4e 65 78 74 52  rtual void NextR
15460 6f 77 49 6e 64 65 78 28 29 0d 0a 20 20 20 20 20  owIndex()..     
15470 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15480 20 20 72 6f 77 49 6e 64 65 78 2b 2b 3b 0d 0a 20    rowIndex++;.. 
15490 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
154a0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
154b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
154c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15500 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
15510 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  on ISQLiteNative
15520 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  Handle Members..
15530 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
15540 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61 6e  IntPtr nativeHan
15550 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle;..        //
15560 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15570 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
15580 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
15590 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
155a0 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
155b0 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
155c0 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
155d0 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
155e0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
155f0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
15600 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 4e  virtual IntPtr N
15610 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
15620 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15630 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
15640 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
15650 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 20  n nativeHandle; 
15660 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
15670 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e 61  nternal set { na
15680 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61 6c  tiveHandle = val
15690 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
156a0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
156b0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
156c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15700 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15710 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
15720 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
15730 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
15740 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15750 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
15760 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
15770 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
15780 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15790 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
157a0 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
157b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
157c0 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
157d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
157e0 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
157f0 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
15800 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
15810 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
15820 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
15830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15850 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
15870 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
15880 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
15890 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
158a0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
158b0 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20  ool disposed;.. 
158c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
158d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
158e0 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65  / Throws an <see
158f0 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73   cref="ObjectDis
15900 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20  posedException" 
15910 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  /> if this objec
15920 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
15930 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
15940 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
15950 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15960 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
15970 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
15980 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
15990 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  w */..        {.
159a0 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
159b0 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
159c0 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
159d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
159e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
159f0 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65    throw new Obje
15a00 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
15a10 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
15a20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
15a30 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  (SQLiteVirtualTa
15a40 62 6c 65 43 75 72 73 6f 72 29 2e 4e 61 6d 65 29  bleCursor).Name)
15a50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
15a60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
15a70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
15a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ac0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
15ad0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15ae0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73  .        /// Dis
15af0 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62  poses of this ob
15b00 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
15b10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
15b20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
15b30 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
15b40 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20  "disposing">..  
15b50 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
15b60 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
15b70 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
15b80 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
15b90 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
15ba0 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e  f="Dispose()" />
15bb0 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69   method.  Zero i
15bc0 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73  f this method is
15bd0 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a 20   being called.. 
15be0 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20         /// from 
15bf0 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a  the finalizer...
15c00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15c10 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
15c20 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
15c30 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
15c40 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
15c50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15c60 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
15c70 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
15c80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15c90 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
15ca0 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
15cb0 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20        //{..     
15cc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
15cd0 20 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 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
15d00 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
15d10 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
15d20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
15d30 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15d40 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
15d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
15d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15d80 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  /}....          
15d90 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
15da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
15dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15dd0 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
15de0 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
15df0 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
15e00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
15e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
15e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e40 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
15e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
15e60 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
15e70 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
15e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
15e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ed0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
15ee0 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d  gion Destructor.
15ef0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
15f00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
15f10 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68  /// Finalizes th
15f20 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
15f30 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
15f40 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15f50 20 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72 74       ~SQLiteVirt
15f60 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29  ualTableCursor()
15f70 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
15f80 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
15f90 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
15fa0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
15fb0 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
15fc0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
15fd0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
15fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16020 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
16030 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
16040 6e 64 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a  ndle Interface..
16050 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16060 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
16070 69 6e 74 65 72 66 61 63 65 20 72 65 70 72 65 73  interface repres
16080 65 6e 74 73 20 61 20 6e 61 74 69 76 65 20 68 61  ents a native ha
16090 6e 64 6c 65 20 70 72 6f 76 69 64 65 64 20 62 79  ndle provided by
160a0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
160b0 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72  ..    /// librar
160c0 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
160d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
160e0 69 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51  ic interface ISQ
160f0 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
16100 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
16110 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16120 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
16130 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 76 61  native handle va
16140 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
16150 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16160 20 20 20 20 20 20 49 6e 74 50 74 72 20 4e 61 74        IntPtr Nat
16170 69 76 65 48 61 6e 64 6c 65 20 7b 20 67 65 74 3b  iveHandle { get;
16180 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23   }..    }..    #
16190 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
161a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
161b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
161f0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
16200 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
16210 20 49 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   Interface..    
16220 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16230 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65     /// This inte
16240 72 66 61 63 65 20 72 65 70 72 65 73 65 6e 74 73  rface represents
16250 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
16260 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
16270 77 72 69 74 74 65 6e 20 69 6e 0d 0a 20 20 20 20  written in..    
16280 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 63 6f 64 65  /// managed code
16290 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
162a0 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
162b0 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c  c interface ISQL
162c0 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
162d0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
162e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
162f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75          /// Retu
16300 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20  rns non-zero if 
16310 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72 20 74  the schema for t
16320 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
16330 20 68 61 73 20 62 65 65 6e 0d 0a 20 20 20 20 20   has been..     
16340 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72 65 64 2e     /// declared.
16350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16360 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16370 20 20 62 6f 6f 6c 20 44 65 63 6c 61 72 65 64 20    bool Declared 
16380 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20  { get; }....    
16390 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
163e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
163f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
16400 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 6e 61  / Returns the na
16410 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  me of the module
16420 20 61 73 20 69 74 20 77 61 73 20 72 65 67 69 73   as it was regis
16430 74 65 72 65 64 20 77 69 74 68 20 74 68 65 20 53  tered with the S
16440 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 2f  QLite..        /
16450 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  // core library.
16460 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16470 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16480 20 20 73 74 72 69 6e 67 20 4e 61 6d 65 20 7b 20    string Name { 
16490 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20 20  get; }....      
164a0 20 20 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 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
164f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16500 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
16510 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
16520 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
16530 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
16540 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
16550 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
16560 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
16570 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
16580 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16590 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
165a0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65  aram name="conne
165b0 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20  ction">..       
165c0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
165d0 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
165e0 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tion" /> object 
165f0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
16600 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
16610 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
16620 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
16630 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
16640 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16650 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74  am name="pClient
16660 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
16670 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 75  /// The native u
16680 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72  ser-data pointer
16690 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
166a0 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73   this module, as
166b0 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20 20   it was..       
166c0 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74 6f   /// provided to
166d0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
166e0 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74 68   library when th
166f0 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
16700 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
16710 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74 65    /// was create
16720 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
16730 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
16740 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
16750 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a  e="arguments">..
16760 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
16770 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20 64 61 74  module name, dat
16780 61 62 61 73 65 20 6e 61 6d 65 2c 20 76 69 72 74  abase name, virt
16790 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20  ual table name, 
167a0 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 0d 0a 20  and all other.. 
167b0 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d         /// argum
167c0 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20 74  ents passed to t
167d0 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
167e0 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
167f0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
16800 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
16810 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
16820 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
16830 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
16840 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
16850 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
16860 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
16870 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16880 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
16890 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
168a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
168b0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  nce associated w
168c0 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ith..        ///
168d0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
168e0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
168f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
16900 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16910 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
16920 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61       /// Upon fa
16930 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61  ilure, this para
16940 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
16950 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
16960 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20  n an error..    
16970 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e      /// message.
16980 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16990 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
169a0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
169b0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
169c0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
169d0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
169e0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
169f0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
16a00 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61 74  eErrorCode Creat
16a10 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
16a20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
16a30 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a   connection,  /*
16a40 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
16a50 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65      IntPtr pClie
16a60 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20 20 20  ntData,         
16a70 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
16a80 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
16a90 20 61 72 67 75 6d 65 6e 74 73 2c 20 20 20 20 20   arguments,     
16aa0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
16ab0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
16ac0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
16ad0 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74  le table, /* out
16ae0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
16af0 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
16b00 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  r              /
16b10 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
16b20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
16b30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16b40 2f 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
16b80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
16b90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
16ba0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
16bb0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
16bc0 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
16bd0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
16be0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
16bf0 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
16c00 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
16c10 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16c20 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
16c30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
16c40 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  nnection">..    
16c50 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
16c60 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
16c70 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  nection" /> obje
16c80 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
16c90 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
16ca0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72       /// the vir
16cb0 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
16cc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
16cd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
16ce0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69  param name="pCli
16cf0 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  entData">..     
16d00 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
16d10 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e  e user-data poin
16d20 74 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77  ter associated w
16d30 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c  ith this module,
16d40 20 61 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20   as it was..    
16d50 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64      /// provided
16d60 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
16d70 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e  ore library when
16d80 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   the native modu
16d90 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  le instance..   
16da0 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65       /// was cre
16db0 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
16dc0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
16dd0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
16de0 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22  name="arguments"
16df0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16e00 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20  he module name, 
16e10 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 76  database name, v
16e20 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d  irtual table nam
16e30 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72  e, and all other
16e40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72  ..        /// ar
16e50 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74  guments passed t
16e60 6f 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52  o the CREATE VIR
16e70 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65  TUAL TABLE state
16e80 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ment...        /
16e90 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
16ea0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
16eb0 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
16ec0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
16ed0 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
16ee0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
16ef0 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
16f00 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
16f10 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
16f20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
16f30 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
16f40 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
16f50 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
16f60 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20  /// the virtual 
16f70 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
16f80 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
16f90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
16fa0 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
16fb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
16fc0 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70   failure, this p
16fd0 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
16fe0 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
16ff0 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20  tain an error.. 
17000 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61         /// messa
17010 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ge...        ///
17020 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
17030 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
17040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
17050 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
17060 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
17070 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
17080 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
17090 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f  LiteErrorCode Co
170a0 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
170b0 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
170c0 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c  tion connection,
170d0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
170e0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
170f0 43 6c 69 65 6e 74 44 61 74 61 2c 20 20 20 20 20  ClientData,     
17100 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
17110 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
17120 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 2c 20  ng[] arguments, 
17130 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
17140 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
17150 72 65 66 20 53 51 4c 69 74 65 56 69 72 74 75 61  ref SQLiteVirtua
17160 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
17170 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
17180 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
17190 65 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 20  error           
171a0 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
171b0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
171c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
171d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171e0 2f 2f 2f 2f 2f 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 0d  ///////////////.
17210 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17220 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17230 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
17240 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
17250 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
17260 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
17270 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
17280 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74  tiveModule.xBest
17290 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
172a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
172b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
172c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
172d0 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
172e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
172f0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
17300 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
17310 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
17320 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
17330 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
17340 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
17350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17360 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17370 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17380 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  index">..       
17390 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
173a0 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22  ef="SQLiteIndex"
173b0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
173c0 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61  nce containing a
173d0 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ll the..        
173e0 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65  /// data for the
173f0 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70   inputs and outp
17400 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20  uts relating to 
17410 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 2e  index selection.
17420 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17430 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17440 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
17450 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
17460 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
17470 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
17480 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17490 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
174a0 65 45 72 72 6f 72 43 6f 64 65 20 42 65 73 74 49  eErrorCode BestI
174b0 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
174c0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
174d0 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20  Table table, /* 
174e0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
174f0 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69     SQLiteIndex i
17500 6e 64 65 78 20 20 20 20 20 20 20 20 20 2f 2a 20  ndex         /* 
17510 69 6e 2c 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20  in, out */..    
17520 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
17530 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
17540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
17580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
17590 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
175a0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
175b0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
175c0 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
175d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
175e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
175f0 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  veModule.xDiscon
17600 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
17610 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17620 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17630 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17640 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
17650 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
17660 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
17670 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
17680 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
17690 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
176a0 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
176b0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
176c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
176d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
176e0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
176f0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
17700 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
17710 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
17720 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
17730 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
17740 72 72 6f 72 43 6f 64 65 20 44 69 73 63 6f 6e 6e  rrorCode Disconn
17750 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
17760 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
17770 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e  able table /* in
17780 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
17790 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
177a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177e0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
177f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
17810 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
17820 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
17830 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
17840 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
17850 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
17860 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d  e.xDestroy" /> m
17870 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
17880 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17890 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
178a0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
178b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
178c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
178d0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
178e0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
178f0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
17900 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
17910 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
17920 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
17930 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17940 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
17950 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
17960 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
17970 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
17980 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
17990 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
179a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44  QLiteErrorCode D
179b0 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
179c0 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
179d0 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a  alTable table /*
179e0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
179f0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
17a00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17a50 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
17a60 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
17a70 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
17a80 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
17a90 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
17aa0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
17ab0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
17ac0 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d  dule.xOpen" /> m
17ad0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
17ae0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17af0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
17b00 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
17b10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17b20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
17b30 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
17b40 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
17b50 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
17b60 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
17b70 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
17b80 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
17b90 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17ba0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
17bb0 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
17bc0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
17bd0 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
17be0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
17bf0 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
17c00 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
17c10 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
17c20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
17c30 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
17c40 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
17c50 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
17c60 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 20 6e 65   /// with the ne
17c70 77 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75  wly opened virtu
17c80 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 2e  al table cursor.
17c90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17ca0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17cb0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
17cc0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
17cd0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
17ce0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
17cf0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17d00 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
17d10 65 45 72 72 6f 72 43 6f 64 65 20 4f 70 65 6e 28  eErrorCode Open(
17d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
17d30 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
17d40 20 74 61 62 6c 65 2c 20 20 20 20 20 20 20 20 20   table,         
17d50 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
17d60 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
17d70 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
17d80 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 6f  rsor cursor /* o
17d90 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
17da0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
17db0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17df0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17e00 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17e10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17e20 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
17e30 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
17e40 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
17e50 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
17e60 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
17e70 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d  ule.xClose" /> m
17e80 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
17e90 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17ea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
17eb0 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
17ec0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17ed0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
17ee0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
17ef0 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
17f00 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
17f10 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
17f20 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76  ed with the prev
17f30 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69  iously opened vi
17f40 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
17f50 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  or to be..      
17f60 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20    /// used...   
17f70 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17f80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17f90 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17fa0 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
17fb0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
17fc0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
17fd0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
17fe0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
17ff0 72 43 6f 64 65 20 43 6c 6f 73 65 28 0d 0a 20 20  rCode Close(..  
18000 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
18010 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
18020 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20  or cursor /* in 
18030 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
18040 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
180a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
180b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
180c0 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
180d0 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
180e0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
180f0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
18100 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
18110 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  .xFilter" /> met
18120 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
18130 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18140 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
18150 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
18160 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18170 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18180 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18190 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
181a0 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
181b0 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
181c0 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
181d0 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
181e0 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
181f0 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
18200 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
18210 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18220 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18230 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e  ram name="indexN
18240 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  umber">..       
18250 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
18260 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
18270 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
18280 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndex...        /
18290 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
182a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
182b0 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69 6e  name="indexStrin
182c0 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
182d0 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20   String used to 
182e0 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
182f0 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
18300 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18310 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
18320 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18330 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
18340 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
18350 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  es corresponding
18360 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20   to each column 
18370 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  in the selected 
18380 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
18390 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
183a0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
183b0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
183c0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
183d0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
183e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
183f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
18400 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18410 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20   Filter(..      
18420 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
18430 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
18440 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  ursor, /* in */.
18450 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
18460 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 20 20 20   indexNumber,   
18470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
18480 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18490 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
184a0 53 74 72 69 6e 67 2c 20 20 20 20 20 20 20 20 20  String,         
184b0 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
184c0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
184d0 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 20  eValue[] values 
184e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
184f0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
18500 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
18510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18530 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18560 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18570 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18580 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
18590 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
185a0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
185b0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
185c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
185d0 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74  le.xNext" /> met
185e0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
185f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18600 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
18610 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
18620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18630 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18640 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18650 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
18660 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
18670 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
18680 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
18690 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
186a0 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
186b0 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
186c0 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
186d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
186e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
186f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
18700 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
18710 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
18720 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
18730 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
18740 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
18750 6f 64 65 20 4e 65 78 74 28 0d 0a 20 20 20 20 20  ode Next(..     
18760 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
18770 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
18780 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d  cursor /* in */.
18790 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
187a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
187b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
18800 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
18810 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
18820 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
18830 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
18840 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
18850 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
18860 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45  eNativeModule.xE
18870 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  of" /> method...
18880 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
18890 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
188a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
188b0 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
188c0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
188d0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
188e0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
188f0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
18900 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
18910 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
18920 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
18930 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
18940 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
18950 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
18960 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
18970 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
18980 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
18990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
189a0 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20 6d 6f 72  n-zero if no mor
189b0 65 20 72 6f 77 73 20 61 72 65 20 61 76 61 69 6c  e rows are avail
189c0 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74 68 65 72  able; zero other
189d0 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  wise...        /
189e0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
189f0 20 20 20 20 20 20 20 62 6f 6f 6c 20 45 6f 66 28         bool Eof(
18a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
18a10 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
18a20 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a  Cursor cursor /*
18a30 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18a40 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
18a50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18aa0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
18ab0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18ac0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
18ad0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
18ae0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
18af0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
18b00 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
18b10 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
18b20 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
18b30 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
18b40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
18b50 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
18b60 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
18b70 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
18b80 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
18b90 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
18ba0 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ect instance..  
18bb0 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
18bc0 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72  ated with the pr
18bd0 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20  eviously opened 
18be0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
18bf0 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20  rsor to be..    
18c00 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
18c10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18c20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
18c30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
18c40 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20 20 20  ntext">..       
18c50 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
18c60 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 74 65 78  ef="SQLiteContex
18c70 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  t" /> object ins
18c80 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64  tance to be used
18c90 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f   for..        //
18ca0 2f 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20  / returning the 
18cb0 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e  specified column
18cc0 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 53 51   value to the SQ
18cd0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
18ce0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
18cf0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
18d00 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
18d10 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20  e="index">..    
18d20 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65 72 6f      /// The zero
18d30 2d 62 61 73 65 64 20 69 6e 64 65 78 20 63 6f 72  -based index cor
18d40 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68  responding to th
18d50 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61 69 6e  e column contain
18d60 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
18d70 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20 62 65   /// value to be
18d80 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
18d90 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
18da0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
18db0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
18dc0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
18dd0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
18de0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
18df0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
18e00 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
18e10 43 6f 64 65 20 43 6f 6c 75 6d 6e 28 0d 0a 20 20  Code Column(..  
18e20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
18e30 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
18e40 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e  or cursor, /* in
18e50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
18e60 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 63   SQLiteContext c
18e70 6f 6e 74 65 78 74 2c 20 20 20 20 20 20 20 20 20  ontext,         
18e80 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
18e90 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
18ea0 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  x               
18eb0 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
18ec0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
18ed0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
18ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
18f30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
18f40 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
18f50 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
18f60 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
18f70 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
18f80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
18f90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
18fa0 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f  xRowId" /> metho
18fb0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
18fc0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18fd0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
18fe0 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
18ff0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
19000 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
19010 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
19020 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
19030 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
19040 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
19050 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73  ith the previous
19060 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61  ly opened virtua
19070 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
19080 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
19090 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  / used...       
190a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
190b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
190c0 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d  m name="rowId">.
190d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
190e0 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
190f0 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
19100 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
19110 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65  ntain the unique
19120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
19130 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69  teger row identi
19140 66 69 65 72 20 66 6f 72 20 74 68 65 20 63 75 72  fier for the cur
19150 72 65 6e 74 20 72 6f 77 20 66 6f 72 20 74 68 65  rent row for the
19160 20 73 70 65 63 69 66 69 65 64 20 63 75 72 73 6f   specified curso
19170 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
19180 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19190 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
191a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
191b0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
191c0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
191d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
191e0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
191f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 77  iteErrorCode Row
19200 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Id(..           
19210 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
19220 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
19230 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
19240 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
19250 20 72 6f 77 49 64 20 20 20 20 20 20 20 20 20 20   rowId          
19260 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20           /* out 
19270 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
19280 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
19290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
192e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
192f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
19300 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
19310 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
19320 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
19330 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
19340 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
19350 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
19360 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
19370 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
19380 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19390 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
193a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
193b0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
193c0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
193d0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
193e0 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
193f0 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
19400 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
19410 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
19420 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19430 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19440 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
19450 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
19460 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ay of <see cref=
19470 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e  "SQLiteValue" />
19480 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
19490 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  s containing..  
194a0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 65        /// the ne
194b0 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 63 6f  w or modified co
194c0 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 69 66 20  lumn values, if 
194d0 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  any...        //
194e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
194f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19500 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20  ame="rowId">..  
19510 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
19520 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
19530 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
19540 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
19550 69 6e 20 74 68 65 20 75 6e 69 71 75 65 0d 0a 20  in the unique.. 
19560 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67         /// integ
19570 65 72 20 72 6f 77 20 69 64 65 6e 74 69 66 69 65  er row identifie
19580 72 20 66 6f 72 20 74 68 65 20 72 6f 77 20 74 68  r for the row th
19590 61 74 20 77 61 73 20 69 6e 73 65 72 74 65 64 2c  at was inserted,
195a0 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
195b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
195c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
195d0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
195e0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
195f0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
19600 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19610 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
19620 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
19630 64 65 20 55 70 64 61 74 65 28 0d 0a 20 20 20 20  de Update(..    
19640 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
19650 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
19660 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
19670 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 61          SQLiteVa
19680 6c 75 65 5b 5d 20 76 61 6c 75 65 73 2c 20 20 20  lue[] values,   
19690 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
196a0 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
196b0 20 72 6f 77 49 64 20 20 20 20 20 20 20 20 20 20   rowId          
196c0 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
196d0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
196e0 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
19720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19740 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
19750 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
19760 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
19770 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
19780 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
19790 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
197a0 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
197b0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
197c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
197d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
197e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
197f0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
19800 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
19810 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
19820 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
19830 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
19840 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
19850 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
19860 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
19870 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19880 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
19890 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
198a0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
198b0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
198c0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
198d0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
198e0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
198f0 43 6f 64 65 20 42 65 67 69 6e 28 0d 0a 20 20 20  Code Begin(..   
19900 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
19910 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
19920 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  e /* in */..    
19930 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
19940 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19990 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
199a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
199b0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
199c0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
199d0 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
199e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
199f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
19a00 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20  veModule.xSync" 
19a10 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
19a20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
19a30 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
19a40 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
19a50 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
19a60 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
19a70 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
19a80 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
19a90 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
19aa0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
19ab0 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
19ac0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
19ad0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
19ae0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
19af0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
19b00 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
19b10 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
19b20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19b30 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
19b40 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
19b50 64 65 20 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  de Sync(..      
19b60 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
19b70 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f  ualTable table /
19b80 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
19b90 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
19ba0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19bf0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
19c00 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
19c10 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
19c20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
19c30 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
19c40 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
19c50 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
19c60 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f  odule.xCommit" /
19c70 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
19c80 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
19c90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19ca0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
19cb0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
19cc0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19cd0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
19ce0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
19cf0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
19d00 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
19d10 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
19d20 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
19d30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
19d40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
19d50 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
19d60 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
19d70 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
19d80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19d90 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
19da0 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
19db0 65 20 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20  e Commit(..     
19dc0 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
19dd0 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20  tualTable table 
19de0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
19df0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
19e00 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
19e50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
19e60 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
19e70 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
19e80 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
19e90 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
19ea0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
19eb0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
19ec0 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
19ed0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
19ee0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
19ef0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
19f00 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
19f10 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
19f20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
19f30 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
19f40 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
19f50 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
19f60 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
19f70 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
19f80 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
19f90 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19fa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
19fb0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
19fc0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
19fd0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
19fe0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
19ff0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1a000 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1a010 43 6f 64 65 20 52 6f 6c 6c 62 61 63 6b 28 0d 0a  Code Rollback(..
1a020 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1a030 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
1a040 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  able /* in */.. 
1a050 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1a060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1a0c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1a0d0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1a0e0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1a0f0 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1a100 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1a110 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1a120 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
1a130 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
1a140 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1a150 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1a160 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1a170 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1a180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1a190 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1a1a0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1a1b0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1a1c0 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1a1d0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1a1e0 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1a1f0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1a200 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1a210 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1a220 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e  me="argumentCoun
1a230 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
1a240 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61   The number of a
1a250 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20  rguments to the 
1a260 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 73  function being s
1a270 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20 20 20  ought...        
1a280 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1a290 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1a2a0 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
1a2b0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1a2c0 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63 74  ame of the funct
1a2d0 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74  ion being sought
1a2e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a2f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1a300 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1a310 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a 20 20  ="function">..  
1a320 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
1a330 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
1a340 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
1a350 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
1a360 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1a370 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
1a380 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22 20 2f  QLiteFunction" /
1a390 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1a3a0 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f  e responsible fo
1a3b0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  r..        /// i
1a3c0 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68 65 20  mplementing the 
1a3d0 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69  specified functi
1a3e0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
1a3f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1a400 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1a410 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22  me="pClientData"
1a420 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
1a430 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
1a440 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
1a450 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
1a460 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20  contain the..   
1a470 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20       /// native 
1a480 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65  user-data pointe
1a490 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  r associated wit
1a4a0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  h..        /// <
1a4b0 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 66  paramref name="f
1a4c0 75 6e 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a 20 20  unction" />...  
1a4d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1a4e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1a4f0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1a500 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1a510 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
1a520 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20 66 6f   function was fo
1a530 75 6e 64 3b 20 7a 65 72 6f 20 6f 74 68 65 72 77  und; zero otherw
1a540 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ise...        //
1a550 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1a560 20 20 20 20 20 20 62 6f 6f 6c 20 46 69 6e 64 46        bool FindF
1a570 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
1a580 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
1a590 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
1a5a0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
1a5b0 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
1a5c0 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 20 20 20 20  umentCount,     
1a5d0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
1a5e0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1a5f0 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20 20 20  ng name,        
1a600 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
1a610 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
1a620 65 66 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  ef SQLiteFunctio
1a630 6e 20 66 75 6e 63 74 69 6f 6e 2c 20 2f 2a 20 6f  n function, /* o
1a640 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1a650 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43     ref IntPtr pC
1a660 6c 69 65 6e 74 44 61 74 61 20 20 20 20 20 20 20  lientData       
1a670 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
1a680 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1a690 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1a6e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1a6f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1a700 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
1a710 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
1a720 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
1a730 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1a740 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
1a750 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22  eModule.xRename"
1a760 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1a770 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1a780 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1a790 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1a7a0 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1a7b0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1a7c0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1a7d0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1a7e0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1a7f0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1a800 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1a810 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1a820 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1a830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1a840 72 61 6d 20 6e 61 6d 65 3d 22 6e 65 77 4e 61 6d  ram name="newNam
1a850 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1a860 20 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f   The new name fo
1a870 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
1a880 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1a890 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1a8a0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1a8b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1a8c0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1a8d0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1a8e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1a8f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1a900 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
1a910 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
1a920 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1a930 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
1a940 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1a950 20 20 20 20 73 74 72 69 6e 67 20 6e 65 77 4e 61      string newNa
1a960 6d 65 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  me            /*
1a970 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1a980 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1a990 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1a9e0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1a9f0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1aa00 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1aa10 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1aa20 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1aa30 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1aa40 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1aa50 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22  dule.xSavepoint"
1aa60 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1aa70 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1aa80 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1aa90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1aaa0 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1aab0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1aac0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1aad0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1aae0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1aaf0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1ab00 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1ab10 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1ab20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1ab30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1ab40 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f  ram name="savepo
1ab50 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
1ab60 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e  // This is an in
1ab70 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72  teger identifier
1ab80 20 75 6e 64 65 72 20 77 68 69 63 68 20 74 68 65   under which the
1ab90 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61   the current sta
1aba0 74 65 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f  te of..        /
1abb0 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  // the virtual t
1abc0 61 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 73  able should be s
1abd0 61 76 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aved...        /
1abe0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1abf0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1ac00 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1ac10 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1ac20 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1ac30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1ac40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1ac50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1ac60 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20  Savepoint(..    
1ac70 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
1ac80 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
1ac90 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
1aca0 20 20 20 20 20 20 20 20 69 6e 74 20 73 61 76 65          int save
1acb0 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20 20 20  point           
1acc0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
1acd0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1ace0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1ad30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1ad40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1ad50 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1ad60 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1ad70 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1ad80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1ad90 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1ada0 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  veModule.xReleas
1adb0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
1adc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1add0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1ade0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1adf0 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
1ae00 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1ae10 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
1ae20 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
1ae30 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
1ae40 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
1ae50 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
1ae60 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
1ae70 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1ae80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1ae90 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65  param name="save
1aea0 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
1aeb0 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20   /// This is an 
1aec0 69 6e 74 65 67 65 72 20 75 73 65 64 20 74 6f 20  integer used to 
1aed0 69 6e 64 69 63 61 74 65 20 74 68 61 74 20 61 6e  indicate that an
1aee0 79 20 73 61 76 65 64 20 73 74 61 74 65 73 20 77  y saved states w
1aef0 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  ith an..        
1af00 2f 2f 2f 20 69 64 65 6e 74 69 66 69 65 72 20 67  /// identifier g
1af10 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65  reater than or e
1af20 71 75 61 6c 20 74 6f 20 74 68 69 73 20 73 68 6f  qual to this sho
1af30 75 6c 64 20 62 65 20 64 65 6c 65 74 65 64 20 62  uld be deleted b
1af40 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
1af50 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
1af60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1af70 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1af80 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1af90 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1afa0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1afb0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
1afc0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1afd0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
1afe0 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65 6c 65  teErrorCode Rele
1aff0 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
1b000 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1b010 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
1b020 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1b030 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20    int savepoint 
1b040 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
1b050 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1b060 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1b070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b0c0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1b0d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b0e0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1b0f0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1b100 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1b110 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1b120 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1b130 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
1b140 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1b150 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1b160 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1b170 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
1b180 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
1b190 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1b1a0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
1b1b0 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
1b1c0 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
1b1d0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1b1e0 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
1b1f0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1b200 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1b210 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b220 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69  am name="savepoi
1b230 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
1b240 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74  / This is an int
1b250 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1b260 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20  used to specify 
1b270 61 20 73 70 65 63 69 66 69 63 20 73 61 76 65 64  a specific saved
1b280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
1b290 61 74 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  ate for the virt
1b2a0 75 61 6c 20 74 61 62 6c 65 20 66 6f 72 20 69 74  ual table for it
1b2b0 20 74 6f 20 72 65 73 74 6f 72 65 20 69 74 73 65   to restore itse
1b2c0 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77 68 69 63  lf back to, whic
1b2d0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  h..        /// s
1b2e0 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76 65 20  hould also have 
1b2f0 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 64 65  the effect of de
1b300 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61 76 65 64  leting all saved
1b310 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d   states with an.
1b320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
1b330 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1b340 67 72 65 61 74 65 72 20 74 68 61 6e 20 74 68 69  greater than thi
1b350 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20  s one...        
1b360 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1b370 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1b380 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1b390 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1b3a0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1b3b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1b3c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1b3d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1b3e0 20 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20   RollbackTo(..  
1b3f0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1b400 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
1b410 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
1b420 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 61            int sa
1b430 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20  vepoint         
1b440 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1b450 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 20 20            );..  
1b460 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
1b470 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
1b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
1b4d0 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 65 6d 6f  egion SQLiteMemo
1b4e0 72 79 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d  ry Static Class.
1b4f0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1b500 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
1b510 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20   class contains 
1b520 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74  static methods t
1b530 68 61 74 20 61 72 65 20 75 73 65 64 20 74 6f 20  hat are used to 
1b540 61 6c 6c 6f 63 61 74 65 2c 0d 0a 20 20 20 20 2f  allocate,..    /
1b550 2f 2f 20 6d 61 6e 69 70 75 6c 61 74 65 2c 20 61  // manipulate, a
1b560 6e 64 20 66 72 65 65 20 6e 61 74 69 76 65 20 6d  nd free native m
1b570 65 6d 6f 72 79 20 70 72 6f 76 69 64 65 64 20 62  emory provided b
1b580 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  y the SQLite cor
1b590 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1b5a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1b5b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b5c0 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65  tic class SQLite
1b5d0 4d 65 6d 6f 72 79 0d 0a 20 20 20 20 7b 0d 0a 20  Memory..    {.. 
1b5e0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
1b5f0 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23 69 66  rivate Data..#if
1b600 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59   TRACK_MEMORY_BY
1b610 54 45 53 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  TES..        ///
1b620 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1b630 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 62 6a      /// This obj
1b640 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20  ect instance is 
1b650 75 73 65 64 20 74 6f 20 73 79 6e 63 68 72 6f 6e  used to synchron
1b660 69 7a 65 20 61 63 63 65 73 73 20 74 6f 20 74 68  ize access to th
1b670 65 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20  e other..       
1b680 20 2f 2f 2f 20 73 74 61 74 69 63 20 66 69 65 6c   /// static fiel
1b690 64 73 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ds of this class
1b6a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b6b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1b6c0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1b6d0 63 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  c object syncRoo
1b6e0 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
1b6f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1b700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b740 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1b750 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1b760 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 74         /// The t
1b770 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f  otal number of o
1b780 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f 72  utstanding memor
1b790 79 20 62 79 74 65 73 20 61 6c 6c 6f 63 61 74 65  y bytes allocate
1b7a0 64 20 62 79 20 74 68 69 73 0d 0a 20 20 20 20 20  d by this..     
1b7b0 20 20 20 2f 2f 2f 20 63 6c 61 73 73 20 75 73 69     /// class usi
1b7c0 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  ng the SQLite co
1b7d0 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
1b7e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1b7f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
1b800 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
1b810 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d  bytesAllocated;.
1b820 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1b830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b870 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1b880 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1b890 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 78       /// The max
1b8a0 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 6f  imum number of o
1b8b0 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f 72  utstanding memor
1b8c0 79 20 62 79 74 65 73 20 65 76 65 72 20 61 6c 6c  y bytes ever all
1b8d0 6f 63 61 74 65 64 20 62 79 0d 0a 20 20 20 20 20  ocated by..     
1b8e0 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73     /// this clas
1b8f0 73 20 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69  s using the SQLi
1b900 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
1b910 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1b920 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1b930 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1b940 20 69 6e 74 20 6d 61 78 69 6d 75 6d 42 79 74 65   int maximumByte
1b950 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 23 65 6e  sAllocated;..#en
1b960 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  dif..        #en
1b970 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1b980 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b9d0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 65        #region Me
1b9e0 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20  mory Allocation 
1b9f0 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
1ba00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1ba10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1ba20 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 74 20  // Allocates at 
1ba30 6c 65 61 73 74 20 74 68 65 20 73 70 65 63 69 66  least the specif
1ba40 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  ied number of by
1ba50 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20 6d 65  tes of native me
1ba60 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mory..        //
1ba70 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69 74 65  / via the SQLite
1ba80 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 73 71   core library sq
1ba90 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66  lite3_malloc() f
1baa0 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65 74 75  unction and retu
1bab0 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rns..        ///
1bac0 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6e   the resulting n
1bad0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e 0d 0a  ative pointer...
1bae0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1baf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1bb00 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1bb10 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20 20  "size">..       
1bb20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
1bb30 6f 66 20 62 79 74 65 73 20 74 6f 20 61 6c 6c 6f  of bytes to allo
1bb40 63 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cate...        /
1bb50 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1bb60 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1bb70 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1bb80 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
1bb90 65 72 20 74 68 61 74 20 70 6f 69 6e 74 73 20 74  er that points t
1bba0 6f 20 61 20 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d  o a block of mem
1bbb0 6f 72 79 20 6f 66 20 61 74 20 6c 65 61 73 74 20  ory of at least 
1bbc0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1bbd0 20 73 70 65 63 69 66 69 65 64 20 73 69 7a 65 20   specified size 
1bbe0 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65 66 3d 22  -OR- <see cref="
1bbf0 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20  IntPtr.Zero" /> 
1bc00 69 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 63 6f  if the memory co
1bc10 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  uld..        ///
1bc20 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 63 61 74 65   not be allocate
1bc30 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1bc40 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1bc50 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1bc60 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74  c IntPtr Allocat
1bc70 65 28 69 6e 74 20 73 69 7a 65 29 0d 0a 20 20 20  e(int size)..   
1bc80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1bc90 20 20 20 20 49 6e 74 50 74 72 20 70 4d 65 6d 6f      IntPtr pMemo
1bca0 72 79 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76  ry = UnsafeNativ
1bcb0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
1bcc0 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 3b 0d 0a  _malloc(size);..
1bcd0 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f  ..#if TRACK_MEMO
1bce0 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20  RY_BYTES..      
1bcf0 20 20 20 20 20 20 69 66 20 28 70 4d 65 6d 6f 72        if (pMemor
1bd00 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  y != IntPtr.Zero
1bd10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1bd20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bd30 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69 7a 65 20    int blockSize 
1bd40 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72 79 29 3b  = Size(pMemory);
1bd50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1bd60 20 20 20 20 69 66 20 28 62 6c 6f 63 6b 53 69 7a      if (blockSiz
1bd70 65 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  e > 0)..        
1bd80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1bd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1bda0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1bdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bdc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1bdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1bde0 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 2b 3d  ytesAllocated +=
1bdf0 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a 0d 0a 20   blockSize;.... 
1be00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be10 20 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73         if (bytes
1be20 41 6c 6c 6f 63 61 74 65 64 20 3e 20 6d 61 78 69  Allocated > maxi
1be30 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74 65  mumBytesAllocate
1be40 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
1be50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be60 6d 61 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f  maximumBytesAllo
1be70 63 61 74 65 64 20 3d 20 62 79 74 65 73 41 6c 6c  cated = bytesAll
1be80 6f 63 61 74 65 64 3b 0d 0a 20 20 20 20 20 20 20  ocated;..       
1be90 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1bea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1beb0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1bec0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1bed0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
1bee0 4d 65 6d 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  Memory;..       
1bef0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1bf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf40 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1bf50 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1bf60 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73          /// Gets
1bf70 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
1bf80 20 61 63 74 75 61 6c 20 73 69 7a 65 20 6f 66 20   actual size of 
1bf90 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65  the specified me
1bfa0 6d 6f 72 79 20 62 6c 6f 63 6b 20 74 68 61 74 0d  mory block that.
1bfb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73  .        /// was
1bfc0 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61   previously obta
1bfd0 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 3c 73  ined from the <s
1bfe0 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74  ee cref="Allocat
1bff0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
1c000 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1c010 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1c020 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1c030 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20 20  pMemory">..     
1c040 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1c050 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1c060 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72   memory block pr
1c070 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65  eviously obtaine
1c080 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
1c090 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1c0a0 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20  f="Allocate" /> 
1c0b0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1c0c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1c0d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1c0e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1c0f0 2f 20 54 68 65 20 61 63 74 75 61 6c 20 73 69 7a  / The actual siz
1c100 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  e, in bytes, of 
1c110 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b  the memory block
1c120 20 73 70 65 63 69 66 69 65 64 20 76 69 61 20 74   specified via t
1c130 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1c140 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e 0d  native pointer..
1c150 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1c160 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1c170 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
1c180 6e 74 20 53 69 7a 65 28 49 6e 74 50 74 72 20 70  nt Size(IntPtr p
1c190 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20 20  Memory)..       
1c1a0 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f   {..#if !SQLITE_
1c1b0 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20  STANDARD..      
1c1c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73        return Uns
1c1d0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1c1e0 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f  .sqlite3_malloc_
1c1f0 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28 70 4d 65  size_interop(pMe
1c200 6d 6f 72 79 29 3b 0d 0a 23 65 6c 69 66 20 54 52  mory);..#elif TR
1c210 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53  ACK_MEMORY_BYTES
1c220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1c230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1c240 20 48 41 43 4b 3a 20 4f 6b 2c 20 77 65 20 63 61   HACK: Ok, we ca
1c250 6e 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65 20 74  nnot determine t
1c260 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6d  he size of the m
1c270 65 6d 6f 72 79 20 62 6c 6f 63 6b 3b 0d 0a 20 20  emory block;..  
1c280 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1c290 20 20 20 74 68 65 72 65 66 6f 72 65 2c 20 6a 75     therefore, ju
1c2a0 73 74 20 74 72 61 63 6b 20 6e 75 6d 62 65 72 20  st track number 
1c2b0 6f 66 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 69  of allocations i
1c2c0 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 20  nstead...       
1c2d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1c2e0 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 4d 65       return (pMe
1c2f0 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a  mory != IntPtr.Z
1c300 65 72 6f 29 20 3f 20 31 20 3a 20 30 3b 0d 0a 23  ero) ? 1 : 0;..#
1c310 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1c320 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 23 65 6e    return 0;..#en
1c330 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1c340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1c350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c390 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1c3a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1c3b0 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 20      /// Frees a 
1c3c0 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65  memory block pre
1c3d0 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64  viously obtained
1c3e0 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
1c3f0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1c400 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d  ="Allocate" /> m
1c410 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1c420 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1c430 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1c440 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79  am name="pMemory
1c450 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1c460 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
1c470 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79  er to the memory
1c480 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c   block previousl
1c490 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
1c4a0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1c4b0 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f   <see cref="Allo
1c4c0 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  cate" /> method.
1c4d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c4e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1c4f0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
1c500 69 64 20 46 72 65 65 28 49 6e 74 50 74 72 20 70  id Free(IntPtr p
1c510 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20 20  Memory)..       
1c520 20 7b 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45   {..#if TRACK_ME
1c530 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20  MORY_BYTES..    
1c540 20 20 20 20 20 20 20 20 69 66 20 28 70 4d 65 6d          if (pMem
1c550 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ory != IntPtr.Ze
1c560 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1c570 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1c580 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69 7a      int blockSiz
1c590 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72 79  e = Size(pMemory
1c5a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1c5b0 20 20 20 20 20 20 69 66 20 28 62 6c 6f 63 6b 53        if (blockS
1c5c0 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  ize > 0)..      
1c5d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1c5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5f0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1c600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c610 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c630 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20   bytesAllocated 
1c640 2d 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a 20  -= blockSize;.. 
1c650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c660 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1c670 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c680 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1c690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
1c6a0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1c6b0 73 2e 73 71 6c 69 74 65 33 5f 66 72 65 65 28 70  s.sqlite3_free(p
1c6c0 4d 65 6d 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  Memory);..      
1c6d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
1c6e0 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
1c6f0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1c700 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1c710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c750 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
1c760 20 53 51 4c 69 74 65 53 74 72 69 6e 67 20 53 74   SQLiteString St
1c770 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20  atic Class..    
1c780 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1c790 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
1c7a0 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69  s contains stati
1c7b0 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61  c methods that a
1c7c0 72 65 20 75 73 65 64 20 74 6f 20 64 65 61 6c 20  re used to deal 
1c7d0 77 69 74 68 20 6e 61 74 69 76 65 0d 0a 20 20 20  with native..   
1c7e0 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72 69 6e   /// UTF-8 strin
1c7f0 67 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 62 65  g pointers to be
1c800 20 75 73 65 64 20 77 69 74 68 20 74 68 65 20 53   used with the S
1c810 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1c820 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ry...    /// </s
1c830 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74  ummary>..    int
1c840 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
1c850 73 73 20 53 51 4c 69 74 65 53 74 72 69 6e 67 0d  ss SQLiteString.
1c860 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1c870 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
1c880 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20  Constants..     
1c890 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1c8a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1c8b0 69 73 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75  is is the maximu
1c8c0 6d 20 70 6f 73 73 69 62 6c 65 20 6c 65 6e 67 74  m possible lengt
1c8d0 68 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  h for the native
1c8e0 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 0d 0a   UTF-8 encoded..
1c8f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69          /// stri
1c900 6e 67 73 20 75 73 65 64 20 77 69 74 68 20 74 68  ngs used with th
1c910 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
1c920 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
1c930 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1c940 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1c950 73 74 61 74 69 63 20 69 6e 74 20 54 68 69 72 74  static int Thirt
1c960 79 42 69 74 73 20 3d 20 30 78 33 66 66 66 66 66  yBits = 0x3fffff
1c970 66 66 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ff;....        /
1c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1c9d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1c9e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1c9f0 73 20 69 73 20 74 68 65 20 3c 73 65 65 20 63 72  s is the <see cr
1ca00 65 66 3d 22 45 6e 63 6f 64 69 6e 67 22 20 2f 3e  ef="Encoding" />
1ca10 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1ca20 20 75 73 65 64 20 74 6f 20 68 61 6e 64 6c 65 0d   used to handle.
1ca30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  .        /// con
1ca40 76 65 72 73 69 6f 6e 73 20 66 72 6f 6d 2f 74 6f  versions from/to
1ca50 20 55 54 46 2d 38 2e 0d 0a 20 20 20 20 20 20 20   UTF-8...       
1ca60 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1ca70 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1ca80 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
1ca90 20 45 6e 63 6f 64 69 6e 67 20 55 74 66 38 45 6e   Encoding Utf8En
1caa0 63 6f 64 69 6e 67 20 3d 20 45 6e 63 6f 64 69 6e  coding = Encodin
1cab0 67 2e 55 54 46 38 3b 0d 0a 20 20 20 20 20 20 20  g.UTF8;..       
1cac0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1cad0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1cae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1caf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1cb20 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1cb30 6e 20 55 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67  n UTF-8 Encoding
1cb40 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
1cb50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1cb60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1cb70 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65  /// Converts the
1cb80 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67   specified manag
1cb90 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 74  ed string into t
1cba0 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
1cbb0 67 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f  g and..        /
1cbc0 2f 2f 20 72 65 74 75 72 6e 73 20 74 68 65 20 61  // returns the a
1cbd0 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 63 6f  rray of bytes co
1cbe0 6e 74 61 69 6e 69 6e 67 20 69 74 73 20 72 65 70  ntaining its rep
1cbf0 72 65 73 65 6e 74 61 74 69 6f 6e 20 69 6e 20 74  resentation in t
1cc00 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hat..        ///
1cc10 20 65 6e 63 6f 64 69 6e 67 2e 0d 0a 20 20 20 20   encoding...    
1cc20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1cc30 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1cc40 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
1cc50 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
1cc60 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74  / The managed st
1cc70 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ring to convert.
1cc80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1cc90 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1cca0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1ccb0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
1ccc0 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 63 6f  rray of bytes co
1ccd0 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 72 65 70  ntaining the rep
1cce0 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  resentation of t
1ccf0 68 65 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20  he managed..    
1cd00 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20 69      /// string i
1cd10 6e 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f  n the UTF-8 enco
1cd20 64 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f  ding or null upo
1cd30 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
1cd40 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1cd50 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
1cd60 69 63 20 73 74 61 74 69 63 20 62 79 74 65 5b 5d  ic static byte[]
1cd70 20 47 65 74 55 74 66 38 42 79 74 65 73 46 72 6f   GetUtf8BytesFro
1cd80 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  mString(..      
1cd90 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
1cda0 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
1cdb0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1cdc0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
1cdd0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
1cde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1cdf0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
1ce00 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1ce10 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65   Utf8Encoding.Ge
1ce20 74 42 79 74 65 73 28 76 61 6c 75 65 29 3b 0d 0a  tBytes(value);..
1ce30 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1ce40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ce50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1ce90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1cea0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1ceb0 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20  // Converts the 
1cec0 73 70 65 63 69 66 69 65 64 20 61 72 72 61 79 20  specified array 
1ced0 6f 66 20 62 79 74 65 73 20 72 65 70 72 65 73 65  of bytes represe
1cee0 6e 74 69 6e 67 20 61 20 73 74 72 69 6e 67 20 69  nting a string i
1cef0 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
1cf00 2f 2f 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  // UTF-8 encodin
1cf10 67 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20  g and returns a 
1cf20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d  managed string..
1cf30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1cf40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1cf50 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1cf60 3d 22 62 79 74 65 73 22 3e 0d 0a 20 20 20 20 20  ="bytes">..     
1cf70 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79     /// The array
1cf80 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63 6f 6e   of bytes to con
1cf90 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
1cfa0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1cfb0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1cfc0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1cfd0 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69  The managed stri
1cfe0 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  ng or null upon 
1cff0 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
1d000 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1d010 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1d020 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
1d030 65 74 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  etStringFromUtf8
1d040 42 79 74 65 73 28 0d 0a 20 20 20 20 20 20 20 20  Bytes(..        
1d050 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65 73      byte[] bytes
1d060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
1d070 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1d080 20 20 20 20 20 20 20 20 69 66 20 28 62 79 74 65          if (byte
1d090 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
1d0a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1d0b0 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20  rn null;....#if 
1d0c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d0d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d0e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
1d0f0 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74 53  tf8Encoding.GetS
1d100 74 72 69 6e 67 28 62 79 74 65 73 29 3b 0d 0a 23  tring(bytes);..#
1d110 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1d120 20 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63    return Utf8Enc
1d130 6f 64 69 6e 67 2e 47 65 74 53 74 72 69 6e 67 28  oding.GetString(
1d140 62 79 74 65 73 2c 20 30 2c 20 62 79 74 65 73 2e  bytes, 0, bytes.
1d150 4c 65 6e 67 74 68 29 3b 0d 0a 23 65 6e 64 69 66  Length);..#endif
1d160 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1d170 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1d180 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1d190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
1d1e0 65 67 69 6f 6e 20 55 54 46 2d 38 20 53 74 72 69  egion UTF-8 Stri
1d1f0 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ng Helper Method
1d200 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
1d210 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1d220 20 20 2f 2f 2f 20 50 72 6f 62 65 73 20 61 20 6e    /// Probes a n
1d230 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
1d240 20 61 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65   a string in the
1d250 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20   UTF-8 encoding 
1d260 66 6f 72 20 69 74 73 0d 0a 20 20 20 20 20 20 20  for its..       
1d270 20 2f 2f 2f 20 74 65 72 6d 69 6e 61 74 69 6e 67   /// terminating
1d280 20 4e 55 4c 20 63 68 61 72 61 63 74 65 72 2c 20   NUL character, 
1d290 77 69 74 68 69 6e 20 74 68 65 20 73 70 65 63 69  within the speci
1d2a0 66 69 65 64 20 6c 65 6e 67 74 68 20 6c 69 6d 69  fied length limi
1d2b0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
1d2c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1d2d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1d2e0 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20  ame="pValue">.. 
1d2f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1d300 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
1d310 61 74 65 64 20 73 74 72 69 6e 67 20 70 6f 69 6e  ated string poin
1d320 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
1d330 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1d340 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1d350 61 6d 65 3d 22 6c 69 6d 69 74 22 3e 0d 0a 20 20  ame="limit">..  
1d360 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
1d370 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20  ximum length of 
1d380 74 68 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e  the native strin
1d390 67 2c 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20  g, in bytes...  
1d3a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1d3b0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1d3c0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1d3d0 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74     /// The lengt
1d3e0 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  h of the native 
1d3f0 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73  string, in bytes
1d400 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20 74 68   -OR- zero if th
1d410 65 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20  e length..      
1d420 20 20 2f 2f 2f 20 63 6f 75 6c 64 20 6e 6f 74 20    /// could not 
1d430 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
1d440 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1d450 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1d460 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e  public static in
1d470 74 20 50 72 6f 62 65 46 6f 72 55 74 66 38 42 79  t ProbeForUtf8By
1d480 74 65 4c 65 6e 67 74 68 28 0d 0a 20 20 20 20 20  teLength(..     
1d490 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1d4a0 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alue,..         
1d4b0 20 20 20 69 6e 74 20 6c 69 6d 69 74 0d 0a 20 20     int limit..  
1d4c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1d4d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d4e0 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d      int length =
1d4f0 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
1d500 20 20 20 69 66 20 28 28 70 56 61 6c 75 65 20 21     if ((pValue !
1d510 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26  = IntPtr.Zero) &
1d520 26 20 28 6c 69 6d 69 74 20 3e 20 30 29 29 0d 0a  & (limit > 0))..
1d530 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1d540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
1d550 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  o..             
1d560 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1d570 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4d 61            if (Ma
1d580 72 73 68 61 6c 2e 52 65 61 64 42 79 74 65 28 70  rshal.ReadByte(p
1d590 56 61 6c 75 65 2c 20 6c 65 6e 67 74 68 29 20 3d  Value, length) =
1d5a0 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0)..          
1d5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
1d5c0 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  eak;....        
1d5d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1d5e0 6c 65 6e 67 74 68 20 3e 3d 20 6c 69 6d 69 74 29  length >= limit)
1d5f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d600 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
1d610 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d620 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68 2b 2b          length++
1d630 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1d640 20 20 20 7d 20 77 68 69 6c 65 20 28 74 72 75 65     } while (true
1d650 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1d660 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1d670 20 72 65 74 75 72 6e 20 6c 65 6e 67 74 68 3b 0d   return length;.
1d680 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1d690 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1d6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1d6e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1d6f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d700 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65  /// Converts the
1d710 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
1d720 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  e NUL-terminated
1d730 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1d740 69 6e 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  inter..        /
1d750 2f 2f 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65  // into a manage
1d760 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  d string...     
1d770 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1d780 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1d790 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
1d7a0 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
1d7b0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c  / The native NUL
1d7c0 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d  -terminated UTF-
1d7d0 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72  8 string pointer
1d7e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1d7f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1d800 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1d810 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1d820 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 6f  managed string o
1d830 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
1d840 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1d850 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1d860 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1d870 74 69 63 20 73 74 72 69 6e 67 20 53 74 72 69 6e  tic string Strin
1d880 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
1d890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1d8a0 74 50 74 72 20 70 56 61 6c 75 65 0d 0a 20 20 20  tPtr pValue..   
1d8b0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1d8c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d8d0 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67     return String
1d8e0 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 70  FromUtf8IntPtr(p
1d8f0 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  Value,..        
1d900 20 20 20 20 20 20 20 20 50 72 6f 62 65 46 6f 72          ProbeFor
1d910 55 74 66 38 42 79 74 65 4c 65 6e 67 74 68 28 70  Utf8ByteLength(p
1d920 56 61 6c 75 65 2c 20 54 68 69 72 74 79 42 69 74  Value, ThirtyBit
1d930 73 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  s));..        }.
1d940 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1d950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d990 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1d9a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1d9b0 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
1d9c0 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
1d9d0 6e 61 74 69 76 65 20 55 54 46 2d 38 20 73 74 72  native UTF-8 str
1d9e0 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 66 20 74  ing pointer of t
1d9f0 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
1da00 20 20 20 20 20 20 2f 2f 2f 20 6c 65 6e 67 74 68        /// length
1da10 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64 20   into a managed 
1da20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  string...       
1da30 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1da40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1da50 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65  ram name="pValue
1da60 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1da70 54 68 65 20 6e 61 74 69 76 65 20 55 54 46 2d 38  The native UTF-8
1da80 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 2e   string pointer.
1da90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1daa0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1dab0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1dac0 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20  "length">..     
1dad0 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74     /// The lengt
1dae0 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  h of the native 
1daf0 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73  string, in bytes
1db00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1db10 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1db20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1db30 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1db40 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 6f  managed string o
1db50 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
1db60 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1db70 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1db80 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1db90 74 69 63 20 73 74 72 69 6e 67 20 53 74 72 69 6e  tic string Strin
1dba0 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
1dbb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1dbc0 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20  tPtr pValue,..  
1dbd0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65            int le
1dbe0 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20  ngth..          
1dbf0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1dc00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1dc10 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
1dc20 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1dc30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1dc40 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1dc50 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3e      if (length >
1dc60 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
1dc70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1dc80 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65 73      byte[] bytes
1dc90 20 3d 20 6e 65 77 20 62 79 74 65 5b 6c 65 6e 67   = new byte[leng
1dca0 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  th];....        
1dcb0 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
1dcc0 43 6f 70 79 28 70 56 61 6c 75 65 2c 20 62 79 74  Copy(pValue, byt
1dcd0 65 73 2c 20 30 2c 20 6c 65 6e 67 74 68 29 3b 0d  es, 0, length);.
1dce0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1dcf0 20 20 20 72 65 74 75 72 6e 20 47 65 74 53 74 72     return GetStr
1dd00 69 6e 67 46 72 6f 6d 55 74 66 38 42 79 74 65 73  ingFromUtf8Bytes
1dd10 28 62 79 74 65 73 29 3b 0d 0a 20 20 20 20 20 20  (bytes);..      
1dd20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1dd30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74         return St
1dd40 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20  ring.Empty;..   
1dd50 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1dd60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1dd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ddb0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1ddc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1ddd0 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70 65  Converts the spe
1dde0 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64 20 73  cified managed s
1ddf0 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 6e 61 74  tring into a nat
1de00 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
1de10 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1de20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1de30 6e 74 65 72 20 75 73 69 6e 67 20 6d 65 6d 6f 72  nter using memor
1de40 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
1de50 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d  the SQLite core.
1de60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62  .        /// lib
1de70 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
1de80 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1de90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1dea0 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
1deb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1dec0 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20   managed string 
1ded0 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
1dee0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1def0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1df00 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1df10 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1df20 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20   NUL-terminated 
1df30 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1df40 6e 74 65 72 20 6f 72 0d 0a 20 20 20 20 20 20 20  nter or..       
1df50 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1df60 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20  IntPtr.Zero" /> 
1df70 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1df80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1df90 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1dfa0 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
1dfb0 50 74 72 20 55 74 66 38 49 6e 74 50 74 72 46 72  Ptr Utf8IntPtrFr
1dfc0 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  omString(..     
1dfd0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
1dfe0 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
1dff0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
1e000 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
1e010 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
1e020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1e030 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
1e040 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
1e050 20 20 49 6e 74 50 74 72 20 72 65 73 75 6c 74 20    IntPtr result 
1e060 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
1e070 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
1e080 5b 5d 20 62 79 74 65 73 20 3d 20 47 65 74 55 74  [] bytes = GetUt
1e090 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e  f8BytesFromStrin
1e0a0 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g(value);....   
1e0b0 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79 74           if (byt
1e0c0 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
1e0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1e0e0 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
1e0f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1e100 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 62 79 74  int length = byt
1e110 65 73 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20  es.Length;....  
1e120 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
1e130 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e   = SQLiteMemory.
1e140 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74 68 20  Allocate(length 
1e150 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  + 1);....       
1e160 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20       if (result 
1e170 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1e180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e190 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
1e1a0 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
1e1b0 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79      Marshal.Copy
1e1c0 28 62 79 74 65 73 2c 20 30 2c 20 72 65 73 75 6c  (bytes, 0, resul
1e1d0 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20  t, length);..   
1e1e0 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
1e1f0 2e 57 72 69 74 65 42 79 74 65 28 72 65 73 75 6c  .WriteByte(resul
1e200 74 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0d 0a  t, length, 0);..
1e210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1e220 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
1e230 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1e240 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1e250 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1e2a0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1e2b0 6e 20 55 54 46 2d 38 20 53 74 72 69 6e 67 20 41  n UTF-8 String A
1e2c0 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68  rray Helper Meth
1e2d0 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
1e2e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1e2f0 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
1e300 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79   a logical array
1e310 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74   of native NUL-t
1e320 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
1e330 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  string..        
1e340 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 69 6e 74  /// pointers int
1e350 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6d 61  o an array of ma
1e360 6e 61 67 65 64 20 73 74 72 69 6e 67 73 2e 0d 0a  naged strings...
1e370 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1e380 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1e390 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1e3a0 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20  "argc">..       
1e3b0 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
1e3c0 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74  of elements in t
1e3d0 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79  he logical array
1e3e0 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20 20 20   of native..    
1e3f0 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65 72 6d      /// NUL-term
1e400 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72  inated UTF-8 str
1e410 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d 0a 20  ing pointers... 
1e420 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1e430 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1e440 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
1e450 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  gv">..        //
1e460 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
1e470 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f 67 69  nter to the logi
1e480 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74  cal array of nat
1e490 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
1e4a0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1e4b0 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1e4c0 6e 74 65 72 73 20 74 6f 20 63 6f 6e 76 65 72 74  nters to convert
1e4d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e4e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1e4f0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1e500 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1e510 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64  array of managed
1e520 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75 6c 6c   strings or null
1e530 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1e540 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1e550 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1e560 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1e570 72 69 6e 67 5b 5d 20 53 74 72 69 6e 67 41 72 72  ring[] StringArr
1e580 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41 6e  ayFromUtf8SizeAn
1e590 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
1e5a0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
1e5b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1e5c0 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20  Ptr argv..      
1e5d0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1e5e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e5f0 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d 0a 20  if (argc < 0).. 
1e600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1e610 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
1e620 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
1e630 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  rgv == IntPtr.Ze
1e640 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1e650 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
1e660 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1e670 20 73 74 72 69 6e 67 5b 5d 20 72 65 73 75 6c 74   string[] result
1e680 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 61 72   = new string[ar
1e690 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gc];....        
1e6a0 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64      for (int ind
1e6b0 65 78 20 3d 20 30 2c 20 6f 66 66 73 65 74 20 3d  ex = 0, offset =
1e6c0 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
1e6d0 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3c           index <
1e6e0 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d   result.Length;.
1e6f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e700 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f 66       index++, of
1e710 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53  fset += IntPtr.S
1e720 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ize)..          
1e730 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e740 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 72 67       IntPtr pArg
1e750 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
1e760 2e 52 65 61 64 49 6e 74 50 74 72 28 61 72 67 76  .ReadIntPtr(argv
1e770 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
1e780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1e790 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28 70  sult[index] = (p
1e7a0 41 72 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  Arg != IntPtr.Ze
1e7b0 72 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  ro) ?..         
1e7c0 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
1e7d0 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
1e7e0 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20  pArg) : null;.. 
1e7f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1e800 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1e810 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
1e820 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1e830 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e870 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1e880 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1e890 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
1e8a0 6f 6e 76 65 72 74 73 20 61 6e 20 61 72 72 61 79  onverts an array
1e8b0 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69   of managed stri
1e8c0 6e 67 73 20 69 6e 74 6f 20 61 6e 20 61 72 72 61  ngs into an arra
1e8d0 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20 20  y of native..   
1e8e0 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65 72       /// NUL-ter
1e8f0 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
1e900 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d 0a  ring pointers...
1e910 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1e920 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1e930 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1e940 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20  "values">..     
1e950 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79     /// The array
1e960 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69   of managed stri
1e970 6e 67 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  ngs to convert..
1e980 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1e990 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1e9a0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1e9b0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
1e9c0 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55  ray of native NU
1e9d0 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46  L-terminated UTF
1e9e0 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
1e9f0 72 73 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20 20  rs or null..    
1ea00 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 66 61 69      /// upon fai
1ea10 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
1ea20 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1ea30 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1ea40 61 74 69 63 20 49 6e 74 50 74 72 5b 5d 20 55 74  atic IntPtr[] Ut
1ea50 66 38 49 6e 74 50 74 72 41 72 72 61 79 46 72 6f  f8IntPtrArrayFro
1ea60 6d 53 74 72 69 6e 67 41 72 72 61 79 28 0d 0a 20  mStringArray(.. 
1ea70 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1ea80 67 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20  g[] values..    
1ea90 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1eaa0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1eab0 20 20 69 66 20 28 76 61 6c 75 65 73 20 3d 3d 20    if (values == 
1eac0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1ead0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
1eae0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
1eaf0 20 20 20 49 6e 74 50 74 72 5b 5d 20 72 65 73 75     IntPtr[] resu
1eb00 6c 74 20 3d 20 6e 65 77 20 49 6e 74 50 74 72 5b  lt = new IntPtr[
1eb10 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 5d 3b 0d  values.Length];.
1eb20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  ...            f
1eb30 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20  or (int index = 
1eb40 30 3b 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c  0; index < resul
1eb50 74 2e 4c 65 6e 67 74 68 3b 20 69 6e 64 65 78 2b  t.Length; index+
1eb60 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
1eb70 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78      result[index
1eb80 5d 20 3d 20 55 74 66 38 49 6e 74 50 74 72 46 72  ] = Utf8IntPtrFr
1eb90 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65 73 5b  omString(values[
1eba0 69 6e 64 65 78 5d 29 3b 0d 0a 0d 0a 20 20 20 20  index]);....    
1ebb0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
1ebc0 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
1ebd0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
1ebe0 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
1ebf0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1ec00 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ec10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ec50 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
1ec60 51 4c 69 74 65 42 79 74 65 73 20 53 74 61 74 69  QLiteBytes Stati
1ec70 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  c Class..    ///
1ec80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1ec90 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 63  /// This class c
1eca0 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63 20 6d  ontains static m
1ecb0 65 74 68 6f 64 73 20 74 68 61 74 20 61 72 65 20  ethods that are 
1ecc0 75 73 65 64 20 74 6f 20 64 65 61 6c 20 77 69 74  used to deal wit
1ecd0 68 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 2f 2f  h native..    //
1ece0 2f 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6d 65  / pointers to me
1ecf0 6d 6f 72 79 20 62 6c 6f 63 6b 73 20 74 68 61 74  mory blocks that
1ed00 20 6c 6f 67 69 63 61 6c 6c 79 20 63 6f 6e 74 61   logically conta
1ed10 69 6e 20 61 72 72 61 79 73 20 6f 66 20 62 79 74  in arrays of byt
1ed20 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20 2f 2f  es to be..    //
1ed30 2f 20 75 73 65 64 20 77 69 74 68 20 74 68 65 20  / used with the 
1ed40 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1ed50 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
1ed60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
1ed70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
1ed80 61 73 73 20 53 51 4c 69 74 65 42 79 74 65 73 0d  ass SQLiteBytes.
1ed90 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1eda0 23 72 65 67 69 6f 6e 20 42 79 74 65 20 41 72 72  #region Byte Arr
1edb0 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ay Helper Method
1edc0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
1edd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1ede0 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
1edf0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1ee00 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72  to a logical arr
1ee10 61 79 20 6f 66 20 62 79 74 65 73 20 6f 66 20 74  ay of bytes of t
1ee20 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1ee30 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68  specified length
1ee40 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64 20   into a managed 
1ee50 62 79 74 65 20 61 72 72 61 79 2e 0d 0a 20 20 20  byte array...   
1ee60 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1ee70 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1ee80 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
1ee90 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
1eea0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1eeb0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f  ointer to the lo
1eec0 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62  gical array of b
1eed0 79 74 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ytes to convert.
1eee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1eef0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1ef00 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1ef10 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20  "length">..     
1ef20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74     /// The lengt
1ef30 68 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  h, in bytes, of 
1ef40 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  the logical arra
1ef50 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63 6f  y of bytes to co
1ef60 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
1ef70 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1ef80 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1ef90 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1efa0 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62 79 74   The managed byt
1efb0 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c 20  e array or null 
1efc0 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1efd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1efe0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1eff0 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74  ublic static byt
1f000 65 5b 5d 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d  e[] FromIntPtr(.
1f010 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1f020 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20  Ptr pValue,..   
1f030 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e           int len
1f040 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gth..           
1f050 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
1f060 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
1f070 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e  Value == IntPtr.
1f080 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1f090 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
1f0a0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
1f0b0 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d     if (length ==
1f0c0 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
1f0d0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
1f0e0 62 79 74 65 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  byte[0];....    
1f0f0 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 72          byte[] r
1f100 65 73 75 6c 74 20 3d 20 6e 65 77 20 62 79 74 65  esult = new byte
1f110 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20  [length];....   
1f120 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
1f130 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20 72 65  .Copy(pValue, re
1f140 73 75 6c 74 2c 20 30 2c 20 6c 65 6e 67 74 68 29  sult, 0, length)
1f150 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1f160 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
1f170 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1f180 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1f190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f1d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1f1e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1f1f0 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6d  /// Converts a m
1f200 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61  anaged byte arra
1f210 79 20 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20  y into a native 
1f220 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67  pointer to a log
1f230 69 63 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ical..        //
1f240 2f 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  / array of bytes
1f250 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f260 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1f270 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1f280 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
1f290 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
1f2a0 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79 20  aged byte array 
1f2b0 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
1f2c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1f2d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1f2e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1f2f0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1f300 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f   pointer to a lo
1f310 67 69 63 61 6c 20 62 79 74 65 20 61 72 72 61 79  gical byte array
1f320 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
1f330 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
1f340 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1f350 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1f360 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 6f 49  tatic IntPtr ToI
1f370 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
1f380 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c 75 65      byte[] value
1f390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
1f3a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1f3b0 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67          int leng
1f3c0 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  th = 0;....     
1f3d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f         return To
1f3e0 49 6e 74 50 74 72 28 76 61 6c 75 65 2c 20 72 65  IntPtr(value, re
1f3f0 66 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20  f length);..    
1f400 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1f410 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f450 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f460 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1f470 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
1f480 6f 6e 76 65 72 74 73 20 61 20 6d 61 6e 61 67 65  onverts a manage
1f490 64 20 62 79 74 65 20 61 72 72 61 79 20 69 6e 74  d byte array int
1f4a0 6f 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  o a native point
1f4b0 65 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 0d  er to a logical.
1f4c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72  .        /// arr
1f4d0 61 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20  ay of bytes...  
1f4e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1f4f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1f500 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
1f510 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
1f520 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
1f530 62 79 74 65 20 61 72 72 61 79 20 74 6f 20 63 6f  byte array to co
1f540 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
1f550 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1f560 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1f570 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d   name="length">.
1f580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1f590 20 6c 65 6e 67 74 68 2c 20 69 6e 20 62 79 74 65   length, in byte
1f5a0 73 2c 20 6f 66 20 74 68 65 20 63 6f 6e 76 65 72  s, of the conver
1f5b0 74 65 64 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  ted logical arra
1f5c0 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20 20  y of bytes...   
1f5d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1f5e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1f5f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1f600 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1f610 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f   pointer to a lo
1f620 67 69 63 61 6c 20 62 79 74 65 20 61 72 72 61 79  gical byte array
1f630 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
1f640 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
1f650 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1f660 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1f670 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 6f 49  tatic IntPtr ToI
1f680 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
1f690 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c 75 65      byte[] value
1f6a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
1f6b0 65 66 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20  ef int length.. 
1f6c0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1f6d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1f6e0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
1f6f0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1f700 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1f710 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
1f720 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67              leng
1f730 74 68 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74  th = value.Lengt
1f740 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
1f750 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20    if (length == 
1f760 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
1f770 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
1f780 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
1f790 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 72 65         IntPtr re
1f7a0 73 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d  sult = SQLiteMem
1f7b0 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e  ory.Allocate(len
1f7c0 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gth);....       
1f7d0 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20       if (result 
1f7e0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1f7f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f800 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
1f810 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
1f820 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79      Marshal.Copy
1f830 28 76 61 6c 75 65 2c 20 30 2c 20 72 65 73 75 6c  (value, 0, resul
1f840 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20  t, length);.... 
1f850 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1f860 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
1f870 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
1f880 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
1f890 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1f8a0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
1f8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8f0 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
1f900 6e 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 20  n SQLiteMarshal 
1f910 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20  Static Class..  
1f920 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1f930 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
1f940 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61  ass contains sta
1f950 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74  tic methods that
1f960 20 61 72 65 20 75 73 65 64 20 74 6f 20 70 65 72   are used to per
1f970 66 6f 72 6d 20 73 65 76 65 72 61 6c 0d 0a 20 20  form several..  
1f980 20 20 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c 20    /// low-level 
1f990 64 61 74 61 20 6d 61 72 73 68 61 6c 6c 69 6e 67  data marshalling
1f9a0 20 74 61 73 6b 73 20 62 65 74 77 65 65 6e 20 6e   tasks between n
1f9b0 61 74 69 76 65 20 61 6e 64 20 6d 61 6e 61 67 65  ative and manage
1f9c0 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d code...    ///
1f9d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1f9e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1f9f0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 61 72   class SQLiteMar
1fa00 73 68 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  shal..    {..   
1fa10 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
1fa20 50 74 72 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  Ptr Helper Metho
1fa30 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
1fa40 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1fa50 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61     /// Returns a
1fa60 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22   new <see cref="
1fa70 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
1fa80 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64  t instance based
1fa90 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   on the..       
1faa0 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c   /// specified <
1fab0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
1fac0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1fad0 61 6e 63 65 20 61 6e 64 20 61 6e 20 69 6e 74 65  ance and an inte
1fae0 67 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ger..        ///
1faf0 20 6f 66 66 73 65 74 2e 0d 0a 20 20 20 20 20 20   offset...      
1fb00 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1fb10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1fb20 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
1fb30 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
1fb40 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1fb50 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
1fb60 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
1fb70 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
1fb80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
1fb90 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
1fba0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1fbb0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1fbc0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1fbd0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
1fbe0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
1fbf0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
1fc00 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
1fc10 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  cation that the 
1fc20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  new..        ///
1fc30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
1fc40 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
1fc50 73 74 61 6e 63 65 20 73 68 6f 75 6c 64 20 70 6f  stance should po
1fc60 69 6e 74 20 74 6f 2e 0d 0a 20 20 20 20 20 20 20  int to...       
1fc70 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1fc80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1fc90 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1fca0 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63  / The new <see c
1fcb0 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
1fcc0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
1fcd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1fce0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1fcf0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1fd00 49 6e 74 50 74 72 20 49 6e 74 50 74 72 46 6f 72  IntPtr IntPtrFor
1fd10 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20  Offset(..       
1fd20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
1fd30 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
1fd40 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20    int offset..  
1fd50 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1fd60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1fd70 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 49      return new I
1fd80 6e 74 50 74 72 28 70 6f 69 6e 74 65 72 2e 54 6f  ntPtr(pointer.To
1fd90 49 6e 74 36 34 28 29 20 2b 20 6f 66 66 73 65 74  Int64() + offset
1fda0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
1fdb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1fdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1fe10 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1fe20 20 20 20 2f 2f 2f 20 52 6f 75 6e 64 73 20 75 70     /// Rounds up
1fe30 20 61 6e 20 69 6e 74 65 67 65 72 20 73 69 7a 65   an integer size
1fe40 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c   to the next mul
1fe50 74 69 70 6c 65 20 6f 66 20 74 68 65 20 61 6c 69  tiple of the ali
1fe60 67 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  gnment...       
1fe70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1fe80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1fe90 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e  ram name="size">
1fea0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1feb0 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73  e size, in bytes
1fec0 2c 20 74 6f 20 62 65 20 72 6f 75 6e 64 65 64 20  , to be rounded 
1fed0 75 70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  up...        ///
1fee0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1fef0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ff00 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e 0d  me="alignment">.
1ff10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1ff20 20 72 65 71 75 69 72 65 64 20 61 6c 69 67 6e 6d   required alignm
1ff30 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65 74 75  ent for the retu
1ff40 72 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  rn value...     
1ff50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1ff60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1ff70 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1ff80 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69 6e  /// The size, in
1ff90 20 62 79 74 65 73 2c 20 72 6f 75 6e 64 65 64 20   bytes, rounded 
1ffa0 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d  up to the next m
1ffb0 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 0d 0a  ultiple of the..
1ffc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 69 67          /// alig
1ffd0 6e 6d 65 6e 74 2e 20 20 54 68 69 73 20 76 61 6c  nment.  This val
1ffe0 75 65 20 6d 61 79 20 65 6e 64 20 75 70 20 62 65  ue may end up be
1fff0 69 6e 67 20 74 68 65 20 73 61 6d 65 20 61 73 20  ing the same as 
20000 74 68 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20  the original..  
20010 20 20 20 20 20 20 2f 2f 2f 20 73 69 7a 65 2e 0d        /// size..
20020 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
20030 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
20040 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
20050 6e 74 20 52 6f 75 6e 64 55 70 28 0d 0a 20 20 20  nt RoundUp(..   
20060 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
20070 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
20080 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a 20  int alignment.. 
20090 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
200a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
200b0 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65       int alignme
200c0 6e 74 4d 69 6e 75 73 4f 6e 65 20 3d 20 61 6c 69  ntMinusOne = ali
200d0 67 6e 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20 20 20  gnment - 1;..   
200e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
200f0 28 28 73 69 7a 65 20 2b 20 61 6c 69 67 6e 6d 65  ((size + alignme
20100 6e 74 4d 69 6e 75 73 4f 6e 65 29 20 26 20 7e 61  ntMinusOne) & ~a
20110 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65  lignmentMinusOne
20120 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
20130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20180 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
20190 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
201a0 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
201b0 73 20 74 68 65 20 6f 66 66 73 65 74 2c 20 69 6e  s the offset, in
201c0 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e   bytes, of the n
201d0 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ext structure me
201e0 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
201f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
20200 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
20210 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
20220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20230 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79 74  e offset, in byt
20240 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72 65  es, of the curre
20250 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d  nt structure mem
20260 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber...        //
20270 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20280 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20290 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20  ame="size">..   
202a0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
202b0 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  e, in bytes, of 
202c0 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 72 75  the current stru
202d0 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
202e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
202f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
20300 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c   <param name="al
20310 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20  ignment">..     
20320 20 20 20 2f 2f 2f 20 54 68 65 20 61 6c 69 67 6e     /// The align
20330 6d 65 6e 74 2c 20 69 6e 20 62 79 74 65 73 2c 20  ment, in bytes, 
20340 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75  of the next stru
20350 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
20360 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
20370 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
20380 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
20390 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73      /// The offs
203a0 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  et, in bytes, of
203b0 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63 74   the next struct
203c0 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ure member...   
203d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
203e0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
203f0 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 4e  lic static int N
20400 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
20410 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
20420 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
20430 20 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20     int size,..  
20440 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c            int al
20450 69 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ignment..       
20460 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
20470 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
20480 65 74 75 72 6e 20 52 6f 75 6e 64 55 70 28 6f 66  eturn RoundUp(of
20490 66 73 65 74 20 2b 20 73 69 7a 65 2c 20 61 6c 69  fset + size, ali
204a0 67 6e 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20  gnment);..      
204b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
204c0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
204d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
204e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
204f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
20520 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61        #region Ma
20530 72 73 68 61 6c 20 52 65 61 64 20 48 65 6c 70 65  rshal Read Helpe
20540 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
20550 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
20560 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
20570 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ads a <see cref=
20580 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
20590 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66   from the specif
205a0 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
205b0 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
205c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
205d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
205e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
205f0 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
20600 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
20610 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
20620 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
20630 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
20640 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
20650 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
20660 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
20670 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20680 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
20690 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
206a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
206b0 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
206c0 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
206d0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
206e0 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
206f0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
20700 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
20710 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20  e to be read is 
20720 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
20730 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20740 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
20750 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
20760 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
20770 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
20780 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69  e at the specifi
20790 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  ed memory locati
207a0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
207b0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
207c0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
207d0 69 63 20 69 6e 74 20 52 65 61 64 49 6e 74 33 32  ic int ReadInt32
207e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
207f0 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
20800 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
20810 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
20820 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
20830 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20840 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
20860 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
20870 64 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20  dInt32(pointer, 
20880 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d  offset);..#else.
20890 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
208a0 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
208b0 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f  Int32(IntPtrForO
208c0 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
208d0 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66  ffset));..#endif
208e0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
208f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
20900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
20940 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
20950 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
20960 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65   /// Reads a <se
20970 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
20980 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  > value from the
20990 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
209a0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
209b0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
209c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
209d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
209e0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
209f0 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
20a00 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
20a10 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
20a20 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
20a30 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
20a40 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
20a50 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
20a60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20a70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20a80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20a90 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
20aa0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
20ab0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
20ac0 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
20ad0 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
20ae0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
20af0 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
20b00 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  /> value to be r
20b10 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d  ead is located..
20b20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20b30 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20b40 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
20b50 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
20b60 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
20b70 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65 20  /> value at the 
20b80 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
20b90 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
20ba0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
20bb0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
20bc0 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 52  ic static long R
20bd0 65 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20  eadInt64(..     
20be0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
20bf0 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
20c00 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a      int offset..
20c10 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
20c20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
20c30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20c40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
20c50 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
20c60 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 70  shal.ReadInt64(p
20c70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b  ointer, offset);
20c80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
20c90 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73       return Mars
20ca0 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49 6e  hal.ReadInt64(In
20cb0 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
20cc0 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b  inter, offset));
20cd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
20ce0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
20cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
20d40 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
20d50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61  .        /// Rea
20d60 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ds a <see cref="
20d70 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
20d80 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66   from the specif
20d90 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
20da0 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
20db0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20dc0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
20dd0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
20de0 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
20df0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
20e00 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
20e10 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
20e20 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
20e30 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
20e40 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
20e50 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
20e60 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20e70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
20e80 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
20e90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20ea0 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
20eb0 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
20ec0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
20ed0 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
20ee0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
20ef0 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20  ="Double" /> to 
20f00 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61 74  be read is locat
20f10 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
20f20 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
20f30 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
20f40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20f50 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  e <see cref="Dou
20f60 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 61 74  ble" /> value at
20f70 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
20f80 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
20f90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
20fa0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
20fb0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 64   public static d
20fc0 6f 75 62 6c 65 20 52 65 61 64 44 6f 75 62 6c 65  ouble ReadDouble
20fd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
20fe0 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
20ff0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
21000 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
21010 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
21020 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21030 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
21050 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65  turn BitConverte
21060 72 2e 49 6e 74 36 34 42 69 74 73 54 6f 44 6f 75  r.Int64BitsToDou
21070 62 6c 65 28 4d 61 72 73 68 61 6c 2e 52 65 61 64  ble(Marshal.Read
21080 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20  Int64(..        
21090 20 20 20 20 20 20 20 20 70 6f 69 6e 74 65 72 2c          pointer,
210a0 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6c 73   offset));..#els
210b0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
210c0 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74  eturn BitConvert
210d0 65 72 2e 54 6f 44 6f 75 62 6c 65 28 42 69 74 43  er.ToDouble(BitC
210e0 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74 65  onverter.GetByte
210f0 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
21100 20 20 20 20 4d 61 72 73 68 61 6c 2e 52 65 61 64      Marshal.Read
21110 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f  Int64(IntPtrForO
21120 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
21130 66 66 73 65 74 29 29 29 2c 20 30 29 3b 0d 0a 23  ffset))), 0);..#
21140 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
21150 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
21160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
211b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
211c0 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20        /// Reads 
211d0 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  an <see cref="In
211e0 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 66  tPtr" /> value f
211f0 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65  rom the specifie
21200 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
21210 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
21220 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
21230 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21240 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21250 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
21260 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
21270 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
21280 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
21290 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
212a0 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
212b0 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
212c0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
212d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
212e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
212f0 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
21300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21310 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
21320 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
21330 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
21340 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
21350 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
21360 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
21370 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c   to be read is l
21380 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
21390 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
213a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
213b0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
213c0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
213d0 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75  "IntPtr" /> valu
213e0 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69  e at the specifi
213f0 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  ed memory locati
21400 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
21410 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
21420 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
21430 69 63 20 49 6e 74 50 74 72 20 52 65 61 64 49 6e  ic IntPtr ReadIn
21440 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
21450 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
21460 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
21470 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20  int offset..    
21480 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
21490 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
214a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
214b0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
214c0 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
214d0 2e 52 65 61 64 49 6e 74 50 74 72 28 70 6f 69 6e  .ReadIntPtr(poin
214e0 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23  ter, offset);..#
214f0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
21500 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
21510 2e 52 65 61 64 49 6e 74 50 74 72 28 49 6e 74 50  .ReadIntPtr(IntP
21520 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
21530 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a  ter, offset));..
21540 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
21550 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
21560 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
21570 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
21580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
215c0 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72 73      #region Mars
215d0 68 61 6c 20 57 72 69 74 65 20 48 65 6c 70 65 72  hal Write Helper
215e0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
215f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
21600 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69  .        /// Wri
21610 74 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66  tes an <see cref
21620 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
21630 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  e to the specifi
21640 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
21650 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
21660 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21670 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
21680 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
21690 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
216a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
216b0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
216c0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
216d0 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
216e0 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
216f0 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
21700 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
21710 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
21720 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
21730 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
21740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21750 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
21760 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
21770 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
21780 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
21790 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
217a0 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
217b0 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
217c0 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
217d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
217e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
217f0 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
21800 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
21810 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
21820 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
21830 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20  o write...      
21840 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
21850 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
21860 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65  tatic void Write
21870 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
21880 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
21890 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
218a0 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20   int offset,..  
218b0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 76 61            int va
218c0 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
218d0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
218e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
218f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21900 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
21910 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 6f  al.WriteInt32(po
21920 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76  inter, offset, v
21930 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  alue);..#else.. 
21940 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
21950 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 49 6e  al.WriteInt32(In
21960 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
21970 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20  inter, offset), 
21980 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
21990 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
219a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
219b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
219f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
21a00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21a10 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c 73  /// Writes an <s
21a20 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
21a30 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  /> value to the 
21a40 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
21a50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
21a60 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
21a70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
21a80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21a90 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
21aa0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
21ab0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
21ac0 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
21ad0 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
21ae0 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
21af0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
21b00 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
21b10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
21b20 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
21b30 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
21b40 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
21b50 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
21b60 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
21b70 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
21b80 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
21b90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
21ba0 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
21bb0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72  > value to be wr
21bc0 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64  itten is located
21bd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21be0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
21bf0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21c00 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
21c10 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
21c20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
21c30 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d  value to write..
21c40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21c50 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
21c60 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
21c70 64 20 57 72 69 74 65 49 6e 74 36 34 28 0d 0a 20  d WriteInt64(.. 
21c80 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
21c90 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
21ca0 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
21cb0 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
21cc0 20 6c 6f 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20   long value..   
21cd0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
21ce0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
21cf0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21d00 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
21d10 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
21d20 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f  Int64(pointer, o
21d30 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a  ffset, value);..
21d40 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
21d50 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
21d60 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f  Int64(IntPtrForO
21d70 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
21d80 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d  ffset), value);.
21d90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
21da0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
21db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21df0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
21e00 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
21e10 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74          /// Writ
21e20 65 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  es a <see cref="
21e30 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
21e40 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
21e50 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
21e60 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
21e70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
21e80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21e90 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21ea0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
21eb0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
21ec0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
21ed0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
21ee0 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
21ef0 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
21f00 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
21f10 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
21f20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21f30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21f40 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
21f50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21f60 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
21f70 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
21f80 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
21f90 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
21fa0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
21fb0 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
21fc0 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
21fd0 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
21fe0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
21ff0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
22000 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
22010 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
22020 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  The <see cref="D
22030 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20  ouble" /> value 
22040 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
22050 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
22060 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
22070 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
22080 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20  eDouble(..      
22090 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
220a0 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
220b0 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a     int offset,..
220c0 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62              doub
220d0 6c 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  le value..      
220e0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
220f0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
22100 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22110 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
22120 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
22130 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  64(pointer, offs
22140 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
22150 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74 65       BitConverte
22160 72 2e 44 6f 75 62 6c 65 54 6f 49 6e 74 36 34 42  r.DoubleToInt64B
22170 69 74 73 28 76 61 6c 75 65 29 29 3b 0d 0a 23 65  its(value));..#e
22180 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
22190 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
221a0 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  t64(IntPtrForOff
221b0 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
221c0 73 65 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  set),..         
221d0 20 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72         BitConver
221e0 74 65 72 2e 54 6f 49 6e 74 36 34 28 42 69 74 43  ter.ToInt64(BitC
221f0 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74 65  onverter.GetByte
22200 73 28 76 61 6c 75 65 29 2c 20 30 29 29 3b 0d 0a  s(value), 0));..
22210 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
22220 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
22230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22270 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
22280 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
22290 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65         /// Write
222a0 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49  s a <see cref="I
222b0 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
222c0 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
222d0 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
222e0 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
222f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
22300 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
22310 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
22320 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
22330 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
22340 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
22350 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
22360 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
22370 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
22380 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
22390 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
223a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
223b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
223c0 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
223d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
223e0 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
223f0 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
22400 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
22410 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
22420 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
22430 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
22440 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73  to be written is
22450 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20   located...     
22460 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
22470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
22480 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
22490 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
224a0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
224b0 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74  tPtr" /> value t
224c0 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20  o write...      
224d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
224e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
224f0 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65  tatic void Write
22500 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
22510 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
22520 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
22530 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
22540 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
22550 72 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  r value..       
22560 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
22570 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
22580 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22590 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  K..            M
225a0 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50  arshal.WriteIntP
225b0 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  tr(pointer, offs
225c0 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c  et, value);..#el
225d0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
225e0 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
225f0 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  Ptr(IntPtrForOff
22600 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
22610 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23  set), value);..#
22620 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
22630 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
22640 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
22650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22690 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
226a0 20 20 20 23 72 65 67 69 6f 6e 20 4f 62 6a 65 63     #region Objec
226b0 74 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  t Helper Methods
226c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
226d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
226e0 20 2f 2f 2f 20 47 65 6e 65 72 61 74 65 73 20 61   /// Generates a
226f0 20 68 61 73 68 20 63 6f 64 65 20 76 61 6c 75 65   hash code value
22700 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74 2e   for the object.
22710 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
22720 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22730 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
22740 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
22750 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65      /// The obje
22760 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
22770 20 74 6f 20 63 61 6c 63 75 6c 61 74 65 20 74 68   to calculate th
22780 65 20 68 61 73 68 20 63 6f 64 65 2e 0d 0a 20 20  e hash code...  
22790 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
227a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
227b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 65  <param name="ide
227c0 6e 74 69 74 79 22 3e 0d 0a 20 20 20 20 20 20 20  ntity">..       
227d0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
227e0 20 64 69 66 66 65 72 65 6e 74 20 6f 62 6a 65 63   different objec
227f0 74 20 69 6e 73 74 61 6e 63 65 73 20 77 69 74 68  t instances with
22800 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20   the same value 
22810 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20  should..        
22820 2f 2f 2f 20 67 65 6e 65 72 61 74 65 20 64 69 66  /// generate dif
22830 66 65 72 65 6e 74 20 68 61 73 68 20 63 6f 64 65  ferent hash code
22840 73 2c 20 77 68 65 72 65 20 61 70 70 6c 69 63 61  s, where applica
22850 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d  ble.  This param
22860 65 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  eter..        //
22870 2f 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20  / has no effect 
22880 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  on the .NET Comp
22890 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a  act Framework...
228a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
228b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
228c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
228d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 68 61 73       /// The has
228e0 68 20 63 6f 64 65 20 76 61 6c 75 65 20 2d 4f 52  h code value -OR
228f0 2d 20 7a 65 72 6f 20 69 66 20 74 68 65 20 6f 62  - zero if the ob
22900 6a 65 63 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a 20  ject is null... 
22910 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
22920 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
22930 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
22940 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a 20   GetHashCode(.. 
22950 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
22960 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20  t value,..      
22970 20 20 20 20 20 20 62 6f 6f 6c 20 69 64 65 6e 74        bool ident
22980 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ity..           
22990 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
229a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
229b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
229c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
229d0 64 65 6e 74 69 74 79 29 0d 0a 20 20 20 20 20 20  dentity)..      
229e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
229f0 20 52 75 6e 74 69 6d 65 48 65 6c 70 65 72 73 2e   RuntimeHelpers.
22a00 47 65 74 48 61 73 68 43 6f 64 65 28 76 61 6c 75  GetHashCode(valu
22a10 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
22a20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
22a30 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 20 72 65  alue == null) re
22a40 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
22a50 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
22a60 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b  e.GetHashCode();
22a70 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
22a80 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
22a90 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
22aa0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
22ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22b00 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d   #region SQLiteM
22b10 6f 64 75 6c 65 20 42 61 73 65 20 43 6c 61 73 73  odule Base Class
22b20 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
22b30 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
22b40 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
22b50 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72  ts a managed vir
22b60 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c  tual table modul
22b70 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
22b80 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73  ...    /// It is
22b90 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20   not sealed and 
22ba0 6d 75 73 74 20 62 65 20 75 73 65 64 20 61 73 20  must be used as 
22bb0 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66  the base class f
22bc0 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20  or any..    /// 
22bd0 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69 72  user-defined vir
22be0 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c  tual table modul
22bf0 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d  e classes implem
22c00 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64  ented in managed
22c10 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   code...    /// 
22c20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
22c30 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
22c40 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64 75  class SQLiteModu
22c50 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  le :..          
22c60 20 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64    ISQLiteManaged
22c70 4d 6f 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69 74  Module, /*ISQLit
22c80 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a 2f  eNativeModule,*/
22c90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 44  ..            ID
22ca0 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54  isposable /* NOT
22cb0 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20   SEALED */..    
22cc0 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
22cd0 6f 6e 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  on SQLiteNativeM
22ce0 6f 64 75 6c 65 20 50 72 69 76 61 74 65 20 43 6c  odule Private Cl
22cf0 61 73 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ass..        ///
22d00 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
22d10 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
22d20 73 73 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68  ss implements th
22d30 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
22d40 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
22d50 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
22d60 2f 20 69 6e 74 65 72 66 61 63 65 20 62 79 20 66  / interface by f
22d70 6f 72 77 61 72 64 69 6e 67 20 74 68 6f 73 65 20  orwarding those 
22d80 6d 65 74 68 6f 64 20 63 61 6c 6c 73 20 74 6f 20  method calls to 
22d90 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
22da0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
22db0 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
22dc0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 74 20  ect instance it 
22dd0 63 6f 6e 74 61 69 6e 73 2e 20 20 49 66 20 74 68  contains.  If th
22de0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
22df0 6f 6e 74 61 69 6e 65 64 20 3c 73 65 65 20 63 72  ontained <see cr
22e00 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
22e10 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
22e20 61 6e 63 65 20 69 73 20 6e 75 6c 6c 2c 20 61 6c  ance is null, al
22e30 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
22e40 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
22e50 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
22e60 65 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 73 69  e" /> methods si
22e70 6d 70 6c 79 20 67 65 6e 65 72 61 74 65 20 61 6e  mply generate an
22e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 72  ..        /// er
22e90 72 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ror...        //
22ea0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
22eb0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
22ec0 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
22ed0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3a 0d  eNativeModule :.
22ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22ef0 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
22f00 64 75 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c  dule, IDisposabl
22f10 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
22f20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
22f30 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
22f40 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nts..           
22f50 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22f60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
22f70 54 68 69 73 20 69 73 20 74 68 65 20 76 61 6c 75  This is the valu
22f80 65 20 74 68 61 74 20 69 73 20 61 6c 77 61 79 73  e that is always
22f90 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 22 6c   used for the "l
22fa0 6f 67 45 72 72 6f 72 73 22 0d 0a 20 20 20 20 20  ogErrors"..     
22fb0 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d         /// param
22fc0 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72 69  eter to the vari
22fd0 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f 72  ous static error
22fe0 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64   handling method
22ff0 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  s provided..    
23000 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74          /// by t
23010 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
23020 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
23030 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
23040 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
23050 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
23060 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f  rivate const boo
23070 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f  l DefaultLogErro
23080 72 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  rs = true;....  
23090 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
230a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
230e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
230f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
23100 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
23110 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74 68   is the value th
23120 61 74 20 69 73 20 61 6c 77 61 79 73 20 75 73 65  at is always use
23130 64 20 66 6f 72 20 74 68 65 20 22 6c 6f 67 45 78  d for the "logEx
23140 63 65 70 74 69 6f 6e 73 22 0d 0a 20 20 20 20 20  ceptions"..     
23150 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d         /// param
23160 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72 69  eter to the vari
23170 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f 72  ous static error
23180 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64   handling method
23190 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  s provided..    
231a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74          /// by t
231b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
231c0 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
231d0 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
231e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
231f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
23200 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f  rivate const boo
23210 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63 65  l DefaultLogExce
23220 70 74 69 6f 6e 73 20 3d 20 74 72 75 65 3b 0d 0a  ptions = true;..
23230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23280 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
23290 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
232a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
232b0 54 68 69 73 20 69 73 20 74 68 65 20 65 72 72 6f  This is the erro
232c0 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20 75  r message text u
232d0 73 65 64 20 77 68 65 6e 20 74 68 65 20 63 6f 6e  sed when the con
232e0 74 61 69 6e 65 64 0d 0a 20 20 20 20 20 20 20 20  tained..        
232f0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
23300 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
23310 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
23320 6e 63 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  nce is not avail
23330 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  able..          
23340 20 20 2f 2f 2f 20 66 6f 72 20 61 6e 79 20 72 65    /// for any re
23350 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  ason...         
23360 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
23370 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
23380 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
23390 69 6e 67 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ing ModuleNotAva
233a0 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61  ilableErrorMessa
233b0 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  ge =..          
233c0 20 20 20 20 20 20 22 6e 61 74 69 76 65 20 6d 6f        "native mo
233d0 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  dule implementat
233e0 69 6f 6e 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c  ion not availabl
233f0 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e";..           
23400 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
23410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
23420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
23460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
23470 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
23480 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ta..            
23490 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
234a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
234b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
234c0 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f  LiteModule" /> o
234d0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75  bject instance u
234e0 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a  sed to provide..
234f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23500 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  an implementatio
23510 6e 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72  n of the <see cr
23520 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
23530 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20  eModule" />..   
23540 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74           /// int
23550 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 20  erface...       
23560 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
23570 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
23580 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 4d   private SQLiteM
23590 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a 20  odule module;.. 
235a0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
235b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
235c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
235d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23600 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
23610 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
23620 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
23630 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ors..           
23640 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
23650 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23660 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
23670 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
23680 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  lass...         
23690 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
236a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
236b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
236c0 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20  module">..      
236d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
236e0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
236f0 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
23700 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74   instance used t
23710 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20 20 20  o provide..     
23720 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d         /// an im
23730 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
23740 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
23750 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
23760 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
23770 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63      /// interfac
23780 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
23790 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
237a0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
237b0 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64   SQLiteNativeMod
237c0 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ule(..          
237d0 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
237e0 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  le module..     
237f0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
23800 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
23810 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
23820 73 2e 6d 6f 64 75 6c 65 20 3d 20 6d 6f 64 75 6c  s.module = modul
23830 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
23840 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
23850 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
23860 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
23870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
238b0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
238c0 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61 74  ion Private Stat
238d0 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
238e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
238f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
23900 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
23910 74 61 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73  table error mess
23920 61 67 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20  age to one that 
23930 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 6e 61  indicates the na
23940 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
23950 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70    /// module imp
23960 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e  lementation is n
23970 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
23980 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23990 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
239a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
239b0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
239c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
239d0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
239e0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
239f0 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
23a00 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
23a10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
23a20 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
23a30 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
23a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23a50 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73   The value of <s
23a60 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45  ee cref="SQLiteE
23a70 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 20  rrorCode.Error" 
23a80 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  />...           
23a90 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
23aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
23ab0 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69  vate static SQLi
23ac0 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75  teErrorCode Modu
23ad0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
23ae0 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
23af0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
23b00 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
23b10 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
23b20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23b30 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61             SetTa
23b40 62 6c 65 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70  bleError(null, p
23b50 56 74 61 62 2c 20 44 65 66 61 75 6c 74 4c 6f 67  Vtab, DefaultLog
23b60 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20  Errors,..       
23b70 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66               Def
23b80 61 75 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e  aultLogException
23b90 73 2c 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  s, ModuleNotAvai
23ba0 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67  lableErrorMessag
23bb0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
23bc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
23bd0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
23be0 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
23bf0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
23c00 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
23c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
23c50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
23c60 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
23c70 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61   /// Sets the ta
23c80 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ble error messag
23c90 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e  e to one that in
23ca0 64 69 63 61 74 65 73 20 74 68 65 20 6e 61 74 69  dicates the nati
23cb0 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
23cc0 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  /// module imple
23cd0 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74  mentation is not
23ce0 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
23cf0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
23d00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23d10 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
23d20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
23d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23d40 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
23d50 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
23d60 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
23d70 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
23d80 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
23d90 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
23da0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
23db0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
23dc0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
23dd0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
23de0 75 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ue of <see cref=
23df0 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  "SQLiteErrorCode
23e00 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20  .Error" />...   
23e10 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
23e20 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
23e30 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
23e40 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  tic SQLiteErrorC
23e50 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ode ModuleNotAva
23e60 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
23e70 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
23e80 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
23e90 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
23ea0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
23eb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
23ec0 20 20 20 20 20 20 53 65 74 43 75 72 73 6f 72 45        SetCursorE
23ed0 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 43 75 72 73  rror(null, pCurs
23ee0 6f 72 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72  or, DefaultLogEr
23ef0 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  rors,..         
23f00 20 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75             Defau
23f10 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c  ltLogExceptions,
23f20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
23f30 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29  bleErrorMessage)
23f40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
23f50 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
23f60 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
23f70 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
23f80 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
23f90 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
23fa0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
23fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23ff0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
24000 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
24010 65 4d 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73 0d  eModule Members.
24020 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24030 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
24040 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
24050 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
24060 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
24070 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
24080 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
24090 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
240a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
240b0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
240c0 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  "pDb">..        
240d0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
240e0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
240f0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
24100 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
24110 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
24120 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
24130 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
24140 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22  aram name="pAux"
24150 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
24160 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
24170 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
24180 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
24190 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
241a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
241b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
241c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
241d0 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
241e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
241f0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
24200 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
24210 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
24220 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
24230 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
24240 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
24250 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
24260 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
24270 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
24280 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
24290 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
242a0 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
242b0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
242c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
242d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
242e0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
242f0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
24300 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
24310 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
24320 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
24330 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
24340 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24350 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
24360 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
24370 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e  m name="pError">
24380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24390 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
243a0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
243b0 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
243c0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
243d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
243e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
243f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
24400 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
24410 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
24420 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
24430 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
24440 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
24450 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24460 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
24470 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
24480 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
24490 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
244a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
244b0 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Db,..           
244c0 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
244d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
244e0 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
244f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
24500 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
24510 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
24520 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
24530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
24540 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
24550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24560 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
24570 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
24580 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
24590 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
245a0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
245b0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
245c0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
245d0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
245e0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
245f0 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
24600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24610 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
24620 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
24630 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24640 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
24650 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
24660 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
24670 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  mString(..      
24680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24690 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c    ModuleNotAvail
246a0 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
246b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
246c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
246d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
246e0 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
246f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
24700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
24710 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 72 65  turn module.xCre
24720 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
24730 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70            pDb, p
24740 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c  Aux, argc, argv,
24750 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66 20   ref pVtab, ref 
24760 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  pError);..      
24770 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
24780 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
24790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
247d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
247e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
247f0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
24800 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
24810 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
24820 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
24830 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
24840 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
24850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24860 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
24870 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  Db">..          
24880 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24890 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
248a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
248b0 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
248c0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
248d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
248e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
248f0 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e  ram name="pAux">
24900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24910 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
24920 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
24930 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
24940 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
24950 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24960 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
24970 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
24980 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
24990 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
249a0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
249b0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
249c0 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
249d0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
249e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
249f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
24a00 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
24a10 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
24a20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
24a30 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
24a40 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
24a50 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
24a60 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
24a70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
24a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24a90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
24aa0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
24ab0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
24ac0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
24ad0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
24ae0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
24af0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
24b00 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
24b10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
24b20 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f  aram name="pErro
24b30 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
24b40 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
24b50 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
24b60 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
24b70 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
24b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24b90 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
24ba0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
24bb0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
24bc0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
24bd0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
24be0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
24bf0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
24c00 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
24c10 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
24c20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
24c30 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
24c40 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
24c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
24c60 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
24c70 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
24c80 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
24c90 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
24ca0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
24cb0 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
24cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24cd0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
24ce0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
24cf0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
24d00 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20  pError..        
24d10 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
24d20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24d30 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
24d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
24d50 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
24d60 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
24d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
24d80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
24d90 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
24da0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
24db0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
24dc0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
24dd0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
24de0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e00 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69     pError = SQLi
24e10 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
24e20 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a  PtrFromString(..
24e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e40 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f          ModuleNo
24e50 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d  tAvailableErrorM
24e60 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  essage);....    
24e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e80 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
24e90 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20  orCode.Error;.. 
24ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
24eb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24ec0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
24ed0 65 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  e.xConnect(..   
24ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ef0 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67 63   pDb, pAux, argc
24f00 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74 61  , argv, ref pVta
24f10 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b 0d  b, ref pError);.
24f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
24f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f80 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
24f90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
24fa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24fb0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
24fc0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
24fd0 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
24fe0 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  x" /> method... 
24ff0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25000 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
25010 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
25020 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
25030 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25040 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
25050 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
25060 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
25070 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
25080 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25090 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
250a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
250b0 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d   name="pIndex">.
250c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
250d0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
250e0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
250f0 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
25100 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
25110 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25120 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
25130 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
25140 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
25150 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25160 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25170 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73  ativeModule.xBes
25180 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
25190 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
251a0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
251b0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
251c0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
251d0 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  de xBestIndex(..
251e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251f0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
25200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
25210 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20  ntPtr pIndex..  
25220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
25230 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
25240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25250 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
25260 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
25270 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
25280 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
25290 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
252a0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
252b0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
252c0 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
252d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
252e0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
252f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25300 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
25310 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
25320 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
25330 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25340 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
25350 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 28 70 56  le.xBestIndex(pV
25360 74 61 62 2c 20 70 49 6e 64 65 78 29 3b 0d 0a 20  tab, pIndex);.. 
25370 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
25380 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
25390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
253a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
253b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
253c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
253d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
253e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
253f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
25400 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
25410 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
25420 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
25430 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
25440 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
25450 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
25460 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
25470 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
25480 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25490 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
254a0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
254b0 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
254c0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
254d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
254e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
254f0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
25500 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
25510 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25520 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25530 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
25540 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  connect" /> meth
25550 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25560 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
25570 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
25580 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
25590 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28  ode xDisconnect(
255a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
255b0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
255c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
255e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
255f0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
25600 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
25610 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
25620 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
25630 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
25640 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
25650 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
25660 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
25670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25680 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
25690 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
256a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
256b0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
256c0 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
256d0 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
256e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
256f0 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
25700 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
25710 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
25720 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
25730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
25770 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
25780 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
25790 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
257a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
257b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
257c0 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74  xDestroy" /> met
257d0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
257e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
257f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25800 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
25810 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
25820 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25830 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25840 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25850 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68  Destroy" /> meth
25860 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25870 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
25880 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25890 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
258a0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
258b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
258c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
258d0 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65  .xDestroy" /> me
258e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
258f0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
25900 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
25910 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
25920 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d  rCode xDestroy(.
25930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25940 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
25950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
25960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
25970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25980 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
25990 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
259a0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
259b0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
259c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
259d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
259e0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
259f0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
25a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
25a10 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
25a20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
25a30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
25a40 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
25a50 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
25a60 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
25a70 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
25a80 75 6c 65 2e 78 44 65 73 74 72 6f 79 28 70 56 74  ule.xDestroy(pVt
25a90 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
25aa0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
25ab0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25af0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
25b00 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
25b10 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
25b20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25b30 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25b40 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
25b50 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
25b60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25b70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
25b80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
25b90 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
25ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25bb0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
25bc0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
25bd0 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f  eModule.xOpen" /
25be0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
25bf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
25c00 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
25c10 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
25c20 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
25c30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
25c40 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
25c50 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
25c60 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
25c70 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25c80 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25ca0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
25cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25cc0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25cd0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25ce0 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74  le.xOpen" /> met
25cf0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
25d00 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
25d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
25d20 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
25d30 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20  Code xOpen(..   
25d40 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
25d50 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
25d60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
25d70 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
25d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d90 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
25da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25db0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
25dc0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
25dd0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
25de0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
25df0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
25e00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
25e10 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
25e20 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
25e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25e40 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
25e50 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
25e60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
25e70 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
25e80 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
25e90 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
25ea0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
25eb0 64 75 6c 65 2e 78 4f 70 65 6e 28 70 56 74 61 62  dule.xOpen(pVtab
25ec0 2c 20 72 65 66 20 70 43 75 72 73 6f 72 29 3b 0d  , ref pCursor);.
25ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
25ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f30 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
25f40 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
25f50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25f60 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
25f70 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
25f80 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
25f90 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
25fa0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
25fb0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
25fc0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
25fd0 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
25fe0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
25ff0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
26000 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
26010 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
26020 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
26030 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
26040 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
26050 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
26060 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
26070 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
26080 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
26090 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
260a0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
260b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
260c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
260d0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
260e0 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28  rrorCode xClose(
260f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26100 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
26110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26120 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
26130 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26140 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
26150 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
26160 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
26170 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
26180 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
26190 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
261a0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
261b0 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
261c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
261d0 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
261e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
261f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26200 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
26210 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70  bleCursorError(p
26220 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
26230 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
26240 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  rn module.xClose
26250 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
26260 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
26270 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
26280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
262c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
262d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
262e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
262f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
26300 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
26310 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
26320 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26330 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
26340 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26350 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26360 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
26370 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
26380 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
26390 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
263a0 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
263b0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
263c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
263d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
263e0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64   <param name="id
263f0 78 4e 75 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20  xNum">..        
26400 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
26410 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
26420 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
26430 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
26440 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
26450 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
26460 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
26470 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53 74  aram name="idxSt
26480 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
26490 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
264a0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
264b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
264c0 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
264d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
264e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
264f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
26500 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a  m name="argc">..
26510 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26520 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26530 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26540 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20  Module.xFilter" 
26550 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26560 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
26570 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
26580 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
26590 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20  e="argv">..     
265a0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
265b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
265c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
265d0 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
265e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
265f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
26600 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26610 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
26620 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
26630 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
26640 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
26650 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
26660 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
26670 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
26680 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
26690 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
266a0 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d  orCode xFilter(.
266b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
266c0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
266d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
266e0 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20    int idxNum,.. 
266f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
26700 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20  ntPtr idxStr,.. 
26710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
26720 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
26730 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
26740 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20 20   argv..         
26750 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
26760 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
26770 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
26780 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
26790 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
267a0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
267b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
267c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
267d0 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
267e0 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
267f0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
26800 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
26810 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
26820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
26830 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
26840 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72  vailableCursorEr
26850 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d  ror(pCursor);...
26860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26870 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
26880 46 69 6c 74 65 72 28 70 43 75 72 73 6f 72 2c 20  Filter(pCursor, 
26890 69 64 78 4e 75 6d 2c 20 69 64 78 53 74 72 2c 20  idxNum, idxStr, 
268a0 61 72 67 63 2c 20 61 72 67 76 29 3b 0d 0a 20 20  argc, argv);..  
268b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
268c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
268d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
26910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26920 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26930 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26940 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26950 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26960 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65  ule.xNext" /> me
26970 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26980 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
26990 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
269a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
269b0 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
269c0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
269d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
269e0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
269f0 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68  e.xNext" /> meth
26a00 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
26a10 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
26a20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26a30 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
26a40 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
26a50 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
26a60 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
26a70 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f  .xNext" /> metho
26a80 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
26a90 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
26aa0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
26ab0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
26ac0 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20  de xNext(..     
26ad0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
26ae0 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
26af0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
26b00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26b10 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
26b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26b30 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
26b40 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
26b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26b60 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
26b70 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
26b80 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
26b90 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
26ba0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
26bb0 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
26bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bd0 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
26be0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
26bf0 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
26c00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26c10 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
26c20 6c 65 2e 78 4e 65 78 74 28 70 43 75 72 73 6f 72  le.xNext(pCursor
26c30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
26c40 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
26c50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c90 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
26ca0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
26cb0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26cc0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26cd0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26ce0 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20  iveModule.xEof" 
26cf0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26d00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
26d10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
26d20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
26d30 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
26d40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26d50 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26d60 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26d70 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
26d80 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
26d90 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
26da0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26db0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
26dc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
26dd0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
26de0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
26df0 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65  dule.xEof" /> me
26e00 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26e10 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
26e20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
26e30 75 62 6c 69 63 20 69 6e 74 20 78 45 6f 66 28 0d  ublic int xEof(.
26e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26e50 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
26e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26e70 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
26e80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
26e90 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
26ea0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
26eb0 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
26ec0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
26ed0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
26ee0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
26ef0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
26f00 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
26f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
26f30 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
26f40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
26f50 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75              Modu
26f60 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
26f70 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f  rsorError(pCurso
26f80 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
26f90 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26fa0 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
26fb0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
26fc0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26fd0 6d 6f 64 75 6c 65 2e 78 45 6f 66 28 70 43 75 72  module.xEof(pCur
26fe0 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  sor);..         
26ff0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
27000 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
27010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27040 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
27050 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
27060 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
27070 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27080 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27090 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
270a0 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
270b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
270c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
270d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
270e0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
270f0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
27100 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27110 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27120 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
27130 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
27140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27150 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27160 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
27170 61 6d 20 6e 61 6d 65 3d 22 70 43 6f 6e 74 65 78  am name="pContex
27180 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t">..           
27190 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
271a0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
271b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
271c0 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  umn" /> method..
271d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
271e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
271f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
27200 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d  m name="index">.
27210 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27220 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27230 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27240 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22  eModule.xColumn"
27250 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
27260 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
27270 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
27280 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
27290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
272a0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
272b0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
272c0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
272d0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
272e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
272f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
27300 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
27310 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
27320 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  lumn(..         
27330 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
27340 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
27350 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
27360 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20  Context,..      
27370 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
27380 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
27390 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
273a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
273b0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
273c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
273d0 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
273e0 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
273f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
27400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27410 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
27420 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
27430 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27440 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
27450 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
27460 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
27470 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
27480 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
27490 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20  r(pCursor);.... 
274a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
274b0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f  eturn module.xCo
274c0 6c 75 6d 6e 28 70 43 75 72 73 6f 72 2c 20 70 43  lumn(pCursor, pC
274d0 6f 6e 74 65 78 74 2c 20 69 6e 64 65 78 29 3b 0d  ontext, index);.
274e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
274f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27540 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
27550 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
27560 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27570 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27580 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27590 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
275a0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
275b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
275c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
275d0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
275e0 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
275f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
27600 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
27610 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
27620 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e  odule.xRowId" />
27630 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27640 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
27650 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
27660 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
27670 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20  "rowId">..      
27680 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27690 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
276a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
276b0 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68  .xRowId" /> meth
276c0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
276d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
276e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
276f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
27700 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27710 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27720 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27730 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68  .xRowId" /> meth
27740 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27750 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
27760 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
27770 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
27780 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20  ode xRowId(..   
27790 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
277a0 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
277b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
277c0 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
277d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
277e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
277f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27800 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27810 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
27820 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
27830 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
27840 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
27850 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
27860 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
27870 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
27880 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
27890 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
278a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
278b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
278c0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
278d0 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
278e0 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
278f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
27900 6f 64 75 6c 65 2e 78 52 6f 77 49 64 28 70 43 75  odule.xRowId(pCu
27910 72 73 6f 72 2c 20 72 65 66 20 72 6f 77 49 64 29  rsor, ref rowId)
27920 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
27930 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27980 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
27990 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
279a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
279b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
279c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
279d0 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
279e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
279f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
27a00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27a10 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
27a20 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
27a30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27a40 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27a50 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27a60 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
27a70 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
27a80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27a90 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
27aa0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
27ab0 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
27ac0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
27ad0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27ae0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27af0 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
27b00 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27b10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
27b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27b30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
27b40 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gv">..          
27b50 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27b60 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27b70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  NativeModule.xUp
27b80 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  date" /> method.
27b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27ba0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27bb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
27bc0 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e  am name="rowId">
27bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27be0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
27bf0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
27c00 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
27c10 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
27c20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
27c30 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
27c40 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
27c50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27c60 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
27c70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
27c80 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
27c90 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
27ca0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27cb0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
27cc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
27cd0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55  LiteErrorCode xU
27ce0 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
27cf0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
27d00 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
27d10 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
27d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27d30 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
27d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d50 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
27d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
27d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27d90 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
27da0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
27db0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
27dc0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
27dd0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
27de0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
27df0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
27e00 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
27e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27e20 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
27e30 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
27e40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
27e50 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
27e60 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
27e70 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
27e80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
27e90 64 75 6c 65 2e 78 55 70 64 61 74 65 28 70 56 74  dule.xUpdate(pVt
27ea0 61 62 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20  ab, argc, argv, 
27eb0 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20  ref rowId);..   
27ec0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
27ed0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
27ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27f30 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
27f40 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
27f50 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
27f60 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
27f70 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65  le.xBegin" /> me
27f80 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27f90 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
27fa0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27fb0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
27fc0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
27fd0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
27fe0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
27ff0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
28000 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
28010 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28020 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
28030 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
28040 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
28050 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
28060 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
28070 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
28080 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
28090 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
280a0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
280b0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
280c0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
280d0 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  de xBegin(..    
280e0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
280f0 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
28100 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
28110 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
28120 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
28130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28140 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
28150 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
28160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28170 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28180 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
28190 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
281a0 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
281b0 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
281c0 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
281d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
281e0 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
281f0 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
28200 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
28210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28220 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
28230 42 65 67 69 6e 28 70 56 74 61 62 29 3b 0d 0a 20  Begin(pVtab);.. 
28240 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
28250 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
28260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
282a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
282b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
282c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
282d0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
282e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
282f0 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d  dule.xSync" /> m
28300 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28310 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
28320 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
28330 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28340 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
28350 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28360 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28370 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28380 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f  .xSync" /> metho
28390 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
283a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
283b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
283c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
283d0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
283e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
283f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
28400 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64  xSync" /> method
28410 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28420 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
28430 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
28440 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
28450 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  e xSync(..      
28460 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
28470 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
28480 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
28490 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
284a0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
284b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
284c0 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
284d0 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
284e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
284f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
28500 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
28510 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
28520 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
28530 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
28540 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
28550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28560 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
28570 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
28580 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
28590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
285a0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 79  eturn module.xSy
285b0 6e 63 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  nc(pVtab);..    
285c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
285d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
285e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
285f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28620 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28630 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
28640 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28650 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28660 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28670 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65  e.xCommit" /> me
28680 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28690 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
286a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
286b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
286c0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
286d0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
286e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
286f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
28700 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68  xCommit" /> meth
28710 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
28720 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
28730 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28740 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28750 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28760 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28770 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28780 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74  .xCommit" /> met
28790 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
287a0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
287b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
287c0 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
287d0 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
287e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
287f0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
28800 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
28810 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
28820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28830 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
28840 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
28850 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
28860 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
28870 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
28880 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
28890 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
288a0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
288b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
288c0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
288d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
288e0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
288f0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
28900 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
28910 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28920 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
28930 65 2e 78 43 6f 6d 6d 69 74 28 70 56 74 61 62 29  e.xCommit(pVtab)
28940 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
28950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
289b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
289c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
289d0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
289e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
289f0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
28a00 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
28a10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28a20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
28a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28a40 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
28a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28a60 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
28a70 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
28a80 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
28a90 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
28aa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28ab0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28ac0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
28ad0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
28ae0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28af0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
28b00 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
28b10 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64  lback" /> method
28b20 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28b30 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
28b40 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
28b50 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
28b60 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  e xRollback(..  
28b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
28b80 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
28b90 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
28ba0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
28bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28bd0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
28be0 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
28bf0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
28c00 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
28c10 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
28c20 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
28c30 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
28c40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
28c50 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
28c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c70 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
28c80 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
28c90 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
28ca0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
28cb0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
28cc0 2e 78 52 6f 6c 6c 62 61 63 6b 28 70 56 74 61 62  .xRollback(pVtab
28cd0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
28ce0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28cf0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d30 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28d40 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28d50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28d60 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28d70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28d80 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
28d90 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
28da0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
28db0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
28dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28dd0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
28de0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
28df0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
28e00 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
28e10 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
28e20 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
28e30 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
28e40 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
28e50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28e60 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
28e70 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  nArg">..        
28e80 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
28e90 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
28ea0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28eb0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
28ec0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28ed0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
28ee0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
28ef0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28f00 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  "zName">..      
28f10 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28f20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28f30 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28f40 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
28f50 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
28f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
28f70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
28f80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
28f90 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20  e="callback">.. 
28fa0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28fb0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28fc0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28fd0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
28fe0 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
28ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29000 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
29010 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
29020 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44  m name="pClientD
29030 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ata">..         
29040 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
29050 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29060 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
29070 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
29080 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29090 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
290a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
290b0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
290c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
290d0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
290e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
290f0 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
29100 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
29110 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29120 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
29130 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
29140 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
29150 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
29160 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
29170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29180 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
29190 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
291a0 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20  Ptr zName,..    
291b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
291c0 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
291d0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
291e0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
291f0 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
29200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29210 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
29220 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
29230 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
29240 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
29250 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
29260 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
29270 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
29280 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
29290 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
292a0 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
292b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
292c0 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
292d0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
292e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
292f0 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64               Mod
29300 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
29310 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
29320 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29330 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b         return 0;
29340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29350 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
29360 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
29370 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
29380 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
29390 20 20 20 20 20 20 20 20 20 70 56 74 61 62 2c 20           pVtab, 
293a0 6e 41 72 67 2c 20 7a 4e 61 6d 65 2c 20 72 65 66  nArg, zName, ref
293b0 20 63 61 6c 6c 62 61 63 6b 2c 20 72 65 66 20 70   callback, ref p
293c0 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 20 20  ClientData);..  
293d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
293e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
293f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
29430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29440 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
29450 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
29460 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
29470 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
29480 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20  ule.xRename" /> 
29490 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
294a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
294b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
294c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
294d0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
294e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
294f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29500 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29510 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65  e.xRename" /> me
29520 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29530 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29540 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29550 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e   <param name="zN
29560 65 77 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ew">..          
29570 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29580 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
29590 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  NativeModule.xRe
295a0 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  name" /> method.
295b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
295c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
295d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
295e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
295f0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
29600 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29610 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
29620 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
29630 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29640 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
29650 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
29660 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
29670 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  e xRename(..    
29680 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
29690 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
296a0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
296b0 72 20 7a 4e 65 77 0d 0a 20 20 20 20 20 20 20 20  r zNew..        
296c0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
296d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
296e0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
296f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29700 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
29710 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
29720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29730 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
29740 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
29750 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
29760 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
29770 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
29780 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
29790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
297a0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
297b0 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
297c0 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
297d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
297e0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 65  eturn module.xRe
297f0 6e 61 6d 65 28 70 56 74 61 62 2c 20 7a 4e 65 77  name(pVtab, zNew
29800 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
29810 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
29820 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29860 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
29870 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
29880 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29890 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
298a0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
298b0 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
298c0 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  oint" /> method.
298d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
298e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
298f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
29900 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
29910 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
29920 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
29930 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29940 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
29950 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
29960 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29970 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
29980 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
29990 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70  ram name="iSavep
299a0 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
299b0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
299c0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
299d0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
299e0 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65  Savepoint" /> me
299f0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29a00 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29a20 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
29a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29a40 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
29a50 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
29a60 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f  le.xSavepoint" /
29a70 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
29a80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
29a90 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
29aa0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
29ab0 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70  ErrorCode xSavep
29ac0 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  oint(..         
29ad0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
29ae0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
29af0 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
29b00 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  oint..          
29b10 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
29b20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29b30 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
29b40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
29b50 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
29b60 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
29b70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
29b80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29b90 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
29ba0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
29bb0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
29bc0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
29bd0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
29be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
29bf0 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
29c00 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
29c10 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
29c20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
29c30 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65  urn module.xSave
29c40 70 6f 69 6e 74 28 70 56 74 61 62 2c 20 69 53 61  point(pVtab, iSa
29c50 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20  vepoint);..     
29c60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
29c70 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29cc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29cd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29ce0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29cf0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29d00 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29d10 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
29d20 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29d30 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
29d40 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29d50 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
29d60 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
29d70 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29d80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29d90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29da0 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74  xRelease" /> met
29db0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29dc0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
29dd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29de0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61  <param name="iSa
29df0 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20  vepoint">..     
29e00 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
29e10 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29e20 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29e30 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
29e40 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29e50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
29e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29e70 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
29e80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
29e90 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
29ea0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
29eb0 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e  ule.xRelease" />
29ec0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29ed0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
29ee0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
29ef0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
29f00 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73  rrorCode xReleas
29f10 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
29f20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
29f30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
29f40 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
29f50 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
29f60 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
29f70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
29f80 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29f90 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
29fa0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
29fb0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
29fc0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
29fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29fe0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
29ff0 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
2a000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a010 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
2a020 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2a030 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a040 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
2a050 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
2a060 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
2a070 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2a080 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65   module.xRelease
2a090 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69  (pVtab, iSavepoi
2a0a0 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nt);..          
2a0b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2a0c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2a0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a100 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2a110 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2a120 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2a130 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2a140 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2a150 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
2a160 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68  lbackTo" /> meth
2a170 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2a180 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2a190 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a1a0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2a1b0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2a1c0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2a1d0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2a1e0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2a1f0 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65  ollbackTo" /> me
2a200 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2a210 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2a220 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a230 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
2a240 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
2a250 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2a260 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2a270 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2a280 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
2a290 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2a2a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2a2b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2a2c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2a2d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a2e0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2a2f0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2a300 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2a310 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  kTo" /> method..
2a320 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a330 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2a340 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2a350 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2a360 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20  xRollbackTo(..  
2a370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2a380 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
2a390 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
2a3a0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
2a3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2a3c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2a3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a3e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2a3f0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
2a400 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
2a410 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2a420 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2a430 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
2a440 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
2a450 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
2a460 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2a470 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2a480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a490 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
2a4a0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
2a4b0 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
2a4c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a4d0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
2a4e0 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 70 56  e.xRollbackTo(pV
2a4f0 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29  tab, iSavepoint)
2a500 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2a510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
2a520 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2a530 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a580 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
2a590 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
2a5a0 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
2a5b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2a5c0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a5d0 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
2a5e0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2a5f0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nce...          
2a600 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2a610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2a620 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
2a630 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
2a640 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a650 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
2a660 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2a670 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
2a680 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
2a690 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2a6a0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
2a6b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2a6c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a700 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2a710 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2a720 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
2a730 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
2a740 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
2a750 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64  te bool disposed
2a760 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ;..            /
2a770 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2a780 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
2a790 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65  rows an <see cre
2a7a0 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  f="ObjectDispose
2a7b0 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69  dException" /> i
2a7c0 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20  f this object.. 
2a7d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69             /// i
2a7e0 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
2a7f0 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
2a800 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2a810 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2a820 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
2a830 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2a840 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2a850 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2a860 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
2a870 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
2a880 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
2a890 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2a8a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a8b0 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
2a8c0 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
2a8d0 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
2a8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a8f0 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c        typeof(SQL
2a900 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 29  iteNativeModule)
2a910 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
2a920 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
2a930 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2a940 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2a950 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a990 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2a9a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2a9b0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a9c0 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
2a9d0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2a9e0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nce...          
2a9f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2aa00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2aa10 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
2aa20 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20  isposing">..    
2aa30 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
2aa40 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  zero if this met
2aa50 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c  hod is being cal
2aa60 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  led from the..  
2aa70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2aa80 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65  ee cref="Dispose
2aa90 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20  ()" /> method.  
2aaa0 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  Zero if this met
2aab0 68 6f 64 20 69 73 20 62 65 69 6e 67 0d 0a 20 20  hod is being..  
2aac0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61            /// ca
2aad0 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20 66 69  lled from the fi
2aae0 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20  nalizer...      
2aaf0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2ab00 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2ab10 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65  private /* prote
2ab20 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20  cted virtual */ 
2ab30 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
2ab40 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
2ab50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2ab60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2ab70 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20  (!disposed)..   
2ab80 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2ab90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aba0 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
2abb0 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
2abc0 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20            //{.. 
2abd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2abe0 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
2abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2ac10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70     //    // disp
2ac30 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f  ose managed reso
2ac40 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
2ac50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac60 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
2ac70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
2ac90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aca0 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20     //}....      
2acb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2acc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ace0 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
2acf0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
2ad00 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
2ad10 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
2ad20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ad30 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ad40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2ad60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad70 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2ad80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2ad90 4f 54 45 3a 20 54 68 65 20 6d 6f 64 75 6c 65 20  OTE: The module 
2ada0 69 73 20 6e 6f 74 20 6f 77 6e 65 64 20 62 79 20  is not owned by 
2adb0 75 73 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 64  us; therefore, d
2adc0 6f 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 20  o not..         
2add0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2ade0 20 20 20 20 64 69 73 70 6f 73 65 20 69 74 2e 0d      dispose it..
2adf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ae00 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2ae10 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2ae20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29  (module != null)
2ae30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ae40 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2ae50 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
2ae60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae70 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
2ae80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ae90 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2aea0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2aeb0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2aec0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2aed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2af10 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
2af20 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d  gion Destructor.
2af30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2af40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2af50 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61          /// Fina
2af60 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63  lizes this objec
2af70 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2af80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2af90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2afa0 20 20 20 20 20 7e 53 51 4c 69 74 65 4e 61 74 69       ~SQLiteNati
2afb0 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20  veModule()..    
2afc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2afd0 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
2afe0 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
2aff0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2b000 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2b010 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  n..        }..  
2b020 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2b030 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2b040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b080 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2b090 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
2b0a0 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
2b0b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2b0c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2b0d0 20 64 65 66 61 75 6c 74 20 76 65 72 73 69 6f 6e   default version
2b0e0 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 73   of the native s
2b0f0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74  qlite3_module st
2b100 72 75 63 74 75 72 65 20 69 6e 20 75 73 65 2e 0d  ructure in use..
2b110 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2b120 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b130 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2b140 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 44 65 66  readonly int Def
2b150 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f  aultModuleVersio
2b160 6e 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20 20  n = 2;..        
2b170 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2b180 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b1d0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
2b1e0 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
2b1f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2b200 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2b210 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20  / This field is 
2b220 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
2b230 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2b240 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2b250 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
2b260 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
2b270 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2b280 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
2b290 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2b2a0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
2b2b0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2b2c0 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
2b2d0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a   nativeModule;..
2b2e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2b2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b330 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2b340 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2b350 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65      /// This fie
2b360 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74  ld is used to st
2b370 6f 72 65 20 74 68 65 20 64 65 73 74 72 75 63 74  ore the destruct
2b380 6f 72 20 64 65 6c 65 67 61 74 65 20 74 6f 20 62  or delegate to b
2b390 65 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20 20  e passed to..   
2b3a0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
2b3b0 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
2b3c0 20 76 69 61 20 74 68 65 20 73 71 6c 69 74 65 33   via the sqlite3
2b3d0 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2b3e0 6c 65 5f 6d 6f 64 75 6c 65 28 29 0d 0a 20 20 20  le_module()..   
2b3f0 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f       /// functio
2b400 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
2b410 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2b420 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61      private Unsa
2b430 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2b440 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 64  xDestroyModule d
2b450 65 73 74 72 6f 79 4d 6f 64 75 6c 65 3b 0d 0a 0d  estroyModule;...
2b460 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2b470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2b4c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2b4d0 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
2b4e0 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
2b4f0 72 65 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  re a pointer to 
2b500 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
2b510 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
2b520 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
2b530 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65   returned by the
2b540 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
2b550 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2b560 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  e..        /// f
2b570 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  unction...      
2b580 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2b590 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2b5a0 65 20 49 6e 74 50 74 72 20 64 69 73 70 6f 73 61  e IntPtr disposa
2b5b0 62 6c 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20  bleModule;....  
2b5c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2b5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b610 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2b620 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2b630 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2b640 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2b650 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
2b660 20 75 73 65 64 20 74 6f 20 68 6f 6c 64 20 74 68   used to hold th
2b670 65 20 62 6c 6f 63 6b 20 6f 66 20 6e 61 74 69 76  e block of nativ
2b680 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 63 6f  e memory that co
2b690 6e 74 61 69 6e 73 0d 0a 20 20 20 20 20 20 20 20  ntains..        
2b6a0 2f 2f 2f 20 74 68 65 20 6e 61 74 69 76 65 20 73  /// the native s
2b6b0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74  qlite3_module st
2b6c0 72 75 63 74 75 72 65 20 61 73 73 6f 63 69 61 74  ructure associat
2b6d0 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a  ed with this obj
2b6e0 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
2b6f0 20 69 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72   instance when r
2b700 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e  unning on the .N
2b710 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
2b720 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f  work...        /
2b730 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2b740 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49         private I
2b750 6e 74 50 74 72 20 70 4e 61 74 69 76 65 4d 6f 64  ntPtr pNativeMod
2b760 75 6c 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ule;..#endif....
2b770 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2b780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b7c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2b7d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2b7e0 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2b7f0 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2b800 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
2b810 62 6c 65 20 69 6e 73 74 61 6e 63 65 73 20 61 73  ble instances as
2b820 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
2b830 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
2b840 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 74  module.  The nat
2b850 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
2b860 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
2b870 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20  derived..       
2b880 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 69   /// structure i
2b890 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e  s used to key in
2b8a0 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63 74 69  to this collecti
2b8b0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
2b8c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2b8d0 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69 63       private Dic
2b8e0 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20  tionary<IntPtr, 
2b8f0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
2b900 6c 65 3e 20 74 61 62 6c 65 73 3b 0d 0a 0d 0a 20  le> tables;.... 
2b910 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2b920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2b960 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2b970 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b980 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20   /// This field 
2b990 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65  is used to store
2b9a0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
2b9b0 6c 65 20 63 75 72 73 6f 72 20 69 6e 73 74 61 6e  le cursor instan
2b9c0 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ces..        ///
2b9d0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
2b9e0 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54   this module.  T
2b9f0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
2ba00 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  r to the..      
2ba10 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74    /// sqlite3_vt
2ba20 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65  ab_cursor derive
2ba30 64 20 73 74 72 75 63 74 75 72 65 20 69 73 20 75  d structure is u
2ba40 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20  sed to key into 
2ba50 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
2ba60 2f 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20  / collection... 
2ba70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2ba80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2ba90 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72  rivate Dictionar
2baa0 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65  y<IntPtr, SQLite
2bab0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
2bac0 6f 72 3e 20 63 75 72 73 6f 72 73 3b 0d 0a 0d 0a  or> cursors;....
2bad0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2bae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2baf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2bb20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2bb30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2bb40 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2bb50 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2bb60 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
2bb70 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73  ble function ins
2bb80 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20  tances..        
2bb90 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
2bba0 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e  ith this module.
2bbb0 20 20 54 68 65 20 63 61 73 65 2d 69 6e 73 65 6e    The case-insen
2bbc0 73 69 74 69 76 65 20 66 75 6e 63 74 69 6f 6e 20  sitive function 
2bbd0 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  name..        //
2bbe0 2f 20 61 6e 64 20 74 68 65 20 6e 75 6d 62 65 72  / and the number
2bbf0 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 28 77   of arguments (w
2bc00 69 74 68 20 2d 31 20 6d 65 61 6e 69 6e 67 20 22  ith -1 meaning "
2bc10 61 6e 79 22 29 20 61 72 65 20 75 73 65 64 20 74  any") are used t
2bc20 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  o..        /// c
2bc30 6f 6e 73 74 72 75 63 74 20 74 68 65 20 73 74 72  onstruct the str
2bc40 69 6e 67 20 74 68 61 74 20 69 73 20 75 73 65 64  ing that is used
2bc50 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69   to key into thi
2bc60 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20  s collection... 
2bc70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2bc80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2bc90 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72  rivate Dictionar
2bca0 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74 65  y<string, SQLite
2bcb0 46 75 6e 63 74 69 6f 6e 3e 20 66 75 6e 63 74 69  Function> functi
2bcc0 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  ons;..        #e
2bcd0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2bce0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2bd30 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2bd40 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f  ublic Constructo
2bd50 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
2bd60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2bd70 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
2bd80 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
2bd90 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
2bda0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2bdb0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2bdc0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
2bdd0 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ame">..        /
2bde0 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
2bdf0 68 65 20 6d 6f 64 75 6c 65 2e 20 20 54 68 69 73  he module.  This
2be00 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 6e 6f   parameter canno
2be10 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  t be null...    
2be20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2be30 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2be40 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 28 73 74   SQLiteModule(st
2be50 72 69 6e 67 20 6e 61 6d 65 29 0d 0a 20 20 20 20  ring name)..    
2be60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2be70 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e     if (name == n
2be80 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2be90 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2bea0 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
2beb0 70 74 69 6f 6e 28 22 6e 61 6d 65 22 29 3b 0d 0a  ption("name");..
2bec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2bed0 69 73 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b 0d  is.name = name;.
2bee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
2bef0 73 2e 74 61 62 6c 65 73 20 3d 20 6e 65 77 20 44  s.tables = new D
2bf00 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72  ictionary<IntPtr
2bf10 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  , SQLiteVirtualT
2bf20 61 62 6c 65 3e 28 29 3b 0d 0a 20 20 20 20 20 20  able>();..      
2bf30 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 73 6f        this.curso
2bf40 72 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e  rs = new Diction
2bf50 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69  ary<IntPtr, SQLi
2bf60 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
2bf70 72 73 6f 72 3e 28 29 3b 0d 0a 20 20 20 20 20 20  rsor>();..      
2bf80 20 20 20 20 20 20 74 68 69 73 2e 66 75 6e 63 74        this.funct
2bf90 69 6f 6e 73 20 3d 20 6e 65 77 20 44 69 63 74 69  ions = new Dicti
2bfa0 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51  onary<string, SQ
2bfb0 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e 28 29 3b  LiteFunction>();
2bfc0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2bfd0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2bfe0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2bff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c030 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2c040 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d  egion Internal M
2c050 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2c060 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2c070 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73         /// Calls
2c080 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
2c090 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2c0a0 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 72 65 61  in order to crea
2c0b0 74 65 20 61 20 6e 65 77 0d 0a 20 20 20 20 20 20  te a new..      
2c0c0 20 20 2f 2f 2f 20 64 69 73 70 6f 73 61 62 6c 65    /// disposable
2c0d0 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e 69   module containi
2c0e0 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74  ng the implement
2c0f0 61 74 69 6f 6e 20 6f 66 20 61 20 76 69 72 74 75  ation of a virtu
2c100 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
2c110 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2c120 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2c130 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22  param name="pDb"
2c140 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2c150 68 65 20 6e 61 74 69 76 65 20 64 61 74 61 62 61  he native databa
2c160 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f  se connection po
2c170 69 6e 74 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20  inter to use... 
2c180 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2c190 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
2c1a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2c1b0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
2c1c0 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
2c1d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2c1e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2c1f0 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 43 72  internal bool Cr
2c200 65 61 74 65 44 69 73 70 6f 73 61 62 6c 65 4d 6f  eateDisposableMo
2c210 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
2c220 20 20 20 49 6e 74 50 74 72 20 70 44 62 0d 0a 20     IntPtr pDb.. 
2c230 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2c240 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c250 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 61       if (disposa
2c260 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74  bleModule != Int
2c270 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2c280 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2c290 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  n true;....     
2c2a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4e         IntPtr pN
2c2b0 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ame = IntPtr.Zer
2c2c0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
2c2d0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2c2e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c2f0 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20 53 51        pName = SQ
2c300 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
2c310 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
2c320 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
2c330 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2c340 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2c350 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61 74  lite3_module nat
2c360 69 76 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20  iveModule =..   
2c370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c380 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d   AllocateNativeM
2c390 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  odule();....    
2c3a0 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 74              dest
2c3b0 72 6f 79 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20  royModule = new 
2c3c0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2c3d0 6f 64 73 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75  ods.xDestroyModu
2c3e0 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2c3f0 20 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f           xDestro
2c400 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 23 69 66  yModule);....#if
2c410 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2c420 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2c430 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
2c440 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d  posableModule =.
2c450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c460 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
2c470 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2c480 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2c490 6c 65 5f 6d 6f 64 75 6c 65 28 0d 0a 20 20 20 20  le_module(..    
2c4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c4b0 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20      pDb, pName, 
2c4c0 72 65 66 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ref nativeModule
2c4d0 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 64  , IntPtr.Zero, d
2c4e0 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a  estroyModule);..
2c4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c500 20 20 72 65 74 75 72 6e 20 28 64 69 73 70 6f 73    return (dispos
2c510 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e  ableModule != In
2c520 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c  tPtr.Zero);..#el
2c530 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
2c540 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
2c550 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d       disposableM
2c560 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20  odule =..       
2c570 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
2c580 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2c590 2e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  .sqlite3_create_
2c5a0 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2c5b0 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20  e_interop(..    
2c5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c5d0 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20 41     pDb, pName, A
2c5e0 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64  llocateNativeMod
2c5f0 75 6c 65 49 6e 74 65 72 6f 70 28 29 2c 0d 0a 20  uleInterop(),.. 
2c600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c610 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2c620 6c 65 2e 69 56 65 72 73 69 6f 6e 2c 20 6e 61 74  le.iVersion, nat
2c630 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
2c640 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2c650 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2c660 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
2c670 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2c680 42 65 73 74 49 6e 64 65 78 2c 0d 0a 20 20 20 20  BestIndex,..    
2c690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c6a0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2c6b0 78 44 69 73 63 6f 6e 6e 65 63 74 2c 20 6e 61 74  xDisconnect, nat
2c6c0 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
2c6d0 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy,..           
2c6e0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2c6f0 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 2c 20  veModule.xOpen, 
2c700 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  nativeModule.xCl
2c710 6f 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ose,..          
2c720 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2c730 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
2c740 72 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  r, nativeModule.
2c750 78 4e 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  xNext,..        
2c760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2c770 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66  ativeModule.xEof
2c780 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2c790 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20  Column,..       
2c7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c7b0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2c7c0 77 49 64 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  wId, nativeModul
2c7d0 65 2e 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20  e.xUpdate,..    
2c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c7f0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2c800 78 42 65 67 69 6e 2c 20 6e 61 74 69 76 65 4d 6f  xBegin, nativeMo
2c810 64 75 6c 65 2e 78 53 79 6e 63 2c 0d 0a 20 20 20  dule.xSync,..   
2c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c830 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2c840 2e 78 43 6f 6d 6d 69 74 2c 20 6e 61 74 69 76 65  .xCommit, native
2c850 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2c860 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2c870 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2c880 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
2c890 74 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75  tion, nativeModu
2c8a0 6c 65 2e 78 52 65 6e 61 6d 65 2c 0d 0a 20 20 20  le.xRename,..   
2c8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8c0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2c8d0 2e 78 53 61 76 65 70 6f 69 6e 74 2c 20 6e 61 74  .xSavepoint, nat
2c8e0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
2c8f0 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
2c900 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2c910 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
2c920 63 6b 54 6f 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ckTo, IntPtr.Zer
2c930 6f 2c 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65  o, destroyModule
2c940 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2c950 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 69        return (di
2c960 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21  sposableModule !
2c970 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
2c980 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
2c990 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
2c9a0 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64  w NotImplemented
2c9b0 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65  Exception();..#e
2c9c0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2c9d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2c9e0 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
2c9f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2ca00 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e 61           if (pNa
2ca10 6d 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  me != IntPtr.Zer
2ca20 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2ca30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2ca40 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2ca50 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e 61  eMemory.Free(pNa
2ca60 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
2ca70 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65 20            pName 
2ca80 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
2ca90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2caa0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2cab0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2cac0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2cad0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2cae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2caf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb20 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2cb30 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65  egion Private Me
2cb40 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
2cb50 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2cb60 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
2cb70 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
2cb80 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
2cb90 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20  re library when 
2cba0 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
2cbb0 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 61      /// module a
2cbc0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
2cbd0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2cbe0 6e 63 65 20 69 73 20 62 65 69 6e 67 20 64 65 73  nce is being des
2cbf0 74 72 6f 79 65 64 20 64 75 65 0d 0a 20 20 20 20  troyed due..    
2cc00 20 20 20 20 2f 2f 2f 20 74 6f 20 69 74 73 20 70      /// to its p
2cc10 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
2cc20 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20 20   being closed.  
2cc30 49 74 20 6d 61 79 20 61 6c 73 6f 20 62 65 20 63  It may also be c
2cc40 61 6c 6c 65 64 20 62 79 0d 0a 20 20 20 20 20 20  alled by..      
2cc50 20 20 2f 2f 2f 20 74 68 65 20 22 76 74 73 68 69    /// the "vtshi
2cc60 6d 22 20 6d 6f 64 75 6c 65 20 69 66 2f 77 68 65  m" module if/whe
2cc70 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64 69  n the sqlite3_di
2cc80 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20 66  spose_module() f
2cc90 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  unction..       
2cca0 20 2f 2f 2f 20 69 73 20 63 61 6c 6c 65 64 2e 0d   /// is called..
2ccb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2ccc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2ccd0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2cce0 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d  ="pClientData">.
2ccf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2cd00 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
2cd10 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
2cd20 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d  ated with this m
2cd30 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61 73  odule, as it was
2cd40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72  ..        /// pr
2cd50 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51  ovided to the SQ
2cd60 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2cd70 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76  y when the nativ
2cd80 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63  e module instanc
2cd90 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  e..        /// w
2cda0 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20  as created...   
2cdb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2cdc0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2cdd0 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79  te void xDestroy
2cde0 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20  Module(..       
2cdf0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69       IntPtr pCli
2ce00 65 6e 74 44 61 74 61 20 2f 2a 20 4e 4f 54 20 55  entData /* NOT U
2ce10 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
2ce20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
2ce30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ce40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ce50 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20 70   NOTE: At this p
2ce60 6f 69 6e 74 2c 20 6a 75 73 74 20 6d 61 6b 65 20  oint, just make 
2ce70 73 75 72 65 20 74 68 61 74 20 74 68 69 73 20 6e  sure that this n
2ce80 61 74 69 76 65 20 6d 6f 64 75 6c 65 0d 0a 20 20  ative module..  
2ce90 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2cea0 20 20 20 68 61 6e 64 6c 65 20 69 73 20 6e 6f 74     handle is not
2ceb0 20 72 65 75 73 65 64 2c 20 6e 6f 72 20 70 61 73   reused, nor pas
2cec0 73 65 64 20 69 6e 74 6f 20 74 68 65 20 6e 61 74  sed into the nat
2ced0 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ive..           
2cee0 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74 65   //       sqlite
2cef0 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65  3_dispose_module
2cf00 28 29 20 66 75 6e 63 74 69 6f 6e 20 6c 61 74 65  () function late
2cf10 72 20 28 69 2e 65 2e 20 69 66 2f 77 68 65 6e 0d  r (i.e. if/when.
2cf20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
2cf30 20 20 20 20 20 20 74 68 65 20 44 69 73 70 6f 73        the Dispos
2cf40 65 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 74 68  e() method of th
2cf50 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
2cf60 63 65 20 69 73 20 63 61 6c 6c 65 64 29 2e 0d 0a  ce is called)...
2cf70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2cf80 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
2cf90 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 20 49  osableModule = I
2cfa0 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
2cfb0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2cfc0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2cfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d000 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2d010 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2d020 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2d030 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74 75  Creates and retu
2d040 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20 73  rns the native s
2d050 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72  qlite_module str
2d060 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
2d070 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
2d080 6e 66 69 67 75 72 65 64 20 28 6f 72 20 64 65 66  nfigured (or def
2d090 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66 3d  ault) <see cref=
2d0a0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d0b0 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  dule" />..      
2d0c0 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 20    /// interface 
2d0d0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
2d0e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2d0f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2d100 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2d110 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2d120 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f  native sqlite_mo
2d130 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75  dule structure u
2d140 73 69 6e 67 20 74 68 65 20 63 6f 6e 66 69 67 75  sing the configu
2d150 72 65 64 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  red (or..       
2d160 20 2f 2f 2f 20 64 65 66 61 75 6c 74 29 20 3c 73   /// default) <s
2d170 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2d180 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
2d190 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   interface..    
2d1a0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
2d1b0 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
2d1c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2d1d0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2d1e0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2d1f0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2d200 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69  ule AllocateNati
2d210 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20  veModule()..    
2d220 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d230 20 20 20 72 65 74 75 72 6e 20 41 6c 6c 6f 63 61     return Alloca
2d240 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 47  teNativeModule(G
2d250 65 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d  etNativeModuleIm
2d260 70 6c 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  pl());..        
2d270 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2d280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2c0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
2d2d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2d2e0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f  EWORK..        /
2d2f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2d300 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65        /// Create
2d310 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20  s and returns a 
2d320 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 6f 62 74  memory block obt
2d330 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53  ained from the S
2d340 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
2d350 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20      /// library 
2d360 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
2d370 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2d380 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2d390 65 20 66 6f 72 20 74 68 69 73 0d 0a 20 20 20 20  e for this..    
2d3a0 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
2d3b0 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72 75 6e  nstance when run
2d3c0 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54  ning on the .NET
2d3d0 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
2d3e0 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rk...        ///
2d3f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2d400 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2d410 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2d420 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
2d430 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65  er to the native
2d440 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
2d450 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
2d460 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2d470 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
2d480 61 74 65 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63  ate IntPtr Alloc
2d490 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49  ateNativeModuleI
2d4a0 6e 74 65 72 6f 70 28 29 0d 0a 20 20 20 20 20 20  nterop()..      
2d4b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d4c0 20 69 66 20 28 70 4e 61 74 69 76 65 4d 6f 64 75   if (pNativeModu
2d4d0 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
2d4e0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2d4f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d500 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2d510 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
2d520 4e 6f 20 65 61 73 79 20 77 61 79 20 74 6f 20 64  No easy way to d
2d530 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a  etermine the siz
2d540 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d  e of the native.
2d550 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d560 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74 65   //       sqlite
2d570 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2d580 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  e when running o
2d590 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20  n the .NET..    
2d5a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2d5b0 20 20 20 20 20 43 6f 6d 70 61 63 74 20 46 72 61       Compact Fra
2d5c0 6d 65 77 6f 72 6b 3b 20 74 68 65 72 65 66 6f 72  mework; therefor
2d5d0 65 2c 20 6a 75 73 74 20 62 61 73 65 20 74 68 65  e, just base the
2d5e0 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20   size..         
2d5f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2d600 6f 6e 20 77 68 61 74 20 77 65 20 6b 6e 6f 77 3a  on what we know:
2d610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d620 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2d630 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54        //       T
2d640 68 65 72 65 20 69 73 20 6f 6e 65 20 69 6e 74 65  here is one inte
2d650 67 65 72 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ger member...   
2d660 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2d670 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65 20        There are 
2d680 32 32 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e  22 function poin
2d690 74 65 72 20 6d 65 6d 62 65 72 73 2e 0d 0a 20 20  ter members...  
2d6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d6c0 20 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20    pNativeModule 
2d6d0 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
2d6e0 6c 6c 6f 63 61 74 65 28 32 33 20 2a 20 49 6e 74  llocate(23 * Int
2d6f0 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
2d700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2d710 20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20   (pNativeModule 
2d720 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
2d730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d740 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f       throw new O
2d750 75 74 4f 66 4d 65 6d 6f 72 79 45 78 63 65 70 74  utOfMemoryExcept
2d760 69 6f 6e 28 22 73 71 6c 69 74 65 33 5f 6d 6f 64  ion("sqlite3_mod
2d770 75 6c 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ule");..        
2d780 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2d790 20 20 20 20 20 72 65 74 75 72 6e 20 70 4e 61 74       return pNat
2d7a0 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20  iveModule;..    
2d7b0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
2d7c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2d7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d810 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2d820 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2d830 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
2d840 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  nd returns the n
2d850 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64  ative sqlite_mod
2d860 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75 73  ule structure us
2d870 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
2d880 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c   /// specified <
2d890 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2d8a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
2d8b0 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20  > interface..   
2d8c0 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
2d8d0 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
2d8e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2d8f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2d900 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
2d910 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
2d920 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
2d930 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2d940 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
2d950 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
2d960 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
2d970 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
2d980 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2d990 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2d9a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2d9b0 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  The native sqlit
2d9c0 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  e_module structu
2d9d0 72 65 20 75 73 69 6e 67 20 74 68 65 20 73 70 65  re using the spe
2d9e0 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20  cified..        
2d9f0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
2da00 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2da10 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65  le" /> interface
2da20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
2da30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2da40 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2da50 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65    private Unsafe
2da60 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2da70 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c  lite3_module All
2da80 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  ocateNativeModul
2da90 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2daa0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2dab0 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ule module..    
2dac0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2dad0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2dae0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d    nativeModule =
2daf0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2db00 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2db10 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 20 20 20 20  _module();..    
2db20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2db30 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20  dule.iVersion = 
2db40 44 65 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72  DefaultModuleVer
2db50 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sion;....       
2db60 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2db70 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2db80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2db90 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2dba0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d 20  odule.xCreate = 
2dbb0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2dbc0 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65 28  Methods.xCreate(
2dbd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dbe0 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 72 65       module.xCre
2dbf0 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ate);....       
2dc00 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2dc10 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d  odule.xConnect =
2dc20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2dc30 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63  eMethods.xConnec
2dc40 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2dc50 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2dc60 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  Connect);....   
2dc70 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2dc80 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49  iveModule.xBestI
2dc90 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66  ndex = new Unsaf
2dca0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2dcb0 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
2dcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dcd0 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  module.xBestInde
2dce0 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
2dcf0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2dd00 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
2dd10 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2dd20 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f  veMethods.xDisco
2dd30 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
2dd40 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2dd50 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b  le.xDisconnect);
2dd60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2dd70 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2dd80 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20  .xDestroy = new 
2dd90 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2dda0 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20  ods.xDestroy(.. 
2ddb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ddc0 20 20 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72     module.xDestr
2ddd0 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  oy);....        
2dde0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2ddf0 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77  dule.xOpen = new
2de00 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2de10 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20  hods.xOpen(..   
2de20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de30 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 29 3b 0d   module.xOpen);.
2de40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2de50 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2de60 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73  xClose = new Uns
2de70 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2de80 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20  .xClose(..      
2de90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2dea0 64 75 6c 65 2e 78 43 6c 6f 73 65 29 3b 0d 0a 0d  dule.xClose);...
2deb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dec0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
2ded0 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61  ilter = new Unsa
2dee0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2def0 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
2df00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2df10 64 75 6c 65 2e 78 46 69 6c 74 65 72 29 3b 0d 0a  dule.xFilter);..
2df20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2df30 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2df40 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  Next = new Unsaf
2df50 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2df60 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20  Next(..         
2df70 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2df80 65 2e 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  e.xNext);....   
2df90 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2dfa0 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  iveModule.xEof =
2dfb0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2dfc0 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 6d 6f  eMethods.xEof(mo
2dfd0 64 75 6c 65 2e 78 45 6f 66 29 3b 0d 0a 0d 0a 20  dule.xEof);.... 
2dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2dff0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
2e000 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  umn = new Unsafe
2e010 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
2e020 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
2e030 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2e040 6c 65 2e 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a  le.xColumn);....
2e050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e060 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2e070 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  wId = new Unsafe
2e080 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2e090 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20  owId(..         
2e0a0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2e0b0 65 2e 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20  e.xRowId);....  
2e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e0d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
2e0e0 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  te = new UnsafeN
2e0f0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55 70  ativeMethods.xUp
2e100 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  date(..         
2e110 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2e120 65 2e 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20  e.xUpdate);.... 
2e130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2e140 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67  ativeModule.xBeg
2e150 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  in = new UnsafeN
2e160 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65  ativeMethods.xBe
2e170 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  gin(..          
2e180 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2e190 2e 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20  .xBegin);....   
2e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2e1b0 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20  iveModule.xSync 
2e1c0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e1d0 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28  veMethods.xSync(
2e1e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e1f0 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53 79        module.xSy
2e200 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nc);....        
2e210 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e220 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e  dule.xCommit = n
2e230 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e240 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d  ethods.xCommit(.
2e250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e260 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d       module.xCom
2e270 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  mit);....       
2e280 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2e290 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20  odule.xRollback 
2e2a0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e2b0 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62  veMethods.xRollb
2e2c0 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
2e2d0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2e2e0 2e 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a  .xRollback);....
2e2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e300 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  nativeModule.xFi
2e310 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77  ndFunction = new
2e320 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e330 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74 69  hods.xFindFuncti
2e340 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
2e350 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2e360 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d  xFindFunction);.
2e370 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e380 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2e390 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e  xRename = new Un
2e3a0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e3b0 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  s.xRename(..    
2e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3d0 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 29 3b  module.xRename);
2e3e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e3f0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e400 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65  .xSavepoint = ne
2e410 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e420 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74  thods.xSavepoint
2e430 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e440 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53         module.xS
2e450 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20  avepoint);....  
2e460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e470 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
2e480 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ase = new Unsafe
2e490 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2e4a0 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
2e4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2e4c0 75 6c 65 2e 78 52 65 6c 65 61 73 65 29 3b 0d 0a  ule.xRelease);..
2e4d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e4e0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2e4f0 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77  RollbackTo = new
2e500 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e510 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  hods.xRollbackTo
2e520 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e530 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
2e540 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20  ollbackTo);..   
2e550 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2e560 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
2e570 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2e580 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2e590 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
2e5a0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2e5b0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65  tiveMethods.xCre
2e5c0 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
2e5d0 20 20 20 20 20 20 20 20 20 20 78 43 72 65 61 74            xCreat
2e5e0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2e5f0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2e600 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e  ule.xConnect = n
2e610 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e620 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28  ethods.xConnect(
2e630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e640 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 29 3b        xConnect);
2e650 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e660 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e670 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e 65  .xBestIndex = ne
2e680 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e690 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65 78  thods.xBestIndex
2e6a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e6b0 20 20 20 20 20 20 20 78 42 65 73 74 49 6e 64 65         xBestInde
2e6c0 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
2e6d0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2e6e0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
2e6f0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e700 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f  veMethods.xDisco
2e710 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
2e720 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69 73              xDis
2e730 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  connect);....   
2e740 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2e750 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
2e760 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  oy = new UnsafeN
2e770 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65  ativeMethods.xDe
2e780 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
2e790 20 20 20 20 20 20 20 20 20 20 20 20 78 44 65 73              xDes
2e7a0 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  troy);....      
2e7b0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e7c0 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e  Module.xOpen = n
2e7d0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e7e0 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 78 4f 70  ethods.xOpen(xOp
2e7f0 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  en);..          
2e800 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2e810 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20  le.xClose = new 
2e820 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2e830 6f 64 73 2e 78 43 6c 6f 73 65 28 78 43 6c 6f 73  ods.xClose(xClos
2e840 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2e850 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2e860 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65  ule.xFilter = ne
2e870 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e880 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a  thods.xFilter(..
2e890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e8a0 20 20 20 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d      xFilter);...
2e8b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e8c0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e   nativeModule.xN
2e8d0 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ext = new Unsafe
2e8e0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e  NativeMethods.xN
2e8f0 65 78 74 28 78 4e 65 78 74 29 3b 0d 0a 20 20 20  ext(xNext);..   
2e900 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2e910 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  iveModule.xEof =
2e920 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2e930 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 78 45  eMethods.xEof(xE
2e940 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  of);....        
2e950 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e960 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e  dule.xColumn = n
2e970 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e980 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d  ethods.xColumn(.
2e990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e9a0 20 20 20 20 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a       xColumn);..
2e9b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e9c0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2e9d0 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61  RowId = new Unsa
2e9e0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e9f0 78 52 6f 77 49 64 28 78 52 6f 77 49 64 29 3b 0d  xRowId(xRowId);.
2ea00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ea10 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2ea20 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55 6e  xUpdate = new Un
2ea30 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2ea40 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20  s.xUpdate(..    
2ea50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea60 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xUpdate);....   
2ea70 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2ea80 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
2ea90 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2eaa0 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69  iveMethods.xBegi
2eab0 6e 28 78 42 65 67 69 6e 29 3b 0d 0a 20 20 20 20  n(xBegin);..    
2eac0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2ead0 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d  veModule.xSync =
2eae0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2eaf0 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 78  eMethods.xSync(x
2eb00 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Sync);....      
2eb10 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2eb20 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d  Module.xCommit =
2eb30 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2eb40 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74  eMethods.xCommit
2eb50 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2eb60 20 20 20 20 20 20 20 78 43 6f 6d 6d 69 74 29 3b         xCommit);
2eb70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2eb80 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2eb90 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77  .xRollback = new
2eba0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2ebb0 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d  hods.xRollback(.
2ebc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ebd0 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 29 3b       xRollback);
2ebe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ebf0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2ec00 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d  .xFindFunction =
2ec10 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2ec20 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75  eMethods.xFindFu
2ec30 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
2ec40 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69               xFi
2ec50 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a  ndFunction);....
2ec60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ec70 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  nativeModule.xRe
2ec80 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  name = new Unsaf
2ec90 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2eca0 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
2ecb0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65               xRe
2ecc0 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
2ecd0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2ece0 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
2ecf0 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
2ed00 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76  tiveMethods.xSav
2ed10 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  epoint(..       
2ed20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 53 61               xSa
2ed30 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20  vepoint);....   
2ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2ed50 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
2ed60 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  se = new UnsafeN
2ed70 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65  ativeMethods.xRe
2ed80 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20  lease(..        
2ed90 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65 6c              xRel
2eda0 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ease);....      
2edb0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2edc0 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2edd0 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  To = new UnsafeN
2ede0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f  ativeMethods.xRo
2edf0 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
2ee00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2ee10 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20  RollbackTo);..  
2ee20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2ee30 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2ee40 6e 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d  n nativeModule;.
2ee50 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2ee60 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ee70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2eeb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2eec0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2eed0 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 20 63 6f  /// Creates a co
2eee0 70 79 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  py of the specif
2eef0 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ied..        ///
2ef00 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
2ef10 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2ef20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20  sqlite3_module" 
2ef30 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
2ef40 63 65 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce,..        ///
2ef50 20 75 73 69 6e 67 20 64 65 66 61 75 6c 74 20 69   using default i
2ef60 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66  mplementations f
2ef70 6f 72 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 64  or the contained
2ef80 20 64 65 6c 65 67 61 74 65 73 20 77 68 65 6e 0d   delegates when.
2ef90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 63  .        /// nec
2efa0 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  essary...       
2efb0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2efc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2efd0 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
2efe0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2eff0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 55  The <see cref="U
2f000 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2f010 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
2f020 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20  e" /> object..  
2f030 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
2f040 63 65 20 74 6f 20 63 6f 70 79 2e 0d 0a 20 20 20  ce to copy...   
2f050 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2f060 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2f070 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2f080 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73    /// The new <s
2f090 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
2f0a0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2f0b0 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20  ite3_module" /> 
2f0c0 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
2f0d0 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  /// instance... 
2f0e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2f0f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
2f100 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74  rivate UnsafeNat
2f110 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2f120 65 33 5f 6d 6f 64 75 6c 65 20 43 6f 70 79 4e 61  e3_module CopyNa
2f130 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20  tiveModule(..   
2f140 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
2f150 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2f160 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75  ite3_module modu
2f170 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
2f180 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2f190 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2f1a0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2f1b0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 65 77  lite3_module new
2f1c0 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20  Module =..      
2f1d0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e            new Un
2f1e0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2f1f0 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
2f200 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
2f210 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 69 56 65     newModule.iVe
2f220 72 73 69 6f 6e 20 3d 20 6d 6f 64 75 6c 65 2e 69  rsion = module.i
2f230 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20  Version;....    
2f240 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
2f250 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20  e.xCreate = new 
2f260 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2f270 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20  ods.xCreate(..  
2f280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
2f290 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 21 3d  odule.xCreate !=
2f2a0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2f2b0 78 43 72 65 61 74 65 20 3a 20 78 43 72 65 61 74  xCreate : xCreat
2f2c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2f2d0 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f     newModule.xCo
2f2e0 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61  nnect = new Unsa
2f2f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f300 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
2f310 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2f320 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 21 3d 20 6e  le.xConnect != n
2f330 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43  ull) ? module.xC
2f340 6f 6e 6e 65 63 74 20 3a 20 78 43 6f 6e 6e 65 63  onnect : xConnec
2f350 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
2f360 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 42 65     newModule.xBe
2f370 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e  stIndex = new Un
2f380 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2f390 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  s.xBestIndex(.. 
2f3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2f3b0 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  module.xBestInde
2f3c0 78 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  x != null) ? mod
2f3d0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3a  ule.xBestIndex :
2f3e0 20 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d   xBestIndex);...
2f3f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2f400 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
2f410 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ct = new UnsafeN
2f420 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69  ativeMethods.xDi
2f430 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
2f440 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2f450 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 21  le.xDisconnect !
2f460 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2f470 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3a 0d 0a  .xDisconnect :..
2f480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f490 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d  xDisconnect);...
2f4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2f4b0 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20  Module.xDestroy 
2f4c0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f4d0 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72  veMethods.xDestr
2f4e0 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy(..           
2f4f0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44 65       (module.xDe
2f500 73 74 72 6f 79 20 21 3d 20 6e 75 6c 6c 29 20 3f  stroy != null) ?
2f510 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79   module.xDestroy
2f520 20 3a 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d   : xDestroy);...
2f530 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2f540 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e  Module.xOpen = n
2f550 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f560 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20  ethods.xOpen(.. 
2f570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2f580 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 21 3d 20  module.xOpen != 
2f590 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2f5a0 4f 70 65 6e 20 3a 20 78 4f 70 65 6e 29 3b 0d 0a  Open : xOpen);..
2f5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2f5c0 77 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d  wModule.xClose =
2f5d0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f5e0 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28  eMethods.xClose(
2f5f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f600 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65    (module.xClose
2f610 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
2f620 6c 65 2e 78 43 6c 6f 73 65 20 3a 20 78 43 6c 6f  le.xClose : xClo
2f630 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
2f640 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 46      newModule.xF
2f650 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61  ilter = new Unsa
2f660 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f670 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
2f680 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
2f690 65 2e 78 46 69 6c 74 65 72 20 21 3d 20 6e 75 6c  e.xFilter != nul
2f6a0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6c  l) ? module.xFil
2f6b0 74 65 72 20 3a 20 78 46 69 6c 74 65 72 29 3b 0d  ter : xFilter);.
2f6c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2f6d0 65 77 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d  ewModule.xNext =
2f6e0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f6f0 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d  eMethods.xNext(.
2f700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f710 20 28 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 21   (module.xNext !
2f720 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2f730 2e 78 4e 65 78 74 20 3a 20 78 4e 65 78 74 29 3b  .xNext : xNext);
2f740 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f750 6e 65 77 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d  newModule.xEof =
2f760 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f770 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 0d 0a  eMethods.xEof(..
2f780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f790 28 6d 6f 64 75 6c 65 2e 78 45 6f 66 20 21 3d 20  (module.xEof != 
2f7a0 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2f7b0 45 6f 66 20 3a 20 78 45 6f 66 29 3b 0d 0a 0d 0a  Eof : xEof);....
2f7c0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2f7d0 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20  odule.xColumn = 
2f7e0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2f7f0 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28  Methods.xColumn(
2f800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f810 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d    (module.xColum
2f820 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  n != null) ? mod
2f830 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3a 20 78 43  ule.xColumn : xC
2f840 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  olumn);....     
2f850 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2f860 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e  .xRowId = new Un
2f870 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2f880 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20  s.xRowId(..     
2f890 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2f8a0 6c 65 2e 78 52 6f 77 49 64 20 21 3d 20 6e 75 6c  le.xRowId != nul
2f8b0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 77  l) ? module.xRow
2f8c0 49 64 20 3a 20 78 52 6f 77 49 64 29 3b 0d 0a 0d  Id : xRowId);...
2f8d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2f8e0 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d  Module.xUpdate =
2f8f0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f900 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65  eMethods.xUpdate
2f910 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f920 20 20 20 28 6d 6f 64 75 6c 65 2e 78 55 70 64 61     (module.xUpda
2f930 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  te != null) ? mo
2f940 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3a 20 78  dule.xUpdate : x
2f950 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20  Update);....    
2f960 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
2f970 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55  e.xBegin = new U
2f980 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2f990 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  ds.xBegin(..    
2f9a0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2f9b0 75 6c 65 2e 78 42 65 67 69 6e 20 21 3d 20 6e 75  ule.xBegin != nu
2f9c0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65  ll) ? module.xBe
2f9d0 67 69 6e 20 3a 20 78 42 65 67 69 6e 29 3b 0d 0a  gin : xBegin);..
2f9e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2f9f0 77 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20  wModule.xSync = 
2fa00 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2fa10 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a  Methods.xSync(..
2fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa30 28 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 21 3d  (module.xSync !=
2fa40 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2fa50 78 53 79 6e 63 20 3a 20 78 53 79 6e 63 29 3b 0d  xSync : xSync);.
2fa60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2fa70 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  ewModule.xCommit
2fa80 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2fa90 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d  iveMethods.xComm
2faa0 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it(..           
2fab0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f       (module.xCo
2fac0 6d 6d 69 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  mmit != null) ? 
2fad0 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3a  module.xCommit :
2fae0 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20   xCommit);....  
2faf0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2fb00 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20  ule.xRollback = 
2fb10 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2fb20 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63  Methods.xRollbac
2fb30 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
2fb40 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c      (module.xRol
2fb50 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20 3f  lback != null) ?
2fb60 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63   module.xRollbac
2fb70 6b 20 3a 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d  k : xRollback);.
2fb80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2fb90 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  ewModule.xFindFu
2fba0 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73  nction = new Uns
2fbb0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2fbc0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  .xFindFunction(.
2fbd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fbe0 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75   (module.xFindFu
2fbf0 6e 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20  nction != null) 
2fc00 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  ? module.xFindFu
2fc10 6e 63 74 69 6f 6e 20 3a 0d 0a 20 20 20 20 20 20  nction :..      
2fc20 20 20 20 20 20 20 20 20 20 20 78 46 69 6e 64 46            xFindF
2fc30 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20  unction);....   
2fc40 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
2fc50 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77  le.xRename = new
2fc60 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2fc70 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20  hods.xRename(.. 
2fc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2fc90 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 21  module.xRename !
2fca0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2fcb0 2e 78 52 65 6e 61 6d 65 20 3a 20 78 52 65 6e 61  .xRename : xRena
2fcc0 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
2fcd0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 53      newModule.xS
2fce0 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55  avepoint = new U
2fcf0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2fd00 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  ds.xSavepoint(..
2fd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd20 28 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  (module.xSavepoi
2fd30 6e 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  nt != null) ? mo
2fd40 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20  dule.xSavepoint 
2fd50 3a 20 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a  : xSavepoint);..
2fd60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2fd70 77 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  wModule.xRelease
2fd80 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2fd90 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65  iveMethods.xRele
2fda0 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
2fdb0 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52        (module.xR
2fdc0 65 6c 65 61 73 65 20 21 3d 20 6e 75 6c 6c 29 20  elease != null) 
2fdd0 3f 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  ? module.xReleas
2fde0 65 20 3a 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a  e : xRelease);..
2fdf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2fe00 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  wModule.xRollbac
2fe10 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  kTo = new Unsafe
2fe20 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2fe30 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
2fe40 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2fe50 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  ule.xRollbackTo 
2fe60 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
2fe70 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3a 0d  e.xRollbackTo :.
2fe80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fe90 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a   xRollbackTo);..
2fea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2feb0 74 75 72 6e 20 6e 65 77 4d 6f 64 75 6c 65 3b 0d  turn newModule;.
2fec0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2fed0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ff20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2ff30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2ff40 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e 65 20 6f 66  /// Calls one of
2ff50 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
2ff60 6c 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  le initializatio
2ff70 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  n methods...    
2ff80 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2ff90 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2ffa0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 72 65  <param name="cre
2ffb0 61 74 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ate">..        /
2ffc0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 63  // Non-zero to c
2ffd0 61 6c 6c 20 74 68 65 20 3c 73 65 65 20 63 72 65  all the <see cre
2ffe0 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
2fff0 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
30000 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
30010 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69 73  method; otherwis
30020 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  e, the <see cref
30030 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
30040 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
30050 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
30060 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 63  method will be c
30070 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  alled...        
30080 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
30090 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
300a0 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20   name="pDb">..  
300b0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
300c0 74 69 76 65 20 64 61 74 61 62 61 73 65 20 63 6f  tive database co
300d0 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e  nnection handle.
300e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
300f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
30100 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
30110 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20  "pAux">..       
30120 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
30130 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  l native pointer
30140 20 76 61 6c 75 65 20 74 68 61 74 20 77 61 73 20   value that was 
30150 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d  provided to the.
30160 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
30170 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75  ite3_create_modu
30180 6c 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 63 72  le(), sqlite3_cr
30190 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29  eate_module_v2()
301a0 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   or..        ///
301b0 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
301c0 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
301d0 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  e() functions...
301e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
301f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
30200 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
30210 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rgc">..        /
30220 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
30230 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20   arguments from 
30240 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
30250 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
30260 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
30270 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
30280 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
30290 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
302a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61      /// The arra
302b0 79 20 6f 66 20 73 74 72 69 6e 67 20 61 72 67 75  y of string argu
302c0 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43  ments from the C
302d0 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
302e0 42 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  BLE..        ///
302f0 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20   statement...   
30300 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
30310 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
30320 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
30330 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
30340 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
30350 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
30360 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
30370 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e  o point to the n
30380 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ewly..        //
30390 2f 20 63 72 65 61 74 65 64 20 6e 61 74 69 76 65  / created native
303a0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
303b0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
303c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
303d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
303e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
303f0 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20  "pError">..     
30400 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c     /// Upon fail
30410 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ure, this parame
30420 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
30430 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f  fied to point to
30440 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20   the error..    
30450 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2c      /// message,
30460 20 77 69 74 68 20 74 68 65 20 75 6e 64 65 72 6c   with the underl
30470 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76 69  ying memory havi
30480 6e 67 20 62 65 65 6e 20 6f 62 74 61 69 6e 65 64  ng been obtained
30490 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
304a0 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d     /// sqlite3_m
304b0 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e  alloc() function
304c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
304d0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
304e0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
304f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
30500 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
30510 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
30520 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
30530 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
30540 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
30550 6f 64 65 20 43 72 65 61 74 65 4f 72 43 6f 6e 6e  ode CreateOrConn
30560 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
30570 20 20 62 6f 6f 6c 20 63 72 65 61 74 65 2c 0d 0a    bool create,..
30580 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
30590 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
305a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
305b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
305c0 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
305d0 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
305e0 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
305f0 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
30600 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
30610 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
30620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
30630 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
30640 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
30650 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30660 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
30670 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 53 51  ng fileName = SQ
30680 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e  LiteString.Strin
30690 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
306a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
306b0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
306c0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
306d0 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 70 44  3_db_filename(pD
306e0 62 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29  b, IntPtr.Zero))
306f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
30700 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69       using (SQLi
30710 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
30720 6e 65 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51  nection = new SQ
30730 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 0d  LiteConnection(.
30740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30750 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 66 69           pDb, fi
30760 6c 65 4e 61 6d 65 2c 20 66 61 6c 73 65 29 29 0d  leName, false)).
30770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30780 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30790 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
307a0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
307b0 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
307c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
307d0 72 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75 6c  ring error = nul
307e0 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
307f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 63            if ((c
30800 72 65 61 74 65 20 26 26 20 43 72 65 61 74 65 28  reate && Create(
30810 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70 41 75 78  connection, pAux
30820 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
30840 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69  QLiteString.Stri
30850 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38 53  ngArrayFromUtf8S
30860 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 61 72 67  izeAndIntPtr(arg
30870 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
30880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30890 61 72 67 76 29 2c 20 72 65 66 20 74 61 62 6c 65  argv), ref table
308a0 2c 20 72 65 66 20 65 72 72 6f 72 29 20 3d 3d 20  , ref error) == 
308b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
308c0 4f 6b 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  Ok) ||..        
308d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308e0 28 21 63 72 65 61 74 65 20 26 26 20 43 6f 6e 6e  (!create && Conn
308f0 65 63 74 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20  ect(connection, 
30900 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  pAux,..         
30910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30920 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e     SQLiteString.
30930 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55  StringArrayFromU
30940 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74 72  tf8SizeAndIntPtr
30950 28 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20  (argc,..        
30960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30970 20 20 20 20 61 72 67 76 29 2c 20 72 65 66 20 74      argv), ref t
30980 61 62 6c 65 2c 20 72 65 66 20 65 72 72 6f 72 29  able, ref error)
30990 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   == SQLiteErrorC
309a0 6f 64 65 2e 4f 6b 29 29 0d 0a 20 20 20 20 20 20  ode.Ok))..      
309b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
309c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
309d0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62           if (tab
309e0 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le != null)..   
309f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a00 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a20 20 20 20 20 70 56 74 61 62 20 3d 20 54 61 62 6c      pVtab = Tabl
30a30 65 54 6f 49 6e 74 50 74 72 28 74 61 62 6c 65 29  eToIntPtr(table)
30a40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
30a60 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
30a70 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20  rCode.Ok;..     
30a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a90 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
30aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
30ab0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
30ac0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ae0 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f             pErro
30af0 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  r = SQLiteString
30b00 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
30b10 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
30b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b30 20 20 20 20 20 20 20 20 22 6e 6f 20 74 61 62 6c          "no tabl
30b40 65 20 77 61 73 20 63 72 65 61 74 65 64 22 29 3b  e was created");
30b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30b60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30b90 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
30ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30bb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
30bd0 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
30be0 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
30bf0 6d 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d  mString(error);.
30c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30c10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
30c20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30c30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30c40 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
30c50 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54  eption e) /* NOT
30c60 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c  E: Must catch AL
30c70 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  L. */..         
30c80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
30c90 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53        pError = S
30ca0 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38  QLiteString.Utf8
30cb0 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
30cc0 28 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d  (e.ToString());.
30cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
30ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
30cf0 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
30d00 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
30d10 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
30d20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
30d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
30d70 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
30d80 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
30d90 43 61 6c 6c 73 20 6f 6e 65 20 6f 66 20 74 68 65  Calls one of the
30da0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66   virtual table f
30db0 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68  inalization meth
30dc0 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ods...        //
30dd0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
30de0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
30df0 20 6e 61 6d 65 3d 22 64 65 73 74 72 6f 79 22 3e   name="destroy">
30e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
30e10 6e 2d 7a 65 72 6f 20 74 6f 20 63 61 6c 6c 20 74  n-zero to call t
30e20 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
30e30 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
30e40 6c 65 2e 44 65 73 74 72 6f 79 22 20 2f 3e 0d 0a  le.Destroy" />..
30e50 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
30e60 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  od; otherwise, t
30e70 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
30e80 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
30e90 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
30ea0 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  Disconnect" /> m
30eb0 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 0d 0a 20  ethod will be.. 
30ec0 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65         /// calle
30ed0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
30ee0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
30ef0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
30f00 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
30f10 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
30f20 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
30f30 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
30f40 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
30f50 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
30f60 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
30f70 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
30f80 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
30f90 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
30fa0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
30fb0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
30fc0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
30fd0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
30fe0 6f 64 65 20 44 65 73 74 72 6f 79 4f 72 44 69 73  ode DestroyOrDis
30ff0 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
31000 20 20 20 20 20 20 62 6f 6f 6c 20 64 65 73 74 72        bool destr
31010 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy,..           
31020 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
31030 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
31040 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31050 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
31060 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31070 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
31080 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
31090 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74  e = TableFromInt
310a0 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  Ptr(pVtab);.... 
310b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
310c0 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c  f (table != null
310d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
310e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
310f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 64            if ((d
31100 65 73 74 72 6f 79 20 26 26 20 28 44 65 73 74 72  estroy && (Destr
31110 6f 79 28 74 61 62 6c 65 29 20 3d 3d 20 53 51 4c  oy(table) == SQL
31120 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
31130 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
31140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 21                (!
31150 64 65 73 74 72 6f 79 20 26 26 20 28 44 69 73 63  destroy && (Disc
31160 6f 6e 6e 65 63 74 28 74 61 62 6c 65 29 20 3d 3d  onnect(table) ==
31170 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
31180 2e 4f 6b 29 29 29 0d 0a 20 20 20 20 20 20 20 20  .Ok)))..        
31190 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
311a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
311b0 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65         if (table
311c0 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
311d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
311e0 20 20 20 20 20 20 20 20 74 61 62 6c 65 73 2e 52          tables.R
311f0 65 6d 6f 76 65 28 70 56 74 61 62 29 3b 0d 0a 0d  emove(pVtab);...
31200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31210 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
31220 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
31230 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Ok;..           
31240 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31250 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31260 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31270 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
31280 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a  (Exception e) /*
31290 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63   NOTE: Must catc
312a0 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20  h ALL. */..     
312b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
312c0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
312d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
312e0 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20 70   NOTE: At this p
312f0 6f 69 6e 74 2c 20 74 68 65 72 65 20 69 73 20 6e  oint, there is n
31300 6f 20 77 61 79 20 74 6f 20 72 65 70 6f 72 74 20  o way to report 
31310 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  the error..     
31320 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
31330 20 20 20 20 63 6f 6e 64 69 74 69 6f 6e 20 62 61      condition ba
31340 63 6b 20 74 6f 20 74 68 65 20 63 61 6c 6c 65 72  ck to the caller
31350 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 75 73 65  ; therefore, use
31360 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
31370 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
31380 6f 67 67 69 6e 67 20 66 61 63 69 6c 69 74 79 20  ogging facility 
31390 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20  instead...      
313a0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
313b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
313c0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
313d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
313e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4c 6f            if (Lo
313f0 67 45 78 63 65 70 74 69 6f 6e 73 4e 6f 54 68 72  gExceptionsNoThr
31400 6f 77 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow)..           
31410 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31430 20 20 20 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d      /* throw */.
31440 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31450 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c           SQLiteL
31460 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51  og.LogMessage(SQ
31470 4c 69 74 65 42 61 73 65 2e 43 4f 52 5f 45 5f 45  LiteBase.COR_E_E
31480 58 43 45 50 54 49 4f 4e 2c 0d 0a 20 20 20 20 20  XCEPTION,..     
31490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314a0 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
314b0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
314c0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
314d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314e0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
314f0 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
31500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31510 20 20 20 20 20 20 20 20 20 22 43 61 75 67 68 74           "Caught
31520 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22   exception in \"
31530 7b 30 7d 5c 22 20 6d 65 74 68 6f 64 3a 20 7b 31  {0}\" method: {1
31540 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
31550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31560 20 64 65 73 74 72 6f 79 20 3f 20 22 78 44 65 73   destroy ? "xDes
31570 74 72 6f 79 22 20 3a 20 22 78 44 69 73 63 6f 6e  troy" : "xDiscon
31580 6e 65 63 74 22 2c 20 65 29 29 3b 0d 0a 20 20 20  nect", e));..   
31590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
315b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
315c0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
315d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
315e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
315f0 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
31600 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
31610 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
31620 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
31630 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
31640 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31650 20 20 20 20 20 20 20 20 20 20 20 46 72 65 65 54             FreeT
31660 61 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20 20  able(pVtab);..  
31670 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
31680 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
31690 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
316a0 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
316b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
316c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31700 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
31710 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74 69 63    #region Static
31720 20 45 72 72 6f 72 20 48 61 6e 64 6c 69 6e 67 20   Error Handling 
31730 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
31740 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
31750 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
31760 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20  // Arranges for 
31770 74 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72  the specified er
31780 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62  ror message to b
31790 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68  e placed into th
317a0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a  e..        /// z
317b0 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20  ErrMsg field of 
317c0 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  a sqlite3_vtab d
317d0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
317e0 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20  , freeing the.. 
317f0 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74         /// exist
31800 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ing error messag
31810 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20  e, if any...    
31820 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
31830 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
31840 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64  <param name="mod
31850 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ule">..        /
31860 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
31870 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
31880 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
31890 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a  ce to be used...
318a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
318b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
318c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
318d0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
318e0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
318f0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
31900 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
31910 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
31920 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
31930 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
31940 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f   <param name="lo
31950 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20  gErrors">..     
31960 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
31970 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65  if this error me
31980 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73  ssage should als
31990 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e  o be logged usin
319a0 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
319b0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
319c0 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73  LiteLog" /> clas
319d0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
319e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
319f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
31a00 65 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  e="logExceptions
31a10 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
31a20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67  Non-zero if caug
31a30 68 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68  ht exceptions sh
31a40 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75  ould be logged u
31a50 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
31a60 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
31a70 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63  "SQLiteLog" /> c
31a80 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
31a90 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
31aa0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
31ab0 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20  name="error">.. 
31ac0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65         /// The e
31ad0 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
31ae0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
31af0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
31b00 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
31b10 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
31b20 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
31b30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
31b40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
31b50 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
31b60 6f 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f  ool SetTableErro
31b70 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
31b80 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64  SQLiteModule mod
31b90 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ule,..          
31ba0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
31bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
31bc0 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20  l logErrors,..  
31bd0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c            bool l
31be0 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20  ogExceptions,.. 
31bf0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
31c00 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20  g error..       
31c10 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
31c20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
31c30 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
31c40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31c50 20 20 20 69 66 20 28 6c 6f 67 45 72 72 6f 72 73     if (logErrors
31c60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
31c70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31c80 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
31c90 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53  Log.LogMessage(S
31ca0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
31cb0 72 72 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  rror,..         
31cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                 H
31cd0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
31ce0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
31cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d00 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
31d10 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
31d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31d30 20 20 20 20 20 20 20 20 20 22 56 69 72 74 75 61           "Virtua
31d40 6c 20 74 61 62 6c 65 20 65 72 72 6f 72 3a 20 7b  l table error: {
31d50 30 7d 22 2c 20 65 72 72 6f 72 29 29 3b 20 2f 2a  0}", error)); /*
31d60 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
31d70 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31d80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31d90 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
31da0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
31dc0 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
31dd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
31de0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
31df0 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c 73 65   success = false
31e00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ;..            I
31e10 6e 74 50 74 72 20 70 4e 65 77 45 72 72 6f 72 20  ntPtr pNewError 
31e20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
31e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
31e40 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
31e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31e60 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49    if (pVtab == I
31e70 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
31e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e90 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
31ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31eb0 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30    int offset = 0
31ec0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31ed0 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
31ee0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
31ef0 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
31f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
31f10 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69  ffset, IntPtr.Si
31f20 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29  ze, sizeof(int))
31f30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31f40 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
31f50 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
31f60 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
31f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
31f80 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
31f90 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  t), IntPtr.Size)
31fa0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31fb0 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 6c 64       IntPtr pOld
31fc0 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 4d 61  Error = SQLiteMa
31fd0 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
31fe0 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 29 3b  (pVtab, offset);
31ff0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32000 20 20 20 20 69 66 20 28 70 4f 6c 64 45 72 72 6f      if (pOldErro
32010 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r != IntPtr.Zero
32020 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
32030 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32040 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
32050 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 6c 64  Memory.Free(pOld
32060 45 72 72 6f 72 29 3b 20 70 4f 6c 64 45 72 72 6f  Error); pOldErro
32070 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  r = IntPtr.Zero;
32080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32090 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
320a0 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
320b0 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 70  pVtab, offset, p
320c0 4f 6c 64 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20  OldError);..    
320d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
320e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
320f0 20 69 66 20 28 65 72 72 6f 72 20 3d 3d 20 6e 75   if (error == nu
32100 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
32110 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
32120 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  true;....       
32130 20 20 20 20 20 20 20 20 20 70 4e 65 77 45 72 72           pNewErr
32140 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  or = SQLiteStrin
32150 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
32160 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d 0a  String(error);..
32170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32180 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
32190 69 74 65 49 6e 74 50 74 72 28 70 56 74 61 62 2c  iteIntPtr(pVtab,
321a0 20 6f 66 66 73 65 74 2c 20 70 4e 65 77 45 72 72   offset, pNewErr
321b0 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
321c0 20 20 20 20 20 20 73 75 63 63 65 73 73 20 3d 20        success = 
321d0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
321e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
321f0 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
32200 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d  on e) /* NOTE: M
32210 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a  ust catch ALL. *
32220 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  /..            {
32230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32240 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
32250 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
32270 20 28 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 29   (logExceptions)
32280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32290 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
322a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
322b0 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65   SQLiteLog.LogMe
322c0 73 73 61 67 65 28 53 51 4c 69 74 65 42 61 73 65  ssage(SQLiteBase
322d0 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e  .COR_E_EXCEPTION
322e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
322f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                 H
32300 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
32310 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
32320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32330 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
32340 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
32350 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
32360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32370 20 22 43 61 75 67 68 74 20 65 78 63 65 70 74 69   "Caught excepti
32380 6f 6e 20 69 6e 20 5c 22 53 65 74 54 61 62 6c 65  on in \"SetTable
32390 45 72 72 6f 72 5c 22 20 6d 65 74 68 6f 64 3a 20  Error\" method: 
323a0 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {0}",..         
323b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
323c0 20 20 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77     e)); /* throw
323d0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
323e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
323f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
32400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
32410 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
32420 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32430 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
32440 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
32450 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
32460 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
32470 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
32480 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
32490 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
324a0 20 20 20 69 66 20 28 21 73 75 63 63 65 73 73 20     if (!success 
324b0 26 26 20 28 70 4e 65 77 45 72 72 6f 72 20 21 3d  && (pNewError !=
324c0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a   IntPtr.Zero))..
324d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
324e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
324f0 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
32500 6f 72 79 2e 46 72 65 65 28 70 4e 65 77 45 72 72  ory.Free(pNewErr
32510 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
32520 20 20 20 20 20 20 20 20 20 20 70 4e 65 77 45 72            pNewEr
32530 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ror = IntPtr.Zer
32540 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
32550 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
32560 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
32570 20 20 20 20 72 65 74 75 72 6e 20 73 75 63 63 65      return succe
32580 73 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ss;..        }..
32590 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
325a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325e0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
325f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
32600 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73      /// Arranges
32610 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
32620 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ed error message
32630 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20 69 6e   to be placed in
32640 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
32650 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69 65 6c  /// zErrMsg fiel
32660 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33 5f 76  d of a sqlite3_v
32670 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
32680 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67 20 74  cture, freeing t
32690 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
326a0 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72 20 6d  existing error m
326b0 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d  essage, if any..
326c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
326d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
326e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
326f0 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20  ="module">..    
32700 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
32710 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
32720 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ule" /> object i
32730 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73  nstance to be us
32740 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
32750 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32760 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
32770 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
32780 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
32790 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
327a0 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
327b0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75  bject instance u
327c0 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  sed to..        
327d0 2f 2f 2f 20 6c 6f 6f 6b 75 70 20 74 68 65 20 6e  /// lookup the n
327e0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
327f0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
32800 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
32810 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
32820 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
32830 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
32840 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e  ame="logErrors">
32850 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
32860 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65  n-zero if this e
32870 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f  rror message sho
32880 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67  uld also be logg
32890 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  ed using the..  
328a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
328b0 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20  ref="SQLiteLog" 
328c0 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
328d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
328e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
328f0 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63  ram name="logExc
32900 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20  eptions">..     
32910 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
32920 69 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74  if caught except
32930 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c  ions should be l
32940 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d  ogged using the.
32950 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
32960 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f  e cref="SQLiteLo
32970 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  g" /> class...  
32980 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
32990 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
329a0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
329b0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
329c0 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73  / The error mess
329d0 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
329e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
329f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
32a00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
32a10 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
32a20 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
32a30 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
32a40 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
32a50 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 54 61  tatic bool SetTa
32a60 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
32a70 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
32a80 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20  ule module,..   
32a90 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
32aa0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
32ab0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
32ac0 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d  bool logErrors,.
32ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
32ae0 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c  l logExceptions,
32af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
32b00 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20  ring error..    
32b10 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
32b20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32b30 20 20 69 66 20 28 74 61 62 6c 65 20 3d 3d 20 6e    if (table == n
32b40 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
32b50 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
32b60 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
32b70 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 20     IntPtr pVtab 
32b80 3d 20 74 61 62 6c 65 2e 4e 61 74 69 76 65 48 61  = table.NativeHa
32b90 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ndle;....       
32ba0 20 20 20 20 20 69 66 20 28 70 56 74 61 62 20 3d       if (pVtab =
32bb0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
32bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32bd0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
32be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
32bf0 75 72 6e 20 53 65 74 54 61 62 6c 65 45 72 72 6f  urn SetTableErro
32c00 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
32c10 20 20 20 20 6d 6f 64 75 6c 65 2c 20 70 56 74 61      module, pVta
32c20 62 2c 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f  b, logErrors, lo
32c30 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 65 72 72  gExceptions, err
32c40 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  or);..        }.
32c50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
32c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ca0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
32cb0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
32cc0 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65       /// Arrange
32cd0 73 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  s for the specif
32ce0 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ied error messag
32cf0 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20 69  e to be placed i
32d00 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20  nto the..       
32d10 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69 65   /// zErrMsg fie
32d20 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33 5f  ld of a sqlite3_
32d30 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
32d40 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67 20  ucture, freeing 
32d50 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
32d60 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72 20   existing error 
32d70 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e  message, if any.
32d80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
32d90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
32da0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
32db0 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
32dc0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
32dd0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
32de0 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  dule" /> object 
32df0 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75  instance to be u
32e00 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
32e10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
32e20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
32e30 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
32e40 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
32e50 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
32e60 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
32e70 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65  ab_cursor derive
32e80 64 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20  d structure..   
32e90 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 20 74 6f       /// used to
32ea0 20 67 65 74 20 74 68 65 20 6e 61 74 69 76 65 20   get the native 
32eb0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
32ec0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
32ed0 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ved..        ///
32ee0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
32ef0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
32f00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32f10 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45  param name="logE
32f20 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20  rrors">..       
32f30 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
32f40 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73   this error mess
32f50 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20  age should also 
32f60 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20  be logged using 
32f70 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
32f80 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
32f90 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e  teLog" /> class.
32fa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
32fb0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
32fc0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
32fd0 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e  "logExceptions">
32fe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
32ff0 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74  n-zero if caught
33000 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75   exceptions shou
33010 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  ld be logged usi
33020 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
33030 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
33040 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
33050 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
33060 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
33070 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
33080 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
33090 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72       /// The err
330a0 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
330b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
330c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
330d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
330e0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75    /// Non-zero u
330f0 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  pon success...  
33100 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
33110 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
33120 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
33130 6c 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72  l SetCursorError
33140 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
33150 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  QLiteModule modu
33160 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
33170 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
33180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
33190 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20  ol logErrors,.. 
331a0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
331b0 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a  logExceptions,..
331c0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
331d0 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
331e0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
331f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
33200 69 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20 49  if (pCursor == I
33210 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
33220 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
33230 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
33240 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
33250 20 70 56 74 61 62 20 3d 20 54 61 62 6c 65 46 72   pVtab = TableFr
33260 6f 6d 43 75 72 73 6f 72 28 6d 6f 64 75 6c 65 2c  omCursor(module,
33270 20 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20   pCursor);....  
33280 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
33290 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  tab == IntPtr.Ze
332a0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
332b0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
332c0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
332d0 20 20 72 65 74 75 72 6e 20 53 65 74 54 61 62 6c    return SetTabl
332e0 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  eError(..       
332f0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2c           module,
33300 20 70 56 74 61 62 2c 20 6c 6f 67 45 72 72 6f 72   pVtab, logError
33310 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  s, logExceptions
33320 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  , error);..     
33330 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
33340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33380 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
33390 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
333a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 72  ..        /// Ar
333b0 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65 20 73  ranges for the s
333c0 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d  pecified error m
333d0 65 73 73 61 67 65 20 74 6f 20 62 65 20 70 6c 61  essage to be pla
333e0 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20  ced into the..  
333f0 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73        /// zErrMs
33400 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73 71 6c  g field of a sql
33410 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
33420 64 20 73 74 72 75 63 74 75 72 65 2c 20 66 72 65  d structure, fre
33430 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  eing the..      
33440 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67 20 65    /// existing e
33450 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69 66  rror message, if
33460 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f   any...        /
33470 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
33480 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
33490 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
334a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
334b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
334c0 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
334d0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f  ject instance to
334e0 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20   be used...     
334f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
33500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
33510 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72  ram name="cursor
33520 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
33530 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
33540 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
33550 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65  eCursor" /> obje
33560 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
33570 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
33580 20 6c 6f 6f 6b 75 70 20 74 68 65 20 6e 61 74 69   lookup the nati
33590 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
335a0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
335b0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
335c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
335d0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
335e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
335f0 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20  ="logErrors">.. 
33600 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
33610 65 72 6f 20 69 66 20 74 68 69 73 20 65 72 72 6f  ero if this erro
33620 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75 6c 64  r message should
33630 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64 20   also be logged 
33640 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
33650 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
33660 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
33670 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
33680 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
33690 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
336a0 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65 70 74   name="logExcept
336b0 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  ions">..        
336c0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
336d0 63 61 75 67 68 74 20 65 78 63 65 70 74 69 6f 6e  caught exception
336e0 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  s should be logg
336f0 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  ed using the..  
33700 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
33710 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20  ref="SQLiteLog" 
33720 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
33730 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
33740 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
33750 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22  ram name="error"
33760 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
33770 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  he error message
33780 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33790 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
337a0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
337b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
337c0 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73  zero upon succes
337d0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
337e0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
337f0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
33800 69 63 20 62 6f 6f 6c 20 53 65 74 43 75 72 73 6f  ic bool SetCurso
33810 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  rError(..       
33820 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c       SQLiteModul
33830 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20  e module,..     
33840 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
33850 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
33860 63 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  cursor,..       
33870 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72       bool logErr
33880 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
33890 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74    bool logExcept
338a0 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  ions,..         
338b0 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d     string error.
338c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
338d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
338e0 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f         if (curso
338f0 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  r == null)..    
33900 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
33910 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
33920 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
33930 70 43 75 72 73 6f 72 20 3d 20 63 75 72 73 6f 72  pCursor = cursor
33940 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a  .NativeHandle;..
33950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
33960 20 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74   (pCursor == Int
33970 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
33980 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
33990 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
339a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
339b0 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a  etCursorError(..
339c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
339d0 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f 72 2c  module, pCursor,
339e0 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f 67 45   logErrors, logE
339f0 78 63 65 70 74 69 6f 6e 73 2c 20 65 72 72 6f 72  xceptions, error
33a00 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
33a10 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
33a20 6e 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  n..        #endr
33a30 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
33a40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a80 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33a90 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74      #region Prot
33aa0 65 63 74 65 64 20 4d 65 6d 62 65 72 73 0d 0a 20  ected Members.. 
33ab0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d         #region M
33ac0 6f 64 75 6c 65 20 48 65 6c 70 65 72 20 4d 65 74  odule Helper Met
33ad0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
33ae0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
33af0 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
33b00 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
33b10 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
33b20 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
33b30 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   interface..    
33b40 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
33b50 74 61 74 69 6f 6e 20 74 6f 20 62 65 20 75 73 65  tation to be use
33b60 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20  d when creating 
33b70 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
33b80 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
33b90 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
33ba0 2e 20 20 44 65 72 69 76 65 64 20 63 6c 61 73 73  .  Derived class
33bb0 65 73 20 6d 61 79 20 6f 76 65 72 72 69 64 65 20  es may override 
33bc0 74 68 69 73 20 6d 65 74 68 6f 64 20 74 6f 20 73  this method to s
33bd0 75 70 70 6c 79 20 61 6e 0d 0a 20 20 20 20 20 20  upply an..      
33be0 20 20 2f 2f 2f 20 61 6c 74 65 72 6e 61 74 65 20    /// alternate 
33bf0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 66  implementation f
33c00 6f 72 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  or the <see cref
33c10 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
33c20 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20  odule" />..     
33c30 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65     /// interface
33c40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33c50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
33c60 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
33c70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
33c80 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
33c90 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
33ca0 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69  " /> interface i
33cb0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f  mplementation to
33cc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65  ..        /// be
33cd0 20 75 73 65 64 20 77 68 65 6e 20 70 6f 70 75 6c   used when popul
33ce0 61 74 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65  ating the native
33cf0 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
33d00 73 74 72 75 63 74 75 72 65 2e 20 20 49 66 0d 0a  structure.  If..
33d10 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
33d20 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20 69  returned value i
33d30 73 20 6e 75 6c 6c 2c 20 74 68 65 20 70 72 69 76  s null, the priv
33d40 61 74 65 20 6d 65 74 68 6f 64 73 20 70 72 6f 76  ate methods prov
33d50 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  ided by the..   
33d60 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
33d70 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
33d80 22 20 2f 3e 20 63 6c 61 73 73 20 61 6e 64 20 72  " /> class and r
33d90 65 6c 61 74 69 6e 67 20 74 6f 20 74 68 65 0d 0a  elating to the..
33da0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
33db0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
33dc0 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
33dd0 6e 74 65 72 66 61 63 65 20 20 77 69 6c 6c 20 62  nterface  will b
33de0 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 20  e used to..     
33df0 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 20 74 68     /// create th
33e00 65 20 6e 65 63 65 73 73 61 72 79 20 64 65 6c 65  e necessary dele
33e10 67 61 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  gates...        
33e20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
33e30 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
33e40 64 20 76 69 72 74 75 61 6c 20 49 53 51 4c 69 74  d virtual ISQLit
33e50 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 47 65  eNativeModule Ge
33e60 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d 70  tNativeModuleImp
33e70 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  l()..        {..
33e80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
33e90 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20 4e 4f 54 45  rn null; /* NOTE
33ea0 3a 20 55 73 65 20 74 68 65 20 62 75 69 6c 74 2d  : Use the built-
33eb0 69 6e 20 64 65 66 61 75 6c 74 20 64 65 6c 65 67  in default deleg
33ec0 61 74 65 73 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  ates. */..      
33ed0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
33ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f20 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33f30 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
33f40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65  .        /// Cre
33f50 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ates and returns
33f60 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
33f70 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
33f80 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ule" />..       
33f90 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 20 69   /// interface i
33fa0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 63 6f  mplementation co
33fb0 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74  rresponding to t
33fc0 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
33fd0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
33fe0 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
33ff0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
34000 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
34010 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
34020 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
34030 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
34040 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
34050 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
34060 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
34070 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
34080 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
34090 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74  rresponding to t
340a0 68 65 20 63 75 72 72 65 6e 74 20 3c 73 65 65 20  he current <see 
340b0 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
340c0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  le" /> object.. 
340d0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
340e0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
340f0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
34100 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
34110 76 69 72 74 75 61 6c 20 49 53 51 4c 69 74 65 4e  virtual ISQLiteN
34120 61 74 69 76 65 4d 6f 64 75 6c 65 20 43 72 65 61  ativeModule Crea
34130 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d  teNativeModuleIm
34140 70 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  pl()..        {.
34150 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
34160 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 4e 61  urn new SQLiteNa
34170 74 69 76 65 4d 6f 64 75 6c 65 28 74 68 69 73 29  tiveModule(this)
34180 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
34190 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
341a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
341b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
34200 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 54 61  region Native Ta
34210 62 6c 65 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ble Helper Metho
34220 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
34230 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
34240 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73     /// Allocates
34250 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65   a native sqlite
34260 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
34270 74 72 75 63 74 75 72 65 20 61 6e 64 20 72 65 74  tructure and ret
34280 75 72 6e 73 20 61 0d 0a 20 20 20 20 20 20 20 20  urns a..        
34290 2f 2f 2f 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  /// native point
342a0 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20  er to it...     
342b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
342c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
342d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
342e0 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76 65 20 70    /// A native p
342f0 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69  ointer to a nati
34300 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ve sqlite3_vtab 
34310 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
34320 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
34330 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
34340 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
34350 72 74 75 61 6c 20 49 6e 74 50 74 72 20 41 6c 6c  rtual IntPtr All
34360 6f 63 61 74 65 54 61 62 6c 65 28 29 0d 0a 20 20  ocateTable()..  
34370 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34380 20 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d 20       int size = 
34390 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74  Marshal.SizeOf(t
343a0 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
343b0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
343c0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
343d0 74 65 33 5f 76 74 61 62 29 29 3b 0d 0a 0d 0a 20  te3_vtab));.... 
343e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
343f0 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  n SQLiteMemory.A
34400 6c 6c 6f 63 61 74 65 28 73 69 7a 65 29 3b 0d 0a  llocate(size);..
34410 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
34420 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
34470 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
34480 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
34490 2f 2f 20 5a 65 72 6f 73 20 6f 75 74 20 74 68 65  // Zeros out the
344a0 20 66 69 65 6c 64 73 20 6f 66 20 61 20 6e 61 74   fields of a nat
344b0 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  ive sqlite3_vtab
344c0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
344d0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
344e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
344f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
34500 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
34510 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
34520 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
34530 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
34540 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
34550 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d 0a 20   structure to.. 
34560 20 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e         /// zero.
34570 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
34580 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
34590 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
345a0 6c 20 76 6f 69 64 20 5a 65 72 6f 54 61 62 6c 65  l void ZeroTable
345b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
345c0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
345d0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
345e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
345f0 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20     if (pVtab == 
34600 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
34610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
34620 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
34630 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20       int offset 
34640 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
34650 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
34660 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70 56  l.WriteIntPtr(pV
34670 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 49 6e 74  tab, offset, Int
34680 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
34690 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
346a0 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
346b0 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
346c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
346d0 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
346e0 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ize, sizeof(int)
346f0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
34700 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
34710 57 72 69 74 65 49 6e 74 33 32 28 70 56 74 61 62  WriteInt32(pVtab
34720 2c 20 6f 66 66 73 65 74 2c 20 30 29 3b 0d 0a 0d  , offset, 0);...
34730 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
34740 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
34750 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
34760 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
34770 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
34780 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
34790 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
347a0 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
347b0 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70  al.WriteIntPtr(p
347c0 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 49 6e  Vtab, offset, In
347d0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
347e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
347f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
34800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34830 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
34840 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
34850 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
34860 46 72 65 65 73 20 61 20 6e 61 74 69 76 65 20 73  Frees a native s
34870 71 6c 69 74 65 33 5f 76 74 61 62 20 73 74 72 75  qlite3_vtab stru
34880 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65 20  cture using the 
34890 70 72 6f 76 69 64 65 64 20 6e 61 74 69 76 65 0d  provided native.
348a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69  .        /// poi
348b0 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20  nter to it...   
348c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
348d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
348e0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
348f0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
34900 2f 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e  // A native poin
34910 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20  ter to a native 
34920 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
34930 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
34940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
34950 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
34960 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
34970 20 76 6f 69 64 20 46 72 65 65 54 61 62 6c 65 28   void FreeTable(
34980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
34990 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
349a0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
349b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
349c0 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28    SetTableError(
349d0 70 56 74 61 62 2c 20 6e 75 6c 6c 29 3b 0d 0a 20  pVtab, null);.. 
349e0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
349f0 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 56 74  eMemory.Free(pVt
34a00 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ab);..        }.
34a10 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
34a20 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
34a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a70 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34a80 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
34a90 20 43 75 72 73 6f 72 20 48 65 6c 70 65 72 20 4d   Cursor Helper M
34aa0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
34ab0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
34ac0 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63         /// Alloc
34ad0 61 74 65 73 20 61 20 6e 61 74 69 76 65 20 73 71  ates a native sq
34ae0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
34af0 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
34b00 75 72 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ure and..       
34b10 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 61 20 6e   /// returns a n
34b20 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
34b30 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   it...        //
34b40 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
34b50 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
34b60 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
34b70 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   A native pointe
34b80 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71  r to a native sq
34b90 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
34ba0 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
34bb0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
34bc0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
34bd0 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
34be0 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 41  virtual IntPtr A
34bf0 6c 6c 6f 63 61 74 65 43 75 72 73 6f 72 28 29 0d  llocateCursor().
34c00 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
34c10 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
34c20 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
34c30 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20  f(typeof(..     
34c40 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
34c50 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
34c60 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
34c70 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  or));....       
34c80 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
34c90 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74  teMemory.Allocat
34ca0 65 28 73 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20  e(size);..      
34cb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
34cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34d10 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
34d20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72 65  .        /// Fre
34d30 65 73 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69  es a native sqli
34d40 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
34d50 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67 20  structure using 
34d60 74 68 65 20 70 72 6f 76 69 64 65 64 0d 0a 20 20  the provided..  
34d70 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
34d80 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d   pointer to it..
34d90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
34da0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
34db0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
34dc0 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
34dd0 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76       /// A nativ
34de0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e  e pointer to a n
34df0 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74  ative sqlite3_vt
34e00 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65  ab_cursor derive
34e10 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
34e20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
34e30 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  m>..        prot
34e40 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f  ected virtual vo
34e50 69 64 20 46 72 65 65 43 75 72 73 6f 72 28 0d 0a  id FreeCursor(..
34e60 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
34e70 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
34e80 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
34e90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
34ea0 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
34eb0 72 65 65 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20  ree(pCursor);.. 
34ec0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
34ed0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
34ee0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
34ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
34f30 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
34f40 6f 6e 20 53 74 61 74 69 63 20 54 61 62 6c 65 20  on Static Table 
34f50 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64 73 0d 0a  Lookup Methods..
34f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
34f70 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
34f80 2f 2f 20 52 65 61 64 73 20 61 6e 64 20 72 65 74  // Reads and ret
34f90 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20  urns the native 
34fa0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
34fb0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
34fc0 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ved..        ///
34fd0 20 73 74 72 75 63 74 75 72 65 20 62 61 73 65 64   structure based
34fe0 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20 70   on the native p
34ff0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
35000 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
35010 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  r..        /// d
35020 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
35030 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35040 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
35050 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
35060 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
35070 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
35080 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
35090 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
350a0 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20   instance to be 
350b0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
350c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
350d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
350e0 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
350f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
35100 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
35110 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
35120 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
35130 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20  ed structure..  
35140 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 77        /// from w
35150 68 69 63 68 20 74 6f 20 72 65 61 64 20 74 68 65  hich to read the
35160 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
35170 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
35180 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20  tab derived..   
35190 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
351a0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
351b0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
351c0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
351d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
351e0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
351f0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
35200 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
35210 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a 20 20 20  ucture -OR-..   
35220 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
35230 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22  ef="IntPtr.Zero"
35240 20 2f 3e 20 69 66 20 69 74 20 63 61 6e 6e 6f 74   /> if it cannot
35250 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
35260 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
35270 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
35280 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
35290 49 6e 74 50 74 72 20 54 61 62 6c 65 46 72 6f 6d  IntPtr TableFrom
352a0 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20  Cursor(..       
352b0 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c       SQLiteModul
352c0 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20  e module,..     
352d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
352e0 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
352f0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
35300 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
35310 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50  (pCursor == IntP
35320 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
35330 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
35340 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
35350 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
35360 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
35370 49 6e 74 50 74 72 28 70 43 75 72 73 6f 72 29 3b  IntPtr(pCursor);
35380 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
35390 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
353a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
353b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
35400 65 67 69 6f 6e 20 54 61 62 6c 65 20 4c 6f 6f 6b  egion Table Look
35410 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  up Methods..    
35420 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
35430 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
35440 65 61 64 73 20 61 6e 64 20 72 65 74 75 72 6e 73  eads and returns
35450 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   the native poin
35460 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
35470 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d  e3_vtab derived.
35480 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
35490 75 63 74 75 72 65 20 62 61 73 65 64 20 6f 6e 20  ucture based on 
354a0 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  the native point
354b0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
354c0 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20  3_vtab_cursor.. 
354d0 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 72 69 76         /// deriv
354e0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
354f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
35500 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
35510 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
35520 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
35530 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
35540 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
35550 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
35560 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72  rsor derived str
35570 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20  ucture..        
35580 2f 2f 2f 20 66 72 6f 6d 20 77 68 69 63 68 20 74  /// from which t
35590 6f 20 72 65 61 64 20 74 68 65 20 6e 61 74 69 76  o read the nativ
355a0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
355b0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
355c0 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  rived..        /
355d0 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  // structure... 
355e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
355f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
35600 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
35610 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
35620 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
35630 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
35640 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
35650 20 2d 4f 52 2d 0d 0a 20 20 20 20 20 20 20 20 2f   -OR-..        /
35660 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
35670 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
35680 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
35690 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
356a0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
356b0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
356c0 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74  cted virtual Int
356d0 50 74 72 20 54 61 62 6c 65 46 72 6f 6d 43 75 72  Ptr TableFromCur
356e0 73 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  sor(..          
356f0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
35700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
35710 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
35720 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54          return T
35730 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 74  ableFromCursor(t
35740 68 69 73 2c 20 70 43 75 72 73 6f 72 29 3b 0d 0a  his, pCursor);..
35750 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
35760 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
35770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
357b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
357c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
357d0 2f 2f 20 4c 6f 6f 6b 73 20 75 70 20 61 6e 64 20  // Looks up and 
357e0 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65  returns the <see
357f0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
35800 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
35810 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
35820 2f 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64  / instance based
35830 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20 70   on the native p
35840 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
35850 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
35860 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
35870 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
35880 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
35890 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
358a0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
358b0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
358c0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
358d0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
358e0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
358f0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
35900 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
35910 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
35920 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35930 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
35940 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
35950 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
35960 63 74 20 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e  ct instance or n
35970 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 20 20  ull if..        
35980 2f 2f 2f 20 74 68 65 20 63 6f 72 72 65 73 70 6f  /// the correspo
35990 6e 64 69 6e 67 20 6f 6e 65 20 63 61 6e 6e 6f 74  nding one cannot
359a0 20 62 65 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20   be found...    
359b0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
359c0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  s>..        prot
359d0 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 53 51  ected virtual SQ
359e0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
359f0 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74 50 74 72   TableFromIntPtr
35a00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
35a10 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
35a20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
35a30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35a40 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20     if (pVtab == 
35a50 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
35a60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
35a70 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
35a80 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
35a90 2c 20 22 69 6e 76 61 6c 69 64 20 6e 61 74 69 76  , "invalid nativ
35aa0 65 20 74 61 62 6c 65 22 29 3b 0d 0a 20 20 20 20  e table");..    
35ab0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
35ac0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
35ad0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
35ae0 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
35af0 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b  tualTable table;
35b00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35b10 69 66 20 28 28 74 61 62 6c 65 73 20 21 3d 20 6e  if ((tables != n
35b20 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ull) &&..       
35b30 20 20 20 20 20 20 20 20 20 74 61 62 6c 65 73 2e           tables.
35b40 54 72 79 47 65 74 56 61 6c 75 65 28 70 56 74 61  TryGetValue(pVta
35b50 62 2c 20 6f 75 74 20 74 61 62 6c 65 29 29 0d 0a  b, out table))..
35b60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
35b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
35b80 65 74 75 72 6e 20 74 61 62 6c 65 3b 0d 0a 20 20  eturn table;..  
35b90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
35ba0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61             SetTa
35bb0 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20  bleError(pVtab, 
35bc0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
35bd0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
35be0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
35bf0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
35c00 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
35c10 20 20 20 20 20 20 20 20 20 20 22 6d 61 6e 61 67            "manag
35c20 65 64 20 74 61 62 6c 65 20 66 6f 72 20 7b 30 7d  ed table for {0}
35c30 20 6e 6f 74 20 66 6f 75 6e 64 22 2c 20 70 56 74   not found", pVt
35c40 61 62 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ab));....       
35c50 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
35c60 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
35c70 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
35c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
35cc0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35cd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
35ce0 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20    /// Allocates 
35cf0 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6e 61  and returns a na
35d00 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
35d10 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  a sqlite3_vtab d
35d20 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
35d30 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 61 6e  /// structure an
35d40 64 20 63 72 65 61 74 65 73 20 61 6e 20 61 73 73  d creates an ass
35d50 6f 63 69 61 74 69 6f 6e 20 62 65 74 77 65 65 6e  ociation between
35d60 20 69 74 20 61 6e 64 20 74 68 65 20 73 70 65 63   it and the spec
35d70 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  ified..        /
35d80 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
35d90 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
35da0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
35db0 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
35dc0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
35dd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
35de0 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
35df0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
35e00 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
35e10 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
35e20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
35e30 63 65 20 74 6f 20 62 65 20 75 73 65 64 0d 0a 20  ce to be used.. 
35e40 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20         /// when 
35e50 63 72 65 61 74 69 6e 67 20 74 68 65 20 61 73 73  creating the ass
35e60 6f 63 69 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  ociation...     
35e70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
35e80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
35e90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
35ea0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
35eb0 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69  ointer to a sqli
35ec0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
35ed0 20 73 74 72 75 63 74 75 72 65 20 6f 72 0d 0a 20   structure or.. 
35ee0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
35ef0 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72  cref="IntPtr.Zer
35f00 6f 22 20 2f 3e 20 69 66 20 74 68 65 20 6d 65 74  o" /> if the met
35f10 68 6f 64 20 66 61 69 6c 73 20 66 6f 72 20 61 6e  hod fails for an
35f20 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20  y reason...     
35f30 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
35f40 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
35f50 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74  cted virtual Int
35f60 50 74 72 20 54 61 62 6c 65 54 6f 49 6e 74 50 74  Ptr TableToIntPt
35f70 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
35f80 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
35f90 6c 65 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  le table..      
35fa0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
35fb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35fc0 69 66 20 28 28 74 61 62 6c 65 20 3d 3d 20 6e 75  if ((table == nu
35fd0 6c 6c 29 20 7c 7c 20 28 74 61 62 6c 65 73 20 3d  ll) || (tables =
35fe0 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
35ff0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
36000 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
36010 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
36020 50 74 72 20 70 56 74 61 62 20 3d 20 49 6e 74 50  Ptr pVtab = IntP
36030 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
36040 20 20 20 20 20 20 62 6f 6f 6c 20 73 75 63 63 65        bool succe
36050 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  ss = false;.... 
36060 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
36070 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
36080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
36090 56 74 61 62 20 3d 20 41 6c 6c 6f 63 61 74 65 54  Vtab = AllocateT
360a0 61 62 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  able();....     
360b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
360c0 56 74 61 62 20 21 3d 20 49 6e 74 50 74 72 2e 5a  Vtab != IntPtr.Z
360d0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
360e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
360f0 20 20 20 20 20 20 20 20 20 20 20 20 20 5a 65 72               Zer
36100 6f 54 61 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a  oTable(pVtab);..
36110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36120 20 20 20 20 74 61 62 6c 65 2e 4e 61 74 69 76 65      table.Native
36130 48 61 6e 64 6c 65 20 3d 20 70 56 74 61 62 3b 0d  Handle = pVtab;.
36140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36150 20 20 20 20 20 74 61 62 6c 65 73 2e 41 64 64 28       tables.Add(
36160 70 56 74 61 62 2c 20 74 61 62 6c 65 29 3b 0d 0a  pVtab, table);..
36170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36180 20 20 20 20 73 75 63 63 65 73 73 20 3d 20 74 72      success = tr
36190 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
361a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
361b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
361c0 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
361d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
361e0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
361f0 73 75 63 63 65 73 73 20 26 26 20 28 70 56 74 61  success && (pVta
36200 62 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  b != IntPtr.Zero
36210 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
36220 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
36230 20 20 20 20 20 20 20 20 20 20 20 46 72 65 65 54             FreeT
36240 61 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20 20  able(pVtab);..  
36250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36260 20 20 70 56 74 61 62 20 3d 20 49 6e 74 50 74 72    pVtab = IntPtr
36270 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
36280 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
36290 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
362a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
362b0 56 74 61 62 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Vtab;..        }
362c0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
362d0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
362e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
362f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36320 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
36330 20 20 20 23 72 65 67 69 6f 6e 20 43 75 72 73 6f     #region Curso
36340 72 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64 73  r Lookup Methods
36350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
36360 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
36370 20 2f 2f 2f 20 4c 6f 6f 6b 73 20 75 70 20 61 6e   /// Looks up an
36380 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
36390 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
363a0 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
363b0 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  r" />..        /
363c0 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
363d0 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  ce based on the 
363e0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
363f0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
36400 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  // sqlite3_vtab_
36410 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
36420 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
36430 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
36440 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
36450 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
36460 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
36470 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
36480 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
36490 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
364a0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
364b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
364c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
364d0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
364e0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
364f0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
36500 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
36510 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
36520 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
36530 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
36540 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
36550 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
36560 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
36570 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
36580 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
36590 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
365a0 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75 6c 6c  instance or null
365b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 66  ..        /// if
365c0 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
365d0 6e 67 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62 65  ng one cannot be
365e0 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20   found...       
365f0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
36600 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
36610 65 64 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74  ed virtual SQLit
36620 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
36630 73 6f 72 20 43 75 72 73 6f 72 46 72 6f 6d 49 6e  sor CursorFromIn
36640 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
36650 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
36660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
36670 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
36680 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
36690 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
366a0 20 20 20 20 69 66 20 28 70 43 75 72 73 6f 72 20      if (pCursor 
366b0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
366c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
366d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
366e0 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 70 56  SetTableError(pV
366f0 74 61 62 2c 20 22 69 6e 76 61 6c 69 64 20 6e 61  tab, "invalid na
36700 74 69 76 65 20 63 75 72 73 6f 72 22 29 3b 0d 0a  tive cursor");..
36710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36720 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
36730 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
36740 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
36750 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
36760 73 6f 72 20 63 75 72 73 6f 72 3b 0d 0a 0d 0a 20  sor cursor;.... 
36770 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
36780 63 75 72 73 6f 72 73 20 21 3d 20 6e 75 6c 6c 29  cursors != null)
36790 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
367a0 20 20 20 20 20 63 75 72 73 6f 72 73 2e 54 72 79       cursors.Try
367b0 47 65 74 56 61 6c 75 65 28 70 43 75 72 73 6f 72  GetValue(pCursor
367c0 2c 20 6f 75 74 20 63 75 72 73 6f 72 29 29 0d 0a  , out cursor))..
367d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
367e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
367f0 65 74 75 72 6e 20 63 75 72 73 6f 72 3b 0d 0a 20  eturn cursor;.. 
36800 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
36810 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
36820 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c  ableError(pVtab,
36830 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
36840 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
36850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
36860 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
36870 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
36880 20 20 20 20 20 20 20 20 20 20 20 22 6d 61 6e 61             "mana
36890 67 65 64 20 63 75 72 73 6f 72 20 66 6f 72 20 7b  ged cursor for {
368a0 30 7d 20 6e 6f 74 20 66 6f 75 6e 64 22 2c 20 70  0} not found", p
368b0 43 75 72 73 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20  Cursor));....   
368c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
368d0 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d  null;..        }
368e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
368f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36930 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
36940 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
36950 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61        /// Alloca
36960 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  tes and returns 
36970 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
36980 20 74 6f 20 61 20 73 71 6c 69 74 65 33 5f 76 74   to a sqlite3_vt
36990 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 20  ab_cursor..     
369a0 20 20 20 2f 2f 2f 20 64 65 72 69 76 65 64 20 73     /// derived s
369b0 74 72 75 63 74 75 72 65 20 61 6e 64 20 63 72 65  tructure and cre
369c0 61 74 65 73 20 61 6e 20 61 73 73 6f 63 69 61 74  ates an associat
369d0 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 74 20 61  ion between it a
369e0 6e 64 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  nd the..        
369f0 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73  /// specified <s
36a00 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
36a10 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
36a20 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
36a30 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
36a40 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
36a50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
36a60 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
36a70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
36a80 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
36a90 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
36aa0 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
36ab0 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65  t instance to be
36ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
36ad0 65 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67  ed when creating
36ae0 20 74 68 65 20 61 73 73 6f 63 69 61 74 69 6f 6e   the association
36af0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
36b00 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
36b10 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
36b20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
36b30 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
36b40 6f 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62  o a sqlite3_vtab
36b50 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
36b60 73 74 72 75 63 74 75 72 65 20 6f 72 0d 0a 20 20  structure or..  
36b70 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
36b80 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f  ref="IntPtr.Zero
36b90 22 20 2f 3e 20 69 66 20 74 68 65 20 6d 65 74 68  " /> if the meth
36ba0 6f 64 20 66 61 69 6c 73 20 66 6f 72 20 61 6e 79  od fails for any
36bb0 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20   reason...      
36bc0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
36bd0 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
36be0 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74 50  ted virtual IntP
36bf0 74 72 20 43 75 72 73 6f 72 54 6f 49 6e 74 50 74  tr CursorToIntPt
36c00 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
36c10 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
36c20 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 0d  leCursor cursor.
36c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
36c40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
36c50 20 20 20 20 20 20 20 69 66 20 28 28 63 75 72 73         if ((curs
36c60 6f 72 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  or == null) || (
36c70 63 75 72 73 6f 72 73 20 3d 3d 20 6e 75 6c 6c 29  cursors == null)
36c80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
36c90 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
36ca0 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
36cb0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
36cc0 72 73 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65  rsor = IntPtr.Ze
36cd0 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
36ce0 20 62 6f 6f 6c 20 73 75 63 63 65 73 73 20 3d 20   bool success = 
36cf0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
36d00 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
36d10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36d20 20 20 20 20 20 20 20 20 20 20 70 43 75 72 73 6f            pCurso
36d30 72 20 3d 20 41 6c 6c 6f 63 61 74 65 43 75 72 73  r = AllocateCurs
36d40 6f 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  or();....       
36d50 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 75           if (pCu
36d60 72 73 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a  rsor != IntPtr.Z
36d70 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
36d80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36d90 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72               cur
36da0 73 6f 72 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65  sor.NativeHandle
36db0 20 3d 20 70 43 75 72 73 6f 72 3b 0d 0a 20 20 20   = pCursor;..   
36dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36dd0 20 63 75 72 73 6f 72 73 2e 41 64 64 28 70 43 75   cursors.Add(pCu
36de0 72 73 6f 72 2c 20 63 75 72 73 6f 72 29 3b 0d 0a  rsor, cursor);..
36df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36e00 20 20 20 20 73 75 63 63 65 73 73 20 3d 20 74 72      success = tr
36e10 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
36e20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
36e30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
36e40 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
36e50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
36e60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
36e70 73 75 63 63 65 73 73 20 26 26 20 28 70 43 75 72  success && (pCur
36e80 73 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  sor != IntPtr.Ze
36e90 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ro))..          
36ea0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 46 72 65               Fre
36ec0 65 43 75 72 73 6f 72 28 70 43 75 72 73 6f 72 29  eCursor(pCursor)
36ed0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
36ee0 20 20 20 20 20 20 20 70 43 75 72 73 6f 72 20 3d         pCursor =
36ef0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
36f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
36f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
36f20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
36f30 65 74 75 72 6e 20 70 43 75 72 73 6f 72 3b 0d 0a  eturn pCursor;..
36f40 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
36f50 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
36f60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
36f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36fb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
36fc0 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 20 4c 6f 6f  ion Function Loo
36fd0 6b 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  kup Methods..   
36fe0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
36ff0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
37000 44 65 74 65 72 69 6d 69 6e 65 73 20 74 68 65 20  Deterimines the 
37010 6b 65 79 20 74 68 61 74 20 73 68 6f 75 6c 64 20  key that should 
37020 62 65 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74  be used to ident
37030 69 66 79 20 61 6e 64 20 73 74 6f 72 65 20 74 68  ify and store th
37040 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
37050 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
37060 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a  Function" /> obj
37070 65 63 74 20 69 6e 73 74 61 6e 63 65 20 66 6f 72  ect instance for
37080 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
37090 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
370a0 28 69 2e 65 2e 20 74 6f 20 62 65 20 72 65 74 75  (i.e. to be retu
370b0 72 6e 65 64 20 76 69 61 20 74 68 65 0d 0a 20 20  rned via the..  
370c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
370d0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
370e0 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  veModule.xFindFu
370f0 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f  nction" /> metho
37100 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  d)...        ///
37110 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
37120 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
37130 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f  name="argumentCo
37140 75 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  unt">..        /
37150 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
37160 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68   arguments to th
37170 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
37180 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
37190 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
371a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
371b0 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e  ram name="name">
371c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
371d0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69  e name of the vi
371e0 72 74 75 61 6c 20 74 61 62 6c 65 20 66 75 6e 63  rtual table func
371f0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
37200 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
37210 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
37220 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22 3e  name="function">
37230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
37240 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
37250 69 74 65 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  iteFunction" /> 
37260 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
37270 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d  associated with.
37280 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69  .        /// thi
37290 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  s virtual table 
372a0 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
372b0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
372c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
372d0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
372e0 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20 74  /// The string t
372f0 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75 73  hat should be us
37300 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 61  ed to identify a
37310 6e 64 20 73 74 6f 72 65 20 74 68 65 20 76 69 72  nd store the vir
37320 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tual..        //
37330 2f 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e  / table function
37340 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68 69 73   instance.  This
37350 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20 72   method cannot r
37360 65 74 75 72 6e 20 6e 75 6c 6c 2e 20 20 49 66 20  eturn null.  If 
37370 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  null..        //
37380 2f 20 69 73 20 72 65 74 75 72 6e 65 64 20 66 72  / is returned fr
37390 6f 6d 20 74 68 69 73 20 6d 65 74 68 6f 64 2c 20  om this method, 
373a0 74 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20  the behavior is 
373b0 75 6e 64 65 66 69 6e 65 64 2e 0d 0a 20 20 20 20  undefined...    
373c0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
373d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  s>..        prot
373e0 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 73 74  ected virtual st
373f0 72 69 6e 67 20 47 65 74 46 75 6e 63 74 69 6f 6e  ring GetFunction
37400 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
37410 20 20 69 6e 74 20 61 72 67 75 6d 65 6e 74 43 6f    int argumentCo
37420 75 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  unt,..          
37430 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a    string name,..
37440 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
37450 74 65 46 75 6e 63 74 69 6f 6e 20 66 75 6e 63 74  teFunction funct
37460 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ion..           
37470 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
37480 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
37490 6e 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  n HelperMethods.
374a0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
374b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
374c0 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
374d0 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  iantCulture,..  
374e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 7b                "{
374f0 30 7d 3a 7b 31 7d 22 2c 20 61 72 67 75 6d 65 6e  0}:{1}", argumen
37500 74 43 6f 75 6e 74 2c 20 6e 61 6d 65 29 3b 0d 0a  tCount, name);..
37510 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
37520 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
37530 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
37540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37580 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
37590 69 6f 6e 20 54 61 62 6c 65 20 44 65 63 6c 61 72  ion Table Declar
375a0 61 74 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74  ation Helper Met
375b0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
375c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
375d0 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
375e0 73 20 74 6f 20 64 65 63 6c 61 72 65 20 74 68 65  s to declare the
375f0 20 73 63 68 65 6d 61 20 66 6f 72 20 74 68 65 20   schema for the 
37600 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 75 73  virtual table us
37610 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
37620 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 64   /// specified d
37630 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
37640 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
37650 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
37660 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
37670 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e  name="connection
37680 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37690 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
376a0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22  QLiteConnection"
376b0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
376c0 6e 63 65 20 74 6f 20 75 73 65 20 77 68 65 6e 0d  nce to use when.
376d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 63  .        /// dec
376e0 6c 61 72 69 6e 67 20 74 68 65 20 73 63 68 65 6d  laring the schem
376f0 61 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  a of the virtual
37700 20 74 61 62 6c 65 2e 20 20 54 68 69 73 20 70 61   table.  This pa
37710 72 61 6d 65 74 65 72 20 6d 61 79 20 6e 6f 74 0d  rameter may not.
37720 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  .        /// be 
37730 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
37740 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
37750 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
37760 6e 61 6d 65 3d 22 73 71 6c 22 3e 0d 0a 20 20 20  name="sql">..   
37770 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74 72       /// The str
37780 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ing containing t
37790 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  he CREATE TABLE 
377a0 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63  statement that c
377b0 6f 6d 70 6c 65 74 65 6c 79 0d 0a 20 20 20 20 20  ompletely..     
377c0 20 20 20 2f 2f 2f 20 64 65 73 63 72 69 62 65 73     /// describes
377d0 20 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72 20   the schema for 
377e0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
377f0 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74  e.  This paramet
37800 65 72 20 6d 61 79 20 6e 6f 74 0d 0a 20 20 20 20  er may not..    
37810 20 20 20 20 2f 2f 2f 20 62 65 20 6e 75 6c 6c 2e      /// be null.
37820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
37830 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
37840 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
37850 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  "error">..      
37860 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75    /// Upon failu
37870 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  re, this paramet
37880 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
37890 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61  ied to contain a
378a0 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20  n error..       
378b0 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20   /// message... 
378c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
378d0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
378e0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
378f0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
37900 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
37910 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
37920 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
37930 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
37940 64 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65  d virtual SQLite
37950 45 72 72 6f 72 43 6f 64 65 20 44 65 63 6c 61 72  ErrorCode Declar
37960 65 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  eTable(..       
37970 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
37980 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e  ction connection
37990 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ,..            s
379a0 74 72 69 6e 67 20 73 71 6c 2c 0d 0a 20 20 20 20  tring sql,..    
379b0 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
379c0 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
379d0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
379e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
379f0 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d  if (connection =
37a00 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
37a10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37a20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
37a30 22 69 6e 76 61 6c 69 64 20 63 6f 6e 6e 65 63 74  "invalid connect
37a40 69 6f 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ion";..         
37a50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
37a60 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
37a70 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
37a80 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
37a90 20 20 20 53 51 4c 69 74 65 42 61 73 65 20 73 71     SQLiteBase sq
37aa0 6c 69 74 65 42 61 73 65 20 3d 20 63 6f 6e 6e 65  liteBase = conne
37ab0 63 74 69 6f 6e 2e 5f 73 71 6c 3b 0d 0a 0d 0a 20  ction._sql;.... 
37ac0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
37ad0 71 6c 69 74 65 42 61 73 65 20 3d 3d 20 6e 75 6c  qliteBase == nul
37ae0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
37af0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
37b00 20 20 20 65 72 72 6f 72 20 3d 20 22 63 6f 6e 6e     error = "conn
37b10 65 63 74 69 6f 6e 20 68 61 73 20 69 6e 76 61 6c  ection has inval
37b20 69 64 20 68 61 6e 64 6c 65 22 3b 0d 0a 20 20 20  id handle";..   
37b30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
37b40 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
37b50 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20  ode.Error;..    
37b60 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
37b70 20 20 20 20 20 20 20 20 20 69 66 20 28 73 71 6c           if (sql
37b80 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
37b90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37ba0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
37bb0 3d 20 22 69 6e 76 61 6c 69 64 20 53 51 4c 20 73  = "invalid SQL s
37bc0 74 61 74 65 6d 65 6e 74 22 3b 0d 0a 20 20 20 20  tatement";..    
37bd0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
37be0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
37bf0 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
37c00 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
37c10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73          return s
37c20 71 6c 69 74 65 42 61 73 65 2e 44 65 63 6c 61 72  qliteBase.Declar
37c30 65 56 69 72 74 75 61 6c 54 61 62 6c 65 28 74 68  eVirtualTable(th
37c40 69 73 2c 20 73 71 6c 2c 20 72 65 66 20 65 72 72  is, sql, ref err
37c50 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  or);..        }.
37c60 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
37c70 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
37c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37cc0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
37cd0 20 20 23 72 65 67 69 6f 6e 20 46 75 6e 63 74 69    #region Functi
37ce0 6f 6e 20 44 65 63 6c 61 72 61 74 69 6f 6e 20 48  on Declaration H
37cf0 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
37d00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
37d10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
37d20 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61 74 69  / Calls the nati
37d30 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  ve SQLite core l
37d40 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65 72 20  ibrary in order 
37d50 74 6f 20 64 65 63 6c 61 72 65 20 61 20 76 69 72  to declare a vir
37d60 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tual..        //
37d70 2f 20 74 61 62 6c 65 2