System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 93030934520fe9bea6e6db362f9ce016c61c0f04:


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 47  >..        /// G
4f20: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
4f30: 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62  an <see cref="Ob
4f40: 6a 65 63 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63  ject" /> instanc
4f50: 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
4f60: 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  h..        /// t
4f70: 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  his value...    
4f80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4f90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4fa0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4fb0: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4fc0: 63 72 65 66 3d 22 4f 62 6a 65 63 74 22 20 2f 3e  cref="Object" />
4fd0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4fe0: 20 74 68 69 73 20 76 61 6c 75 65 2e 20 20 49 66   this value.  If
4ff0: 20 74 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20   the type..     
5000: 20 20 20 2f 2f 2f 20 61 66 66 69 6e 69 74 79 20     /// affinity 
5010: 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73  of the object is
5020: 20 75 6e 6b 6e 6f 77 6e 20 6f 72 20 63 61 6e 6e   unknown or cann
5030: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
5040: 2c 20 61 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20  , a null..      
5050: 20 20 2f 2f 2f 20 76 61 6c 75 65 20 77 69 6c 6c    /// value will
5060: 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20   be returned... 
5070: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
5080: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
5090: 75 62 6c 69 63 20 6f 62 6a 65 63 74 20 47 65 74  ublic object Get
50a0: 4f 62 6a 65 63 74 28 29 0d 0a 20 20 20 20 20 20  Object()..      
50b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
50c0: 20 73 77 69 74 63 68 20 28 47 65 74 54 79 70 65   switch (GetType
50d0: 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20  Affinity())..   
50e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
50f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5100: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e   TypeAffinity.Un
5110: 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20  initialized:..  
5120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5130: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5150: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
5160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5180: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5190: 69 74 79 2e 49 6e 74 36 34 3a 0d 0a 20 20 20 20  ity.Int64:..    
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
51c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
51d0: 6e 20 47 65 74 49 6e 74 36 34 28 29 3b 0d 0a 20  n GetInt64();.. 
51e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5200: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41        case TypeA
5210: 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 3a 0d  ffinity.Double:.
5220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5230: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5250: 72 65 74 75 72 6e 20 47 65 74 44 6f 75 62 6c 65  return GetDouble
5260: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
5270: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5280: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5290: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
52a0: 78 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt:..           
52b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
52c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52d0: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 53 74      return GetSt
52e0: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
52f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5310: 63 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74  case TypeAffinit
5320: 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20 20 20 20 20  y.Blob:..       
5330: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
5360: 65 74 42 79 74 65 73 28 29 3b 0d 0a 20 20 20 20  etBytes();..    
5370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5380: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
5390: 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69     case TypeAffi
53a0: 6e 69 74 79 2e 4e 75 6c 6c 3a 0d 0a 20 20 20 20  nity.Null:..    
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
53d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
53e0: 6e 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 3b 0d  n DBNull.Value;.
53f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5400: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
5410: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
5420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5430: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5450: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
5460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5470: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5480: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
5490: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
54f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5500: 20 20 20 20 2f 2f 2f 20 55 73 65 73 20 74 68 65      /// Uses the
5510: 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68 61   native value ha
5520: 6e 64 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 61  ndle to obtain a
5530: 6e 64 20 73 74 6f 72 65 20 74 68 65 20 6d 61 6e  nd store the man
5540: 61 67 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20  aged value..    
5550: 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 69 73      /// for this
5560: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
5570: 2c 20 74 68 75 73 20 73 61 76 69 6e 67 20 69 74  , thus saving it
5580: 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65 2e 20   for later use. 
5590: 20 54 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20   The type..     
55a0: 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 6d 61     /// of the ma
55b0: 6e 61 67 65 64 20 76 61 6c 75 65 20 69 73 20 64  naged value is d
55c0: 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65  etermined by the
55d0: 20 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 6f   type affinity o
55e0: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
55f0: 2f 2f 20 6e 61 74 69 76 65 20 76 61 6c 75 65 2e  // native value.
5600: 20 20 49 66 20 74 68 65 20 74 79 70 65 20 61 66    If the type af
5610: 66 69 6e 69 74 79 20 69 73 20 6e 6f 74 20 72 65  finity is not re
5620: 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73  cognized by this
5630: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
5640: 74 68 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20 69 73  thod, no work is
5650: 20 64 6f 6e 65 20 61 6e 64 20 66 61 6c 73 65 20   done and false 
5660: 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  is returned...  
5670: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5680: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
5690: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
56a0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
56b0: 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  o if the native 
56c0: 76 61 6c 75 65 20 77 61 73 20 70 65 72 73 69 73  value was persis
56d0: 74 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ted successfully
56e0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
56f0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
5700: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 50     public bool P
5710: 65 72 73 69 73 74 28 29 0d 0a 20 20 20 20 20 20  ersist()..      
5720: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5730: 20 73 77 69 74 63 68 20 28 47 65 74 54 79 70 65   switch (GetType
5740: 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20  Affinity())..   
5750: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5760: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5770: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e   TypeAffinity.Un
5780: 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20  initialized:..  
5790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
57c0: 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ue = null;..    
57d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57e0: 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76      PreventNativ
57f0: 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20  eAccess();..    
5800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5810: 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73      return (pers
5820: 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a  isted = true);..
5830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5840: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5850: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
5860: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 3a 0d  Affinity.Int64:.
5870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5880: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58a0: 76 61 6c 75 65 20 3d 20 47 65 74 49 6e 74 36 34  value = GetInt64
58b0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
58c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65               Pre
58d0: 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73  ventNativeAccess
58e0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
58f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5900: 75 72 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d  urn (persisted =
5910: 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20   true);..       
5920: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5940: 63 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74  case TypeAffinit
5950: 79 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20  y.Double:..     
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5980: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
5990: 3d 20 47 65 74 44 6f 75 62 6c 65 28 29 3b 0d 0a  = GetDouble();..
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e          PreventN
59c0: 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a  ativeAccess();..
59d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
59f0: 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65  persisted = true
5a00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5a10: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5a20: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
5a30: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78  TypeAffinity.Tex
5a40: 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t:..            
5a50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a70: 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74 53 74     value = GetSt
5a80: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
5a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5aa0: 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63   PreventNativeAc
5ab0: 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  cess();..       
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ad0: 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74   return (persist
5ae0: 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20  ed = true);..   
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
5b10: 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66      case TypeAff
5b20: 69 6e 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20  inity.Blob:..   
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
5b60: 65 20 3d 20 47 65 74 42 79 74 65 73 28 29 3b 0d  e = GetBytes();.
5b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5b80: 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74           Prevent
5b90: 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d  NativeAccess();.
5ba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5bb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5bc0: 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75  (persisted = tru
5bd0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
5be0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5bf0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5c00: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75   TypeAffinity.Nu
5c10: 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll:..           
5c20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c40: 20 20 20 20 76 61 6c 75 65 20 3d 20 44 42 4e 75      value = DBNu
5c50: 6c 6c 2e 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ll.Value;..     
5c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c70: 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65     PreventNative
5c80: 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20  Access();..     
5c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ca0: 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69     return (persi
5cb0: 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20  sted = true);.. 
5cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5ce0: 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a        default:..
5cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5d20: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
5d50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
5d60: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
5d70: 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
5d80: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
5d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
5de0: 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
5df0: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
5e00: 4f 70 20 45 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a  Op Enumeration..
5e10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5e20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 73 65  >..    /// These
5e30: 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77 65 64   are the allowed
5e40: 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
5e50: 6f 70 65 72 61 74 6f 72 73 20 74 68 61 74 20 61  operators that a
5e60: 72 65 20 70 61 72 74 20 6f 66 20 61 0d 0a 20 20  re part of a..  
5e70: 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74    /// constraint
5e80: 20 74 65 72 6d 20 69 6e 20 74 68 65 20 57 48 45   term in the WHE
5e90: 52 45 20 63 6c 61 75 73 65 20 6f 66 20 61 20 71  RE clause of a q
5ea0: 75 65 72 79 20 74 68 61 74 20 75 73 65 73 20 61  uery that uses a
5eb0: 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 2f 2f   virtual..    //
5ec0: 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f  / table...    //
5ed0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5ee0: 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
5ef0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
5f00: 69 6e 74 4f 70 20 3a 20 62 79 74 65 0d 0a 20 20  intOp : byte..  
5f10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    {..        ///
5f20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5f30: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
5f40: 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ue represents th
5f50: 65 20 65 71 75 61 6c 69 74 79 20 6f 70 65 72 61  e equality opera
5f60: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
5f70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5f80: 20 20 20 20 20 20 45 71 75 61 6c 54 6f 20 3d 20        EqualTo = 
5f90: 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  2,....        //
5fa0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5fb0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
5fc0: 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74  lue represents t
5fd0: 68 65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  he greater than 
5fe0: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
5ff0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6000: 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61 74  >..        Great
6010: 65 72 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d 0a 20  erThan = 4,.... 
6020: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
6030: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
6040: 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70  / This value rep
6050: 72 65 73 65 6e 74 73 20 74 68 65 20 6c 65 73 73  resents the less
6060: 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74   than or equal t
6070: 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  o operator...   
6080: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6090: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73  ry>..        Les
60a0: 73 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d  sThanOrEqualTo =
60b0: 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   8,....        /
60c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
60d0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
60e0: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
60f0: 74 68 65 20 6c 65 73 73 20 74 68 61 6e 20 6f 70  the less than op
6100: 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20  erator...       
6110: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6120: 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54 68 61  .        LessTha
6130: 6e 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20 20 20  n = 16,....     
6140: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6150: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
6160: 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65  is value represe
6170: 6e 74 73 20 74 68 65 20 67 72 65 61 74 65 72 20  nts the greater 
6180: 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f  than or equal to
6190: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20   operator...    
61a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
61b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61  y>..        Grea
61c0: 74 65 72 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f  terThanOrEqualTo
61d0: 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 32,....      
61e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
61f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
6200: 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e  s value represen
6210: 74 73 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65  ts the MATCH ope
6220: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
6230: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6240: 20 20 20 20 20 20 20 20 4d 61 74 63 68 20 3d 20          Match = 
6250: 36 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  64,....        /
6260: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6270: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
6280: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
6290: 74 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  the LIKE operato
62a0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
62b0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
62c0: 20 20 20 20 4c 69 6b 65 20 3d 20 36 35 2c 0d 0a      Like = 65,..
62d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
62e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
62f0: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
6300: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 47  represents the G
6310: 4c 4f 42 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20  LOB operator... 
6320: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
6330: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47  mary>..        G
6340: 6c 6f 62 20 3d 20 36 36 2c 0d 0a 0d 0a 20 20 20  lob = 66,....   
6350: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6360: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6370: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
6380: 73 65 6e 74 73 20 74 68 65 20 52 45 47 45 58 50  sents the REGEXP
6390: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20   operator...    
63a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
63b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 52 65 67 65  y>..        Rege
63c0: 78 70 20 3d 20 36 37 0d 0a 20 20 20 20 7d 0d 0a  xp = 67..    }..
63d0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
63e0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
63f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6430: 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
6440: 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67   SQLiteIndexFlag
6450: 73 20 45 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a 20  s Enumeration.. 
6460: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6470: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20  ..    /// These 
6480: 61 72 65 20 74 68 65 20 61 6c 6c 6f 77 65 64 20  are the allowed 
6490: 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 69  values for the i
64a0: 6e 64 65 78 20 66 6c 61 67 73 20 66 72 6f 6d 20  ndex flags from 
64b0: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65  the..    /// <se
64c0: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
64d0: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73  anagedModule.Bes
64e0: 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
64f0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
6500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 46 6c 61  mmary>..    [Fla
6510: 67 73 28 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  gs()]..    publi
6520: 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 49 6e 64  c enum SQLiteInd
6530: 65 78 46 6c 61 67 73 0d 0a 20 20 20 20 7b 0d 0a  exFlags..    {..
6540: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
6550: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
6560: 2f 2f 20 4e 6f 20 73 70 65 63 69 61 6c 20 68 61  // No special ha
6570: 6e 64 6c 69 6e 67 2e 20 20 54 68 69 73 20 69 73  ndling.  This is
6580: 20 74 68 65 20 64 65 66 61 75 6c 74 2e 0d 0a 20   the default... 
6590: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
65a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4e  mary>..        N
65b0: 6f 6e 65 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20 20  one = 0x0,....  
65c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
65d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
65e0: 20 54 68 69 73 20 76 61 6c 75 65 20 69 6e 64 69   This value indi
65f0: 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20 73  cates that the s
6600: 63 61 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78  can of the index
6610: 20 77 69 6c 6c 20 76 69 73 69 74 20 61 74 0d 0a   will visit at..
6620: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 73 74          /// most
6630: 20 6f 6e 65 20 72 6f 77 2e 0d 0a 20 20 20 20 20   one row...     
6640: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6650: 3e 0d 0a 20 20 20 20 20 20 20 20 53 63 61 6e 55  >..        ScanU
6660: 6e 69 71 75 65 20 3d 20 30 78 31 0d 0a 20 20 20  nique = 0x1..   
6670: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
6680: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
6690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66d0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
66e0: 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78  gion SQLiteIndex
66f0: 43 6f 6e 73 74 72 61 69 6e 74 20 48 65 6c 70 65  Constraint Helpe
6700: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
6710: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6720: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
6730: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e 61  epresents the na
6740: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
6750: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74  ex_constraint st
6760: 72 75 63 74 75 72 65 0d 0a 20 20 20 20 2f 2f 2f  ructure..    ///
6770: 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
6780: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
6790: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
67a0: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
67b0: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
67c0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
67d0: 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  t..    {..      
67e0: 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e    #region Intern
67f0: 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  al Constructors.
6800: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
6810: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6820: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
6830: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
6840: 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74  is class using t
6850: 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74  he specified nat
6860: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
6870: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
6880: 6f 6e 73 74 72 61 69 6e 74 20 73 74 72 75 63 74  onstraint struct
6890: 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
68a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
68b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
68c0: 20 6e 61 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e   name="constrain
68d0: 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
68e0: 20 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   The native sqli
68f0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
6900: 61 69 6e 74 20 73 74 72 75 63 74 75 72 65 20 74  aint structure t
6910: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
6920: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6930: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
6940: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
6950: 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  aint(..         
6960: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
6970: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
6980: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20  ndex_constraint 
6990: 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
69a0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
69b0: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 63 6f         : this(co
69c0: 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e  nstraint.iColumn
69d0: 2c 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 2c  , constraint.op,
69e0: 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62   constraint.usab
69f0: 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
6a00: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
6a10: 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 29 0d  nt.iTermOffset).
6a20: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
6a30: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
6a40: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
6a50: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
6a60: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
6a70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ab0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6ac0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
6ad0: 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  te Constructors.
6ae0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
6af0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6b00: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
6b10: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
6b20: 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74  is class using t
6b30: 68 65 20 73 70 65 63 69 66 69 65 64 20 66 69 65  he specified fie
6b40: 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ld..        /// 
6b50: 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 20  values...       
6b60: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6b70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
6b80: 72 61 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d  ram name="iColum
6b90: 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n">..        ///
6ba0: 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d   Column on left-
6bb0: 68 61 6e 64 20 73 69 64 65 20 6f 66 20 63 6f 6e  hand side of con
6bc0: 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20  straint...      
6bd0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6be0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
6bf0: 61 6d 20 6e 61 6d 65 3d 22 6f 70 22 3e 0d 0a 20  am name="op">.. 
6c00: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
6c10: 72 61 69 6e 74 20 6f 70 65 72 61 74 6f 72 20 28  raint operator (
6c20: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
6c30: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
6c40: 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20 20 20 20 20  Op" />)...      
6c50: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6c60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
6c70: 61 6d 20 6e 61 6d 65 3d 22 75 73 61 62 6c 65 22  am name="usable"
6c80: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
6c90: 72 75 65 20 69 66 20 74 68 69 73 20 63 6f 6e 73  rue if this cons
6ca0: 74 72 61 69 6e 74 20 69 73 20 75 73 61 62 6c 65  traint is usable
6cb0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6cc0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
6cd0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6ce0: 3d 22 69 54 65 72 6d 4f 66 66 73 65 74 22 3e 0d  ="iTermOffset">.
6cf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 73 65  .        /// Use
6d00: 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 3c  d internally - <
6d10: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
6d20: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42  eManagedModule.B
6d30: 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20  estIndex" />..  
6d40: 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64        /// should
6d50: 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20 20 20 20   ignore...      
6d60: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6d70: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
6d80: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
6d90: 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  raint(..        
6da0: 20 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c      int iColumn,
6db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
6dc0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
6dd0: 69 6e 74 4f 70 20 6f 70 2c 0d 0a 20 20 20 20 20  intOp op,..     
6de0: 20 20 20 20 20 20 20 62 79 74 65 20 75 73 61 62         byte usab
6df0: 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
6e00: 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74   int iTermOffset
6e10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
6e20: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
6e30: 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 43 6f          this.iCo
6e40: 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d  lumn = iColumn;.
6e50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
6e60: 73 2e 6f 70 20 3d 20 6f 70 3b 0d 0a 20 20 20 20  s.op = op;..    
6e70: 20 20 20 20 20 20 20 20 74 68 69 73 2e 75 73 61          this.usa
6e80: 62 6c 65 20 3d 20 75 73 61 62 6c 65 3b 0d 0a 20  ble = usable;.. 
6e90: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
6ea0: 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 69 54  iTermOffset = iT
6eb0: 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20  ermOffset;..    
6ec0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
6ed0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6ee0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
6ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
6f30: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
6f40: 75 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20  ublic Fields..  
6f50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6f60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
6f70: 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d   Column on left-
6f80: 68 61 6e 64 20 73 69 64 65 20 6f 66 20 63 6f 6e  hand side of con
6f90: 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20  straint...      
6fa0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
6fb0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
6fc0: 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d   int iColumn;...
6fd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
6fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7020: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7030: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7040: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 61 69 6e 74    /// Constraint
7050: 20 6f 70 65 72 61 74 6f 72 20 28 3c 73 65 65 20   operator (<see 
7060: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
7070: 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 22 20 2f  xConstraintOp" /
7080: 3e 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  >)...        ///
7090: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
70a0: 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
70b0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
70c0: 74 4f 70 20 6f 70 3b 0d 0a 0d 0a 20 20 20 20 20  tOp op;....     
70d0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
7120: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
7130: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
7140: 54 72 75 65 20 69 66 20 74 68 69 73 20 63 6f 6e  True if this con
7150: 73 74 72 61 69 6e 74 20 69 73 20 75 73 61 62 6c  straint is usabl
7160: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
7170: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
7180: 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
7190: 75 73 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  usable;....     
71a0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
71b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
71f0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
7200: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
7210: 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  Used internally 
7220: 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  - <see cref="ISQ
7230: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
7240: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
7250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f  .        /// sho
7260: 75 6c 64 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20  uld ignore...   
7270: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7280: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
7290: 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66  lic int iTermOff
72a0: 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  set;..        #e
72b0: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
72c0: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
72d0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
72e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7320: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
7330: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  n SQLiteIndexOrd
7340: 65 72 42 79 20 48 65 6c 70 65 72 20 43 6c 61 73  erBy Helper Clas
7350: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
7360: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
7370: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
7380: 6e 74 73 20 74 68 65 20 6e 61 74 69 76 65 20 73  nts the native s
7390: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
73a0: 65 72 62 79 20 73 74 72 75 63 74 75 72 65 20 66  erby structure f
73b0: 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65  rom..    /// the
73c0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
73d0: 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rary...    /// <
73e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
73f0: 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61  ublic sealed cla
7400: 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72  ss SQLiteIndexOr
7410: 64 65 72 42 79 0d 0a 20 20 20 20 7b 0d 0a 20 20  derBy..    {..  
7420: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
7430: 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74  ternal Construct
7440: 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
7450: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7460: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
7470: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
7480: 66 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69  f this class usi
7490: 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
74a0: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
74b0: 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64   /// sqlite3_ind
74c0: 65 78 5f 6f 72 64 65 72 62 79 20 73 74 72 75 63  ex_orderby struc
74d0: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
74e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
74f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
7500: 6d 20 6e 61 6d 65 3d 22 6f 72 64 65 72 42 79 22  m name="orderBy"
7510: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
7520: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
7530: 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20  3_index_orderby 
7540: 73 74 72 75 63 74 75 72 65 20 74 6f 20 75 73 65  structure to use
7550: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7560: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
7570: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
7580: 49 6e 64 65 78 4f 72 64 65 72 42 79 28 0d 0a 20  IndexOrderBy(.. 
7590: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
75a0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
75b0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
75c0: 65 72 62 79 20 6f 72 64 65 72 42 79 0d 0a 20 20  erby orderBy..  
75d0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
75e0: 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
75f0: 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 2c  orderBy.iColumn,
7600: 20 6f 72 64 65 72 42 79 2e 64 65 73 63 29 0d 0a   orderBy.desc)..
7610: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7620: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
7630: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d  hing...        }
7640: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
7650: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
7660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76a0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
76b0: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
76c0: 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  e Constructors..
76d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
76e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
76f0: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
7700: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
7710: 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68  s class using th
7720: 65 20 73 70 65 63 69 66 69 65 64 20 66 69 65 6c  e specified fiel
7730: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  d..        /// v
7740: 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  alues...        
7750: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7760: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
7770: 61 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d 6e  am name="iColumn
7780: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
7790: 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a  Column number...
77a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
77b0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
77c0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
77d0: 65 73 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  esc">..        /
77e0: 2f 2f 20 54 72 75 65 20 66 6f 72 20 44 45 53 43  // True for DESC
77f0: 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43  .  False for ASC
7800: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7810: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
7820: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
7830: 6e 64 65 78 4f 72 64 65 72 42 79 28 0d 0a 20 20  ndexOrderBy(..  
7840: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 43            int iC
7850: 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20  olumn,..        
7860: 20 20 20 20 62 79 74 65 20 64 65 73 63 0d 0a 20      byte desc.. 
7870: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
7880: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7890: 20 20 20 20 20 74 68 69 73 2e 69 43 6f 6c 75 6d       this.iColum
78a0: 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  n = iColumn;..  
78b0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 64            this.d
78c0: 65 73 63 20 3d 20 64 65 73 63 3b 0d 0a 20 20 20  esc = desc;..   
78d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
78e0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
78f0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7940: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
7950: 50 75 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20  Public Fields.. 
7960: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
7970: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
7980: 2f 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e  / Column number.
7990: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
79a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
79b0: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f    public int iCo
79c0: 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lumn;....       
79d0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
7a20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7a30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72  ..        /// Tr
7a40: 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61  ue for DESC.  Fa
7a50: 6c 73 65 20 66 6f 72 20 41 53 43 2e 0d 0a 20 20  lse for ASC...  
7a60: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7a70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
7a80: 62 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b 0d  blic byte desc;.
7a90: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
7aa0: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
7ab0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
7ac0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
7ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7b10: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
7b20: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
7b30: 6e 74 55 73 61 67 65 20 48 65 6c 70 65 72 20 43  ntUsage Helper C
7b40: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
7b50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
7b60: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
7b70: 65 73 65 6e 74 73 20 74 68 65 20 6e 61 74 69 76  esents the nativ
7b80: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
7b90: 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
7ba0: 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74  ..    /// struct
7bb0: 75 72 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  ure from the SQL
7bc0: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
7bd0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
7be0: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
7bf0: 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  c sealed class S
7c00: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
7c10: 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 7b  aintUsage..    {
7c20: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
7c30: 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74  n Internal Const
7c40: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
7c50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7c60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
7c70: 74 72 75 63 74 73 20 61 20 64 65 66 61 75 6c 74  tructs a default
7c80: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
7c90: 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  s class...      
7ca0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7cb0: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
7cc0: 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  al SQLiteIndexCo
7cd0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 29 0d  nstraintUsage().
7ce0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
7cf0: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
7d00: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
7d10: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
7d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d60: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
7d70: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7d80: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
7d90: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
7da0: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 75   of this class u
7db0: 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  sing the specifi
7dc0: 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  ed native..     
7dd0: 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69     /// sqlite3_i
7de0: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
7df0: 75 73 61 67 65 20 73 74 72 75 63 74 75 72 65 2e  usage structure.
7e00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
7e10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7e20: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
7e30: 65 3d 22 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  e="constraintUsa
7e40: 67 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ge">..        //
7e50: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c  / The native sql
7e60: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
7e70: 72 61 69 6e 74 5f 75 73 61 67 65 20 73 74 72 75  raint_usage stru
7e80: 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d 0a 20  cture to use... 
7e90: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
7ea0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
7eb0: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
7ec0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
7ed0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  (..            U
7ee0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
7ef0: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
7f00: 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
7f10: 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  e constraintUsag
7f20: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
7f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
7f40: 74 68 69 73 28 63 6f 6e 73 74 72 61 69 6e 74 55  this(constraintU
7f50: 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78 2c 20  sage.argvIndex, 
7f60: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e  constraintUsage.
7f70: 6f 6d 69 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  omit)..        {
7f80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
7f90: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
7fa0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
7fb0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
7fc0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8010: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
8020: 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75   Private Constru
8030: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
8040: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8050: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
8060: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
8070: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 75   of this class u
8080: 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  sing the specifi
8090: 65 64 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20  ed field..      
80a0: 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a 20    /// values... 
80b0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
80c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
80d0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
80e0: 61 72 67 76 49 6e 64 65 78 22 3e 0d 0a 20 20 20  argvIndex">..   
80f0: 20 20 20 20 20 2f 2f 2f 20 49 66 20 67 72 65 61       /// If grea
8100: 74 65 72 20 74 68 61 6e 20 30 2c 20 63 6f 6e 73  ter than 0, cons
8110: 74 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f  traint is part o
8120: 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65  f argv to xFilte
8130: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
8140: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
8150: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
8160: 65 3d 22 6f 6d 69 74 22 3e 0d 0a 20 20 20 20 20  e="omit">..     
8170: 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f     /// Do not co
8180: 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68  de a test for th
8190: 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a  is constraint...
81a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
81b0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
81c0: 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
81d0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
81e0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  (..            i
81f0: 6e 74 20 61 72 67 76 49 6e 64 65 78 2c 0d 0a 20  nt argvIndex,.. 
8200: 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 20             byte 
8210: 6f 6d 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20  omit..          
8220: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
8230: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
8240: 2e 61 72 67 76 49 6e 64 65 78 20 3d 20 61 72 67  .argvIndex = arg
8250: 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  vIndex;..       
8260: 20 20 20 20 20 74 68 69 73 2e 6f 6d 69 74 20 3d       this.omit =
8270: 20 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20   omit;..        
8280: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
8290: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
82a0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
82b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
82f0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
8300: 69 63 20 46 69 65 6c 64 73 0d 0a 20 20 20 20 20  ic Fields..     
8310: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8320: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66  ..        /// If
8330: 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 30 2c   greater than 0,
8340: 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70   constraint is p
8350: 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78  art of argv to x
8360: 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20 20 20 20  Filter...       
8370: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8380: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
8390: 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 0d 0a  int argvIndex;..
83a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
83b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83f0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
8400: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8410: 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63      /// Do not c
8420: 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74  ode a test for t
8430: 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d  his constraint..
8440: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
8450: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
8460: 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69   public byte omi
8470: 74 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  t;..        #end
8480: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
8490: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
84a0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
84b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84f0: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
8500: 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74  SQLiteIndexInput
8510: 73 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a  s Helper Class..
8520: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8530: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
8540: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
8550: 20 74 68 65 20 76 61 72 69 6f 75 73 20 69 6e 70   the various inp
8560: 75 74 73 20 70 72 6f 76 69 64 65 64 20 62 79 20  uts provided by 
8570: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d  the SQLite core.
8580: 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79  .    /// library
8590: 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65   to the <see cre
85a0: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
85b0: 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65  dModule.BestInde
85c0: 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  x" /> method... 
85d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
85e0: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65  >..    public se
85f0: 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
8600: 65 49 6e 64 65 78 49 6e 70 75 74 73 0d 0a 20 20  eIndexInputs..  
8610: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
8620: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f  gion Internal Co
8630: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
8640: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8650: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
8660: 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
8670: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
8680: 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
8690: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
86a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
86b0: 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69   name="nConstrai
86c0: 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
86d0: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
86e0: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
86f0: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
8700: 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74  " /> instances t
8710: 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  o..        /// p
8720: 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63  re-allocate spac
8730: 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  e for...        
8740: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
8750: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
8760: 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22   name="nOrderBy"
8770: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
8780: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65  he number of <se
8790: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
87a0: 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 69  dexOrderBy" /> i
87b0: 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20  nstances to..   
87c0: 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c       /// pre-all
87d0: 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e  ocate space for.
87e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
87f0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
8800: 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49  internal SQLiteI
8810: 6e 64 65 78 49 6e 70 75 74 73 28 69 6e 74 20 6e  ndexInputs(int n
8820: 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69 6e 74 20  Constraint, int 
8830: 6e 4f 72 64 65 72 42 79 29 0d 0a 20 20 20 20 20  nOrderBy)..     
8840: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8850: 20 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d 20    constraints = 
8860: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43  new SQLiteIndexC
8870: 6f 6e 73 74 72 61 69 6e 74 5b 6e 43 6f 6e 73 74  onstraint[nConst
8880: 72 61 69 6e 74 5d 3b 0d 0a 20 20 20 20 20 20 20  raint];..       
8890: 20 20 20 20 20 6f 72 64 65 72 42 79 73 20 3d 20       orderBys = 
88a0: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 4f  new SQLiteIndexO
88b0: 72 64 65 72 42 79 5b 6e 4f 72 64 65 72 42 79 5d  rderBy[nOrderBy]
88c0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
88d0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
88e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
88f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8930: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
8940: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
8950: 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
8960: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
8970: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b  IndexConstraint[
8980: 5d 20 63 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a  ] constraints;..
8990: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
89a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
89b0: 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f 66 20 3c  // An array of <
89c0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
89d0: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22  IndexConstraint"
89e0: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
89f0: 6e 63 65 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f  nces,..        /
8a00: 2f 2f 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 69  // each containi
8a10: 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73  ng information s
8a20: 75 70 70 6c 69 65 64 20 62 79 20 74 68 65 20 53  upplied by the S
8a30: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
8a40: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
8a50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8a60: 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
8a70: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
8a80: 74 5b 5d 20 43 6f 6e 73 74 72 61 69 6e 74 73 0d  t[] Constraints.
8a90: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8aa0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
8ab0: 74 75 72 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73  turn constraints
8ac0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
8ad0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
8ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b20: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
8b30: 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78  vate SQLiteIndex
8b40: 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64 65 72 42  OrderBy[] orderB
8b50: 79 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ys;..        ///
8b60: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8b70: 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79      /// An array
8b80: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
8b90: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
8ba0: 79 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  y" /> object ins
8bb0: 74 61 6e 63 65 73 2c 0d 0a 20 20 20 20 20 20 20  tances,..       
8bc0: 20 2f 2f 2f 20 65 61 63 68 20 63 6f 6e 74 61 69   /// each contai
8bd0: 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ning information
8be0: 20 73 75 70 70 6c 69 65 64 20 62 79 20 74 68 65   supplied by the
8bf0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
8c00: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
8c10: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8c20: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
8c30: 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79  LiteIndexOrderBy
8c40: 5b 5d 20 4f 72 64 65 72 42 79 73 0d 0a 20 20 20  [] OrderBys..   
8c50: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8c60: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
8c70: 20 6f 72 64 65 72 42 79 73 3b 20 7d 0d 0a 20 20   orderBys; }..  
8c80: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8c90: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
8ca0: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
8cb0: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
8cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d00: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
8d10: 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78  gion SQLiteIndex
8d20: 4f 75 74 70 75 74 73 20 48 65 6c 70 65 72 20 43  Outputs Helper C
8d30: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
8d40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
8d50: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
8d60: 65 73 65 6e 74 73 20 74 68 65 20 76 61 72 69 6f  esents the vario
8d70: 75 73 20 6f 75 74 70 75 74 73 20 70 72 6f 76 69  us outputs provi
8d80: 64 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74  ded to the SQLit
8d90: 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f 20  e core..    /// 
8da0: 6c 69 62 72 61 72 79 20 62 79 20 74 68 65 20 3c  library by the <
8db0: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
8dc0: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42  eManagedModule.B
8dd0: 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74  estIndex" /> met
8de0: 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  hod...    /// </
8df0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
8e00: 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73  blic sealed clas
8e10: 73 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74  s SQLiteIndexOut
8e20: 70 75 74 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  puts..    {..   
8e30: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
8e40: 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f  ernal Constructo
8e50: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
8e60: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8e70: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
8e80: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
8e90: 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
8ea0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
8eb0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
8ec0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
8ed0: 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20  Constraint">..  
8ee0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
8ef0: 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65  mber of <see cre
8f00: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  f="SQLiteIndexCo
8f10: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 22 20 2f  nstraintUsage" /
8f20: 3e 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20  > instances..   
8f30: 20 20 20 20 20 2f 2f 2f 20 74 6f 20 70 72 65 2d       /// to pre-
8f40: 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66  allocate space f
8f50: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
8f60: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8f70: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
8f80: 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 28 69  teIndexOutputs(i
8f90: 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29 0d  nt nConstraint).
8fa0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8fb0: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
8fc0: 6e 74 55 73 61 67 65 73 20 3d 20 6e 65 77 20 53  ntUsages = new S
8fd0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
8fe0: 61 69 6e 74 55 73 61 67 65 5b 6e 43 6f 6e 73 74  aintUsage[nConst
8ff0: 72 61 69 6e 74 5d 3b 0d 0a 0d 0a 20 20 20 20 20  raint];....     
9000: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9010: 20 20 20 20 20 20 20 2f 2f 20 42 55 47 46 49 58         // BUGFIX
9020: 3a 20 43 72 65 61 74 65 20 74 68 65 20 5b 65 6d  : Create the [em
9030: 70 74 79 5d 20 63 6f 6e 73 74 72 61 69 6e 74 20  pty] constraint 
9040: 75 73 61 67 65 73 20 6e 6f 77 20 73 6f 20 74 68  usages now so th
9050: 65 79 20 63 61 6e 20 62 65 0d 0a 20 20 20 20 20  ey can be..     
9060: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9070: 20 20 75 73 65 64 20 62 79 20 74 68 65 20 78 42    used by the xB
9080: 65 73 74 49 6e 64 65 78 20 63 61 6c 6c 62 61 63  estIndex callbac
9090: 6b 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k...            
90a0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
90b0: 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72  for (int iConstr
90c0: 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74  aint = 0; iConst
90d0: 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61  raint < nConstra
90e0: 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  int; iConstraint
90f0: 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
9100: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55       constraintU
9110: 73 61 67 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e  sages[iConstrain
9120: 74 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49  t] = new SQLiteI
9130: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
9140: 61 67 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  age();..        
9150: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
9160: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
9170: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
91c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
91d0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
91e0: 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65  etermines if the
91f0: 20 6e 61 74 69 76 65 20 65 73 74 69 6d 61 74 65   native estimate
9200: 64 52 6f 77 73 20 66 69 65 6c 64 20 63 61 6e 20  dRows field can 
9210: 62 65 20 75 73 65 64 2c 20 62 61 73 65 64 20 6f  be used, based o
9220: 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  n..        /// t
9230: 68 65 20 61 76 61 69 6c 61 62 6c 65 20 76 65 72  he available ver
9240: 73 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69  sion of the SQLi
9250: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
9260: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
9270: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9280: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
9290: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
92a0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65  -zero if the <se
92b0: 65 20 63 72 65 66 3d 22 45 73 74 69 6d 61 74 65  e cref="Estimate
92c0: 64 52 6f 77 73 22 20 2f 3e 20 70 72 6f 70 65 72  dRows" /> proper
92d0: 74 79 20 69 73 20 73 75 70 70 6f 72 74 65 64 0d  ty is supported.
92e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20  .        /// by 
92f0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
9300: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
9310: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
9320: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
9330: 20 62 6f 6f 6c 20 43 61 6e 55 73 65 45 73 74 69   bool CanUseEsti
9340: 6d 61 74 65 64 52 6f 77 73 28 29 0d 0a 20 20 20  matedRows()..   
9350: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9360: 20 20 20 20 69 66 20 28 55 6e 73 61 66 65 4e 61      if (UnsafeNa
9370: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
9380: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e  te3_libversion_n
9390: 75 6d 62 65 72 28 29 20 3e 3d 20 33 30 30 38 30  umber() >= 30080
93a0: 30 32 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  02)..           
93b0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
93c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
93d0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
93e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
93f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
9440: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
9450: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
9460: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
9470: 20 74 68 65 20 6e 61 74 69 76 65 20 66 6c 61 67   the native flag
9480: 73 20 66 69 65 6c 64 20 63 61 6e 20 62 65 20 75  s field can be u
9490: 73 65 64 2c 20 62 61 73 65 64 20 6f 6e 20 74 68  sed, based on th
94a0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
94b0: 76 61 69 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e  vailable version
94c0: 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 63   of the SQLite c
94d0: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
94e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
94f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
9500: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
9510: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
9520: 6f 20 69 66 20 74 68 65 20 3c 73 65 65 20 63 72  o if the <see cr
9530: 65 66 3d 22 49 6e 64 65 78 46 6c 61 67 73 22 20  ef="IndexFlags" 
9540: 2f 3e 20 70 72 6f 70 65 72 74 79 20 69 73 20 73  /> property is s
9550: 75 70 70 6f 72 74 65 64 20 62 79 0d 0a 20 20 20  upported by..   
9560: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
9570: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
9580: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
9590: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
95a0: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43     public bool C
95b0: 61 6e 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28  anUseIndexFlags(
95c0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
95d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 55 6e            if (Un
95e0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
95f0: 73 2e 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72  s.sqlite3_libver
9600: 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 20 3e 3d  sion_number() >=
9610: 20 33 30 30 39 30 30 30 29 0d 0a 20 20 20 20 20   3009000)..     
9620: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
9630: 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  n true;....     
9640: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
9650: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lse;..        }.
9660: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
9670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96b0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
96c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
96d0: 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
96e0: 6e 65 73 20 69 66 20 74 68 65 20 6e 61 74 69 76  nes if the nativ
96f0: 65 20 66 6c 61 67 73 20 66 69 65 6c 64 20 63 61  e flags field ca
9700: 6e 20 62 65 20 75 73 65 64 2c 20 62 61 73 65 64  n be used, based
9710: 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   on the..       
9720: 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 20 76   /// available v
9730: 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53 51  ersion of the SQ
9740: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
9750: 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
9760: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9770: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
9780: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
9790: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 3c  on-zero if the <
97a0: 73 65 65 20 63 72 65 66 3d 22 43 6f 6c 75 6d 6e  see cref="Column
97b0: 73 55 73 65 64 22 20 2f 3e 20 70 72 6f 70 65 72  sUsed" /> proper
97c0: 74 79 20 69 73 20 73 75 70 70 6f 72 74 65 64 20  ty is supported 
97d0: 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  by..        /// 
97e0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
97f0: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
9800: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
9810: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
9820: 20 62 6f 6f 6c 20 43 61 6e 55 73 65 43 6f 6c 75   bool CanUseColu
9830: 6d 6e 73 55 73 65 64 28 29 0d 0a 20 20 20 20 20  mnsUsed()..     
9840: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9850: 20 20 69 66 20 28 55 6e 73 61 66 65 4e 61 74 69    if (UnsafeNati
9860: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
9870: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d  3_libversion_num
9880: 62 65 72 28 29 20 3e 3d 20 33 30 31 30 30 30 30  ber() >= 3010000
9890: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
98a0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
98b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
98c0: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
98d0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
98e0: 20 20 20 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
9930: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
9940: 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d  blic Properties.
9950: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
9960: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
9970: 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f  traintUsage[] co
9980: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 3b 0d  nstraintUsages;.
9990: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
99a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
99b0: 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f 66 20  /// An array of 
99c0: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
99d0: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
99e0: 55 73 61 67 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Usage" /> object
99f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
9a00: 73 74 61 6e 63 65 73 2c 20 65 61 63 68 20 63 6f  stances, each co
9a10: 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61  ntaining informa
9a20: 74 69 6f 6e 20 74 6f 20 62 65 20 73 75 70 70 6c  tion to be suppl
9a30: 69 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74  ied to the SQLit
9a40: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
9a50: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
9a60: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9a70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
9a80: 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
9a90: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b  ConstraintUsage[
9aa0: 5d 20 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  ] ConstraintUsag
9ab0: 65 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  es..        {.. 
9ac0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
9ad0: 20 72 65 74 75 72 6e 20 63 6f 6e 73 74 72 61 69   return constrai
9ae0: 6e 74 55 73 61 67 65 73 3b 20 7d 0d 0a 20 20 20  ntUsages; }..   
9af0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9b00: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9b50: 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74       private int
9b60: 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20   indexNumber;.. 
9b70: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9b80: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
9b90: 2f 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f  / Number used to
9ba0: 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74   help identify t
9bb0: 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
9bc0: 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77  x.  This value w
9bd0: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ill..        ///
9be0: 20 6c 61 74 65 72 20 62 65 20 70 72 6f 76 69 64   later be provid
9bf0: 65 64 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63  ed to the <see c
9c00: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
9c10: 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72  gedModule.Filter
9c20: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
9c30: 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  / method...     
9c40: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9c50: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
9c60: 63 20 69 6e 74 20 49 6e 64 65 78 4e 75 6d 62 65  c int IndexNumbe
9c70: 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  r..        {..  
9c80: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
9c90: 72 65 74 75 72 6e 20 69 6e 64 65 78 4e 75 6d 62  return indexNumb
9ca0: 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  er; }..         
9cb0: 20 20 20 73 65 74 20 7b 20 69 6e 64 65 78 4e 75     set { indexNu
9cc0: 6d 62 65 72 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  mber = value; }.
9cd0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9ce0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9d30: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
9d40: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 53 74 72   string indexStr
9d50: 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ing;..        //
9d60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9d70: 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20       /// String 
9d80: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
9d90: 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
9da0: 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20  ed index.  This 
9db0: 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20  value will..    
9dc0: 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72 20 62 65      /// later be
9dd0: 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
9de0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
9df0: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
9e00: 2e 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20  .Filter" />..   
9e10: 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e       /// method.
9e20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
9e30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9e40: 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
9e50: 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20 20 20  IndexString..   
9e60: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9e70: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
9e80: 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d   indexString; }.
9e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
9ea0: 20 7b 20 69 6e 64 65 78 53 74 72 69 6e 67 20 3d   { indexString =
9eb0: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
9ec0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f10: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
9f20: 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 6e     private int n
9f30: 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74  eedToFreeIndexSt
9f40: 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ring;..        /
9f50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9f60: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
9f70: 72 6f 20 69 66 20 74 68 65 20 69 6e 64 65 78 20  ro if the index 
9f80: 73 74 72 69 6e 67 20 6d 75 73 74 20 62 65 20 66  string must be f
9f90: 72 65 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  reed by the SQLi
9fa0: 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20  te core..       
9fb0: 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20   /// library... 
9fc0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
9fd0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
9fe0: 75 62 6c 69 63 20 69 6e 74 20 4e 65 65 64 54 6f  ublic int NeedTo
9ff0: 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 0d  FreeIndexString.
a000: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
a010: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
a020: 74 75 72 6e 20 6e 65 65 64 54 6f 46 72 65 65 49  turn needToFreeI
a030: 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20  ndexString; }.. 
a040: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
a050: 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78   needToFreeIndex
a060: 53 74 72 69 6e 67 20 3d 20 76 61 6c 75 65 3b 20  String = value; 
a070: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
a080: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
a090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a0d0: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
a0e0: 74 65 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f  te int orderByCo
a0f0: 6e 73 75 6d 65 64 3b 0d 0a 20 20 20 20 20 20 20  nsumed;..       
a100: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
a110: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65          /// True
a120: 20 69 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c   if output is al
a130: 72 65 61 64 79 20 6f 72 64 65 72 65 64 2e 0d 0a  ready ordered...
a140: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
a150: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
a160: 70 75 62 6c 69 63 20 69 6e 74 20 4f 72 64 65 72  public int Order
a170: 42 79 43 6f 6e 73 75 6d 65 64 0d 0a 20 20 20 20  ByConsumed..    
a180: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a190: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
a1a0: 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b  orderByConsumed;
a1b0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
a1c0: 73 65 74 20 7b 20 6f 72 64 65 72 42 79 43 6f 6e  set { orderByCon
a1d0: 73 75 6d 65 64 20 3d 20 76 61 6c 75 65 3b 20 7d  sumed = value; }
a1e0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
a1f0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
a200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
a240: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
a250: 65 20 64 6f 75 62 6c 65 3f 20 65 73 74 69 6d 61  e double? estima
a260: 74 65 64 43 6f 73 74 3b 0d 0a 20 20 20 20 20 20  tedCost;..      
a270: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
a280: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 73 74  .        /// Est
a290: 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75  imated cost of u
a2a0: 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 2e  sing this index.
a2b0: 20 20 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20 76    Using a null v
a2c0: 61 6c 75 65 20 68 65 72 65 0d 0a 20 20 20 20 20  alue here..     
a2d0: 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74 65 73     /// indicates
a2e0: 20 74 68 61 74 20 61 20 64 65 66 61 75 6c 74 20   that a default 
a2f0: 65 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 76  estimated cost v
a300: 61 6c 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75  alue should be u
a310: 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
a320: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a330: 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75        public dou
a340: 62 6c 65 3f 20 45 73 74 69 6d 61 74 65 64 43 6f  ble? EstimatedCo
a350: 73 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  st..        {.. 
a360: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
a370: 20 72 65 74 75 72 6e 20 65 73 74 69 6d 61 74 65   return estimate
a380: 64 43 6f 73 74 3b 20 7d 0d 0a 20 20 20 20 20 20  dCost; }..      
a390: 20 20 20 20 20 20 73 65 74 20 7b 20 65 73 74 69        set { esti
a3a0: 6d 61 74 65 64 43 6f 73 74 20 3d 20 76 61 6c 75  matedCost = valu
a3b0: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
a3c0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
a3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a410: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
a420: 69 76 61 74 65 20 6c 6f 6e 67 3f 20 65 73 74 69  ivate long? esti
a430: 6d 61 74 65 64 52 6f 77 73 3b 0d 0a 20 20 20 20  matedRows;..    
a440: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a450: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45  >..        /// E
a460: 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65 72 20  stimated number 
a470: 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64  of rows returned
a480: 2e 20 20 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20  .  Using a null 
a490: 76 61 6c 75 65 20 68 65 72 65 0d 0a 20 20 20 20  value here..    
a4a0: 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74 65      /// indicate
a4b0: 73 20 74 68 61 74 20 61 20 64 65 66 61 75 6c 74  s that a default
a4c0: 20 65 73 74 69 6d 61 74 65 64 20 72 6f 77 73 20   estimated rows 
a4d0: 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62 65 20  value should be 
a4e0: 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
a4f0: 2f 2f 20 54 68 69 73 20 70 72 6f 70 65 72 74 79  // This property
a500: 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69   has no effect i
a510: 66 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  f the SQLite cor
a520: 65 20 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74  e library is not
a530: 20 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   at..        ///
a540: 20 6c 65 61 73 74 20 76 65 72 73 69 6f 6e 20 33   least version 3
a550: 2e 38 2e 32 2e 0d 0a 20 20 20 20 20 20 20 20 2f  .8.2...        /
a560: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
a570: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f         public lo
a580: 6e 67 3f 20 45 73 74 69 6d 61 74 65 64 52 6f 77  ng? EstimatedRow
a590: 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  s..        {..  
a5a0: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
a5b0: 72 65 74 75 72 6e 20 65 73 74 69 6d 61 74 65 64  return estimated
a5c0: 52 6f 77 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  Rows; }..       
a5d0: 20 20 20 20 20 73 65 74 20 7b 20 65 73 74 69 6d       set { estim
a5e0: 61 74 65 64 52 6f 77 73 20 3d 20 76 61 6c 75 65  atedRows = value
a5f0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
a600: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
a610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a650: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
a660: 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78  vate SQLiteIndex
a670: 46 6c 61 67 73 3f 20 69 6e 64 65 78 46 6c 61 67  Flags? indexFlag
a680: 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s;..        /// 
a690: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a6a0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
a6b0: 20 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20   that should be 
a6c0: 75 73 65 64 20 77 69 74 68 20 74 68 69 73 20 69  used with this i
a6d0: 6e 64 65 78 2e 20 20 55 73 69 6e 67 20 61 20 6e  ndex.  Using a n
a6e0: 75 6c 6c 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ull value..     
a6f0: 20 20 20 2f 2f 2f 20 68 65 72 65 20 69 6e 64 69     /// here indi
a700: 63 61 74 65 73 20 74 68 61 74 20 61 20 64 65 66  cates that a def
a710: 61 75 6c 74 20 66 6c 61 67 73 20 76 61 6c 75 65  ault flags value
a720: 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 2e   should be used.
a730: 20 20 54 68 69 73 0d 0a 20 20 20 20 20 20 20 20    This..        
a740: 2f 2f 2f 20 70 72 6f 70 65 72 74 79 20 68 61 73  /// property has
a750: 20 6e 6f 20 65 66 66 65 63 74 20 69 66 20 74 68   no effect if th
a760: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
a770: 62 72 61 72 79 20 69 73 20 6e 6f 74 20 61 74 20  brary is not at 
a780: 6c 65 61 73 74 0d 0a 20 20 20 20 20 20 20 20 2f  least..        /
a790: 2f 2f 20 76 65 72 73 69 6f 6e 20 33 2e 39 2e 30  // version 3.9.0
a7a0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
a7b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a7c0: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
a7d0: 49 6e 64 65 78 46 6c 61 67 73 3f 20 49 6e 64 65  IndexFlags? Inde
a7e0: 78 46 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20  xFlags..        
a7f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
a800: 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65  et { return inde
a810: 78 46 6c 61 67 73 3b 20 7d 0d 0a 20 20 20 20 20  xFlags; }..     
a820: 20 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e 64         set { ind
a830: 65 78 46 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b  exFlags = value;
a840: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
a850: 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
a8b0: 61 74 65 20 6c 6f 6e 67 3f 20 63 6f 6c 75 6d 6e  ate long? column
a8c0: 73 55 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  sUsed;..        
a8d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
a8e0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
a8f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49  >..        /// I
a900: 6e 64 69 63 61 74 65 73 20 77 68 69 63 68 20 63  ndicates which c
a910: 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 76 69  olumns of the vi
a920: 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 61 79 20  rtual table may 
a930: 62 65 20 72 65 71 75 69 72 65 64 20 62 79 20 74  be required by t
a940: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
a950: 63 75 72 72 65 6e 74 20 73 63 61 6e 2e 20 20 56  current scan.  V
a960: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 6f 6c  irtual table col
a970: 75 6d 6e 73 20 61 72 65 20 6e 75 6d 62 65 72 65  umns are numbere
a980: 64 20 66 72 6f 6d 20 7a 65 72 6f 20 69 6e 20 74  d from zero in t
a990: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
a9a0: 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68 20 74  order in which t
a9b0: 68 65 79 20 61 70 70 65 61 72 20 77 69 74 68 69  hey appear withi
a9c0: 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 41 42  n the CREATE TAB
a9d0: 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 70 61 73  LE statement pas
a9e0: 73 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  sed..        ///
a9f0: 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 65 63 6c   to sqlite3_decl
aa00: 61 72 65 5f 76 74 61 62 28 29 2e 20 20 46 6f 72  are_vtab().  For
aa10: 20 74 68 65 20 66 69 72 73 74 20 36 33 20 63 6f   the first 63 co
aa20: 6c 75 6d 6e 73 20 28 63 6f 6c 75 6d 6e 73 20 30  lumns (columns 0
aa30: 2d 36 32 29 2c 0d 0a 20 20 20 20 20 20 20 20 2f  -62),..        /
aa40: 2f 2f 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  // the correspon
aa50: 64 69 6e 67 20 62 69 74 20 69 73 20 73 65 74 20  ding bit is set 
aa60: 77 69 74 68 69 6e 20 74 68 65 20 62 69 74 20 6d  within the bit m
aa70: 61 73 6b 20 69 66 20 74 68 65 20 63 6f 6c 75 6d  ask if the colum
aa80: 6e 20 6d 61 79 0d 0a 20 20 20 20 20 20 20 20 2f  n may..        /
aa90: 2f 2f 20 62 65 20 72 65 71 75 69 72 65 64 20 62  // be required b
aaa0: 79 20 53 51 4c 69 74 65 2e 20 20 49 66 20 74 68  y SQLite.  If th
aab0: 65 20 74 61 62 6c 65 20 68 61 73 20 61 74 20 6c  e table has at l
aac0: 65 61 73 74 20 36 34 20 63 6f 6c 75 6d 6e 73 20  east 64 columns 
aad0: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
aae0: 20 61 6e 79 20 63 6f 6c 75 6d 6e 20 74 6f 20 74   any column to t
aaf0: 68 65 20 72 69 67 68 74 20 6f 66 20 74 68 65 20  he right of the 
ab00: 66 69 72 73 74 20 36 33 20 69 73 20 72 65 71 75  first 63 is requ
ab10: 69 72 65 64 2c 20 74 68 65 6e 20 62 69 74 20 36  ired, then bit 6
ab20: 33 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f  3 of..        //
ab30: 2f 20 63 6f 6c 55 73 65 64 20 69 73 20 61 6c 73  / colUsed is als
ab40: 6f 20 73 65 74 2e 20 20 49 6e 20 6f 74 68 65 72  o set.  In other
ab50: 20 77 6f 72 64 73 2c 20 63 6f 6c 75 6d 6e 20 69   words, column i
ab60: 43 6f 6c 20 6d 61 79 20 62 65 20 72 65 71 75 69  Col may be requi
ab70: 72 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  red..        ///
ab80: 20 69 66 20 74 68 65 20 65 78 70 72 65 73 73 69   if the expressi
ab90: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  on..        /// 
aba0: 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
abb0: 20 2f 2f 2f 20 3c 70 61 72 61 3e 3c 63 6f 64 65   /// <para><code
abc0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 28  >..        /// (
abd0: 63 6f 6c 55 73 65 64 20 26 61 6d 70 3b 20 28 28  colUsed &amp; ((
abe0: 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 29 31  sqlite3_uint64)1
abf0: 20 26 6c 74 3b 26 6c 74 3b 20 28 69 43 6f 6c 26   &lt;&lt; (iCol&
ac00: 67 74 3b 3d 36 33 20 3f 20 36 33 20 3a 20 69 43  gt;=63 ? 63 : iC
ac10: 6f 6c 29 29 29 0d 0a 20 20 20 20 20 20 20 20 2f  ol)))..        /
ac20: 2f 2f 20 3c 2f 63 6f 64 65 3e 3c 2f 70 61 72 61  // </code></para
ac30: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
ac40: 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
ac50: 2f 2f 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20  // evaluates to 
ac60: 6e 6f 6e 2d 7a 65 72 6f 2e 20 20 55 73 69 6e 67  non-zero.  Using
ac70: 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65   a null value he
ac80: 72 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  re indicates tha
ac90: 74 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t a..        ///
aca0: 20 64 65 66 61 75 6c 74 20 66 6c 61 67 73 20 76   default flags v
acb0: 61 6c 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75  alue should be u
acc0: 73 65 64 2e 20 20 54 68 69 73 20 70 72 6f 70 65  sed.  This prope
acd0: 72 74 79 20 68 61 73 20 6e 6f 20 65 66 66 65 63  rty has no effec
ace0: 74 20 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f  t if..        //
acf0: 2f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  / the SQLite cor
ad00: 65 20 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74  e library is not
ad10: 20 61 74 20 6c 65 61 73 74 20 76 65 72 73 69 6f   at least versio
ad20: 6e 20 33 2e 31 30 2e 30 2e 0d 0a 20 20 20 20 20  n 3.10.0...     
ad30: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
ad40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
ad50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
ad60: 70 75 62 6c 69 63 20 6c 6f 6e 67 3f 20 43 6f 6c  public long? Col
ad70: 75 6d 6e 73 55 73 65 64 0d 0a 20 20 20 20 20 20  umnsUsed..      
ad80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ad90: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 63 6f   get { return co
ada0: 6c 75 6d 6e 73 55 73 65 64 3b 20 7d 0d 0a 20 20  lumnsUsed; }..  
adb0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
adc0: 63 6f 6c 75 6d 6e 73 55 73 65 64 20 3d 20 76 61  columnsUsed = va
add0: 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
ade0: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
adf0: 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
ae00: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
ae10: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
ae20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ae60: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
ae70: 51 4c 69 74 65 49 6e 64 65 78 20 48 65 6c 70 65  QLiteIndex Helpe
ae80: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
ae90: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
aea0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
aeb0: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 76 61  epresents the va
aec0: 72 69 6f 75 73 20 69 6e 70 75 74 73 20 61 6e 64  rious inputs and
aed0: 20 6f 75 74 70 75 74 73 20 75 73 65 64 20 77 69   outputs used wi
aee0: 74 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  th the..    /// 
aef0: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
af00: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
af10: 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
af20: 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  thod...    /// <
af30: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
af40: 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61  ublic sealed cla
af50: 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78 0d 0a  ss SQLiteIndex..
af60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
af70: 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
af80: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
af90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
afa0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
afb0: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
afc0: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
afd0: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
afe0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
aff0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b000: 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72  am name="nConstr
b010: 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  aint">..        
b020: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
b030: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
b040: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
b050: 6e 74 22 20 2f 3e 20 28 61 6e 64 0d 0a 20 20 20  nt" /> (and..   
b060: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
b070: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
b080: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 22 20  onstraintUsage" 
b090: 2f 3e 29 20 69 6e 73 74 61 6e 63 65 73 20 74 6f  />) instances to
b0a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72  ..        /// pr
b0b0: 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65  e-allocate space
b0c0: 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f   for...        /
b0d0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
b0e0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
b0f0: 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e  name="nOrderBy">
b100: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
b110: 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65  e number of <see
b120: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
b130: 65 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e  exOrderBy" /> in
b140: 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20  stances to..    
b150: 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f      /// pre-allo
b160: 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d  cate space for..
b170: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
b180: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
b190: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e  nternal SQLiteIn
b1a0: 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20  dex(..          
b1b0: 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e    int nConstrain
b1c0: 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
b1d0: 69 6e 74 20 6e 4f 72 64 65 72 42 79 0d 0a 20 20  int nOrderBy..  
b1e0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
b1f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b200: 20 20 20 20 69 6e 70 75 74 73 20 3d 20 6e 65 77      inputs = new
b210: 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75   SQLiteIndexInpu
b220: 74 73 28 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20  ts(nConstraint, 
b230: 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20  nOrderBy);..    
b240: 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 20          outputs 
b250: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
b260: 78 4f 75 74 70 75 74 73 28 6e 43 6f 6e 73 74 72  xOutputs(nConstr
b270: 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  aint);..        
b280: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
b290: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
b2a0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
b2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b2f0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
b300: 61 74 65 20 4d 61 72 73 68 61 6c 20 48 65 6c 70  ate Marshal Help
b310: 65 72 20 4d 65 74 68 6f 64 73 20 28 46 6f 72 20  er Methods (For 
b320: 54 65 73 74 20 55 73 65 20 4f 6e 6c 79 29 0d 0a  Test Use Only)..
b330: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
b340: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
b350: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 64  // Attempts to d
b360: 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 74 72  etermine the str
b370: 75 63 74 75 72 65 20 73 69 7a 65 73 20 6e 65 65  ucture sizes nee
b380: 64 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 6e  ded to create an
b390: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  d..        /// p
b3a0: 6f 70 75 6c 61 74 65 20 61 20 6e 61 74 69 76 65  opulate a native
b3b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
b3c0: 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
b3d0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
b3e0: 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22  ite3_index_info"
b3f0: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
b400: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
b410: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
b420: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
b430: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69   <param name="si
b440: 7a 65 4f 66 49 6e 66 6f 54 79 70 65 22 3e 0d 0a  zeOfInfoType">..
b450: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
b460: 73 69 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69  size of the nati
b470: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
b480: 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66  <see cref="Unsaf
b490: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
b4a0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
b4b0: 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  o" />..        /
b4c0: 2f 2f 20 73 74 72 75 63 74 75 72 65 20 69 73 20  // structure is 
b4d0: 73 74 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20  stored here...  
b4e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
b4f0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
b500: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a  <param name="siz
b510: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70  eOfConstraintTyp
b520: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
b530: 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   The size of the
b540: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
b550: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
b560: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
b570: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
b580: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e  x_constraint" />
b590: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
b5a0: 72 75 63 74 75 72 65 20 69 73 20 73 74 6f 72 65  ructure is store
b5b0: 64 20 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20  d here...       
b5c0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
b5d0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
b5e0: 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f 66 4f 72  m name="sizeOfOr
b5f0: 64 65 72 42 79 54 79 70 65 22 3e 0d 0a 20 20 20  derByType">..   
b600: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
b610: 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d  e of the native.
b620: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
b630: 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61  e cref="UnsafeNa
b640: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
b650: 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
b660: 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  y" />..        /
b670: 2f 2f 20 73 74 72 75 63 74 75 72 65 20 69 73 20  // structure is 
b680: 73 74 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20  stored here...  
b690: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
b6a0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
b6b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a  <param name="siz
b6c0: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
b6d0: 67 65 54 79 70 65 22 3e 0d 0a 20 20 20 20 20 20  geType">..      
b6e0: 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f    /// The size o
b6f0: 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  f the native..  
b700: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b710: 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76  ref="UnsafeNativ
b720: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
b730: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
b740: 74 5f 75 73 61 67 65 22 20 2f 3e 0d 0a 20 20 20  t_usage" />..   
b750: 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
b760: 72 65 20 69 73 20 73 74 6f 72 65 64 20 68 65 72  re is stored her
b770: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
b780: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b790: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
b7a0: 20 76 6f 69 64 20 53 69 7a 65 4f 66 4e 61 74 69   void SizeOfNati
b7b0: 76 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ve(..           
b7c0: 20 6f 75 74 20 69 6e 74 20 73 69 7a 65 4f 66 49   out int sizeOfI
b7d0: 6e 66 6f 54 79 70 65 2c 0d 0a 20 20 20 20 20 20  nfoType,..      
b7e0: 20 20 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69        out int si
b7f0: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79  zeOfConstraintTy
b800: 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe,..           
b810: 20 6f 75 74 20 69 6e 74 20 73 69 7a 65 4f 66 4f   out int sizeOfO
b820: 72 64 65 72 42 79 54 79 70 65 2c 0d 0a 20 20 20  rderByType,..   
b830: 20 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74           out int
b840: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
b850: 74 55 73 61 67 65 54 79 70 65 0d 0a 20 20 20 20  tUsageType..    
b860: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
b870: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b880: 20 20 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65    sizeOfInfoType
b890: 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
b8a0: 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20  f(typeof(..     
b8b0: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
b8c0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
b8d0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
b8e0: 6f 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  o));....        
b8f0: 20 20 20 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72      sizeOfConstr
b900: 61 69 6e 74 54 79 70 65 20 3d 20 4d 61 72 73 68  aintType = Marsh
b910: 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66  al.SizeOf(typeof
b920: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
b930: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
b940: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
b950: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29  ndex_constraint)
b960: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
b970: 20 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54    sizeOfOrderByT
b980: 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ype = Marshal.Si
b990: 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20  zeOf(typeof(..  
b9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
b9b0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
b9c0: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
b9d0: 6f 72 64 65 72 62 79 29 29 3b 0d 0a 0d 0a 20 20  orderby));....  
b9e0: 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66            sizeOf
b9f0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54  ConstraintUsageT
ba00: 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ype = Marshal.Si
ba10: 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20  zeOf(typeof(..  
ba20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
ba30: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
ba40: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
ba50: 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
ba60: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ));..        }..
ba70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
ba80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
baa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bac0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
bad0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
bae0: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
baf0: 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 61 6e 64   to allocate and
bb00: 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 20 6e 61   initialize a na
bb10: 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tive..        //
bb20: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73  / <see cref="Uns
bb30: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
bb40: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69  .sqlite3_index_i
bb50: 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  nfo" />..       
bb60: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d   /// structure..
bb70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
bb80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
bb90: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
bba0: 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d  ="nConstraint">.
bbb0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
bbc0: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
bbd0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
bbe0: 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20  xConstraint" /> 
bbf0: 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20  instances to..  
bc00: 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c        /// pre-al
bc10: 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72  locate space for
bc20: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
bc30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
bc40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
bc50: 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d 0a 20 20  ="nOrderBy">..  
bc60: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
bc70: 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65  mber of <see cre
bc80: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72  f="SQLiteIndexOr
bc90: 64 65 72 42 79 22 20 2f 3e 20 69 6e 73 74 61 6e  derBy" /> instan
bca0: 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  ces to..        
bcb0: 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65  /// pre-allocate
bcc0: 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20   space for...   
bcd0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
bce0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
bcf0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
bd00: 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 6c 79 20    /// The newly 
bd10: 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69 76 65  allocated native
bd20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
bd30: 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
bd40: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
bd50: 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22  ite3_index_info"
bd60: 20 2f 3e 20 73 74 72 75 63 74 75 72 65 0d 0a 20   /> structure.. 
bd70: 20 20 20 20 20 20 20 2f 2f 2f 20 2d 4f 52 2d 20         /// -OR- 
bd80: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
bd90: 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 69 74  r.Zero" /> if it
bda0: 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 66 75   could not be fu
bdb0: 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a  lly allocated...
bdc0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
bdd0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
bde0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
bdf0: 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 41 6e  ntPtr AllocateAn
be00: 64 49 6e 69 74 69 61 6c 69 7a 65 4e 61 74 69 76  dInitializeNativ
be10: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
be20: 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c  int nConstraint,
be30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
be40: 74 20 6e 4f 72 64 65 72 42 79 0d 0a 20 20 20 20  t nOrderBy..    
be50: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
be60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
be70: 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78 20    IntPtr pIndex 
be80: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
be90: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
bea0: 74 72 20 70 49 6e 66 6f 20 3d 20 49 6e 74 50 74  tr pInfo = IntPt
beb0: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
bec0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e       IntPtr pCon
bed0: 73 74 72 61 69 6e 74 20 3d 20 49 6e 74 50 74 72  straint = IntPtr
bee0: 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
bef0: 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72 64 65      IntPtr pOrde
bf00: 72 42 79 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  rBy = IntPtr.Zer
bf10: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
bf20: 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69  IntPtr pConstrai
bf30: 6e 74 55 73 61 67 65 20 3d 20 49 6e 74 50 74 72  ntUsage = IntPtr
bf40: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
bf50: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
bf60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
bf70: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
bf80: 7a 65 4f 66 49 6e 66 6f 54 79 70 65 3b 0d 0a 20  zeOfInfoType;.. 
bf90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
bfa0: 6e 74 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79  nt sizeOfOrderBy
bfb0: 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Type;..         
bfc0: 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f         int sizeO
bfd0: 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 3b  fConstraintType;
bfe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bff0: 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73    int sizeOfCons
c000: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 3b  traintUsageType;
c010: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c020: 20 20 20 20 53 69 7a 65 4f 66 4e 61 74 69 76 65      SizeOfNative
c030: 28 6f 75 74 20 73 69 7a 65 4f 66 49 6e 66 6f 54  (out sizeOfInfoT
c040: 79 70 65 2c 20 6f 75 74 20 73 69 7a 65 4f 66 43  ype, out sizeOfC
c050: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 2c 0d 0a  onstraintType,..
c060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c070: 20 20 20 20 6f 75 74 20 73 69 7a 65 4f 66 4f 72      out sizeOfOr
c080: 64 65 72 42 79 54 79 70 65 2c 20 6f 75 74 20 73  derByType, out s
c090: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
c0a0: 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  sageType);....  
c0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
c0c0: 20 28 28 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70   ((sizeOfInfoTyp
c0d0: 65 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20  e > 0) &&..     
c0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
c0f0: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
c100: 54 79 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20  Type > 0) &&..  
c110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c120: 20 20 28 73 69 7a 65 4f 66 4f 72 64 65 72 42 79    (sizeOfOrderBy
c130: 54 79 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20  Type > 0) &&..  
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c150: 20 20 28 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61    (sizeOfConstra
c160: 69 6e 74 55 73 61 67 65 54 79 70 65 20 3e 20 30  intUsageType > 0
c170: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
c180: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c190: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f             pInfo
c1a0: 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e   = SQLiteMemory.
c1b0: 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 4f 66 49  Allocate(sizeOfI
c1c0: 6e 66 6f 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  nfoType);....   
c1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1e0: 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53   pConstraint = S
c1f0: 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
c200: 63 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  cate(..         
c210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
c220: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54  izeOfConstraintT
c230: 79 70 65 20 2a 20 6e 43 6f 6e 73 74 72 61 69 6e  ype * nConstrain
c240: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
c250: 20 20 20 20 20 20 20 20 20 20 20 70 4f 72 64 65             pOrde
c260: 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  rBy = SQLiteMemo
c270: 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a 20 20  ry.Allocate(..  
c280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c290: 20 20 20 20 20 20 73 69 7a 65 4f 66 4f 72 64 65        sizeOfOrde
c2a0: 72 42 79 54 79 70 65 20 2a 20 6e 4f 72 64 65 72  rByType * nOrder
c2b0: 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  By);....        
c2c0: 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e              pCon
c2d0: 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53  straintUsage = S
c2e0: 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
c2f0: 63 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  cate(..         
c300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
c310: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
c320: 73 61 67 65 54 79 70 65 20 2a 20 6e 43 6f 6e 73  sageType * nCons
c330: 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20  traint);....    
c340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c350: 69 66 20 28 28 70 49 6e 66 6f 20 21 3d 20 49 6e  if ((pInfo != In
c360: 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d 0a 20  tPtr.Zero) &&.. 
c370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c380: 20 20 20 20 20 20 20 28 70 43 6f 6e 73 74 72 61         (pConstra
c390: 69 6e 74 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  int != IntPtr.Ze
c3a0: 72 6f 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ro) &&..        
c3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3c0: 28 70 4f 72 64 65 72 42 79 20 21 3d 20 49 6e 74  (pOrderBy != Int
c3d0: 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d 0a 20 20  Ptr.Zero) &&..  
c3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3f0: 20 20 20 20 20 20 28 70 43 6f 6e 73 74 72 61 69        (pConstrai
c400: 6e 74 55 73 61 67 65 20 21 3d 20 49 6e 74 50 74  ntUsage != IntPt
c410: 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20  r.Zero))..      
c420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
c430: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c440: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
c450: 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  set = 0;....    
c460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c470: 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
c480: 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 0d 0a 20  l.WriteInt32(.. 
c490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4a0: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f             pInfo
c4b0: 2c 20 6f 66 66 73 65 74 2c 20 6e 43 6f 6e 73 74  , offset, nConst
c4c0: 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  raint);....     
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4e0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
c4f0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
c500: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
c510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c520: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
c530: 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
c540: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
c550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c560: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
c570: 2e 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20  .WriteIntPtr(.. 
c580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c590: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f             pInfo
c5a0: 2c 20 6f 66 66 73 65 74 2c 20 70 43 6f 6e 73 74  , offset, pConst
c5b0: 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  raint);....     
c5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5d0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
c5e0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
c5f0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
c600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c610: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74       offset, Int
c620: 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66  Ptr.Size, sizeof
c630: 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  (int));....     
c640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c650: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
c660: 2e 57 72 69 74 65 49 6e 74 33 32 28 0d 0a 20 20  .WriteInt32(..  
c670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c680: 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c            pInfo,
c690: 20 6f 66 66 73 65 74 2c 20 6e 4f 72 64 65 72 42   offset, nOrderB
c6a0: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
c6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
c6c0: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
c6d0: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
c6e0: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
c6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c700: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
c710: 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a  int), IntPtr.Siz
c720: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
c730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
c740: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
c750: 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  teIntPtr(..     
c760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c770: 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66         pInfo, of
c780: 66 73 65 74 2c 20 70 4f 72 64 65 72 42 79 29 3b  fset, pOrderBy);
c790: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c7a0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
c7b0: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
c7c0: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
c7d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
c7f0: 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
c800: 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b  e, IntPtr.Size);
c810: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c820: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
c830: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
c840: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
c850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c860: 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65      pInfo, offse
c870: 74 2c 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73  t, pConstraintUs
c880: 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  age);....       
c890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8a0: 20 70 49 6e 64 65 78 20 3d 20 70 49 6e 66 6f 3b   pIndex = pInfo;
c8b0: 20 2f 2a 20 4e 4f 54 45 3a 20 53 75 63 63 65 73   /* NOTE: Succes
c8c0: 73 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  s. */..         
c8d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c8f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
c900: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
c910: 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
c920: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c930: 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d      if (pIndex =
c940: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 2f  = IntPtr.Zero) /
c950: 2a 20 4e 4f 54 45 3a 20 46 61 69 6c 75 72 65 3f  * NOTE: Failure?
c960: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
c970: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c980: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c990: 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  pConstraintUsage
c9a0: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
c9b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c9c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9e0: 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72   SQLiteMemory.Fr
c9f0: 65 65 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73  ee(pConstraintUs
ca00: 61 67 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  age);..         
ca10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
ca20: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
ca30: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
ca40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
ca70: 28 70 4f 72 64 65 72 42 79 20 21 3d 20 49 6e 74  (pOrderBy != Int
ca80: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
ca90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
caa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cab0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
cac0: 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 72 64  Memory.Free(pOrd
cad0: 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  erBy);..        
cae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
caf0: 70 4f 72 64 65 72 42 79 20 3d 20 49 6e 74 50 74  pOrderBy = IntPt
cb00: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
cb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
cb20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cb30: 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 73 74        if (pConst
cb40: 72 61 69 6e 74 20 21 3d 20 49 6e 74 50 74 72 2e  raint != IntPtr.
cb50: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
cb60: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
cb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb80: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
cb90: 72 79 2e 46 72 65 65 28 70 43 6f 6e 73 74 72 61  ry.Free(pConstra
cba0: 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  int);..         
cbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
cbc0: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 49 6e 74  Constraint = Int
cbd0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
cbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
cbf0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cc00: 20 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 66          if (pInf
cc10: 6f 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  o != IntPtr.Zero
cc20: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
cc30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
cc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc50: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
cc60: 72 65 65 28 70 49 6e 66 6f 29 3b 0d 0a 20 20 20  ree(pInfo);..   
cc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc80: 20 20 20 20 20 70 49 6e 66 6f 20 3d 20 49 6e 74       pInfo = Int
cc90: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
cca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
ccb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ccc0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
ccd0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
cce0: 20 20 72 65 74 75 72 6e 20 70 49 6e 64 65 78 3b    return pIndex;
ccf0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
cd00: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
cd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
cd50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
cd60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
cd70: 20 2f 2f 2f 20 46 72 65 65 73 20 61 6c 6c 20 74   /// Frees all t
cd80: 68 65 20 6d 65 6d 6f 72 79 20 61 73 73 6f 63 69  he memory associ
cd90: 61 74 65 64 20 77 69 74 68 20 61 20 6e 61 74 69  ated with a nati
cda0: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
cdb0: 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66  <see cref="Unsaf
cdc0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
cdd0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
cde0: 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  o" />..        /
cdf0: 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  // structure... 
ce00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
ce10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
ce20: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
ce30: 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  pIndex">..      
ce40: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
ce50: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
ce60: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69  native sqlite3_i
ce70: 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74  ndex_info struct
ce80: 75 72 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  ure to..        
ce90: 2f 2f 2f 20 66 72 65 65 2e 0d 0a 20 20 20 20 20  /// free...     
cea0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
ceb0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
cec0: 20 73 74 61 74 69 63 20 76 6f 69 64 20 46 72 65   static void Fre
ced0: 65 4e 61 74 69 76 65 28 0d 0a 20 20 20 20 20 20  eNative(..      
cee0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e        IntPtr pIn
cef0: 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
cf00: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
cf10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
cf20: 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e  Index == IntPtr.
cf30: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
cf40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
cf50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
cf60: 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d  t offset = 0;...
cf70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
cf80: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
cf90: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
cfa0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
cfb0: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
cfc0: 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
cfd0: 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
cfe0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e       IntPtr pCon
cff0: 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65  straint = SQLite
d000: 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50  Marshal.ReadIntP
d010: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
d020: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
d030: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
d040: 20 20 20 20 20 69 6e 74 20 63 6f 6e 73 74 72 61       int constra
d050: 69 6e 74 4f 66 66 73 65 74 20 3d 20 6f 66 66 73  intOffset = offs
d060: 65 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  et;....         
d070: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
d080: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
d090: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
d0a0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
d0b0: 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69   IntPtr.Size, si
d0c0: 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
d0d0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
d0e0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
d0f0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
d100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d110: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
d120: 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a  int), IntPtr.Siz
d130: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
d140: 20 20 20 49 6e 74 50 74 72 20 70 4f 72 64 65 72     IntPtr pOrder
d150: 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  By = SQLiteMarsh
d160: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a  al.ReadIntPtr(..
d170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d180: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
d190: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d1a0: 69 6e 74 20 6f 72 64 65 72 42 79 4f 66 66 73 65  int orderByOffse
d1b0: 74 20 3d 20 6f 66 66 73 65 74 3b 0d 0a 0d 0a 20  t = offset;.... 
d1c0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
d1d0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
d1e0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
d1f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d200: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
d210: 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a  Size, IntPtr.Siz
d220: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
d230: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
d240: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53 51 4c  raintUsage = SQL
d250: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
d260: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
d270: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
d280: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
d290: 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f 6e 73          int cons
d2a0: 74 72 61 69 6e 74 55 73 61 67 65 4f 66 66 73 65  traintUsageOffse
d2b0: 74 20 3d 20 6f 66 66 73 65 74 3b 0d 0a 0d 0a 20  t = offset;.... 
d2c0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
d2d0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
d2e0: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
d2f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
d300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d310: 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
d320: 65 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  e(pConstraintUsa
d330: 67 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ge);..          
d340: 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e        pConstrain
d350: 74 55 73 61 67 65 20 3d 20 49 6e 74 50 74 72 2e  tUsage = IntPtr.
d360: 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
d370: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
d380: 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50  arshal.WriteIntP
d390: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
d3a0: 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c           pIndex,
d3b0: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
d3c0: 4f 66 66 73 65 74 2c 20 70 43 6f 6e 73 74 72 61  Offset, pConstra
d3d0: 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20 20 20  intUsage);..    
d3e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
d3f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4f 72           if (pOr
d400: 64 65 72 42 79 20 21 3d 20 49 6e 74 50 74 72 2e  derBy != IntPtr.
d410: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
d420: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d430: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
d440: 72 79 2e 46 72 65 65 28 70 4f 72 64 65 72 42 79  ry.Free(pOrderBy
d450: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
d460: 20 20 20 20 70 4f 72 64 65 72 42 79 20 3d 20 49      pOrderBy = I
d470: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20  ntPtr.Zero;.... 
d480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
d490: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
d4a0: 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  teIntPtr(..     
d4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
d4c0: 49 6e 64 65 78 2c 20 6f 72 64 65 72 42 79 4f 66  Index, orderByOf
d4d0: 66 73 65 74 2c 20 70 4f 72 64 65 72 42 79 29 3b  fset, pOrderBy);
d4e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
d4f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
d500: 66 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 20 21  f (pConstraint !
d510: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
d520: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
d530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
d540: 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
d550: 28 70 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a  (pConstraint);..
d560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d570: 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 49 6e  pConstraint = In
d580: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
d590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
d5a0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
d5b0: 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  eIntPtr(..      
d5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
d5d0: 6e 64 65 78 2c 20 63 6f 6e 73 74 72 61 69 6e 74  ndex, constraint
d5e0: 4f 66 66 73 65 74 2c 20 70 43 6f 6e 73 74 72 61  Offset, pConstra
d5f0: 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  int);..         
d600: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d610: 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20 21      if (pIndex !
d620: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
d630: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
d640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
d650: 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
d660: 28 70 49 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20  (pIndex);..     
d670: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
d680: 78 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  x = IntPtr.Zero;
d690: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
d6a0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
d6b0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
d6c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
d6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d710: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
d720: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61  gion Internal Ma
d730: 72 73 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74  rshal Helper Met
d740: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
d750: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d760: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
d770: 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  s a native point
d780: 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73  er to a native s
d790: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
d7a0: 6f 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20  o structure..   
d7b0: 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20       /// into a 
d7c0: 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 53  new <see cref="S
d7d0: 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
d7e0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
d7f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
d800: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
d810: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
d820: 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20  ="pIndex">..    
d830: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
d840: 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
d850: 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
d860: 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75  _index_info stru
d870: 63 74 75 72 65 20 74 6f 0d 0a 20 20 20 20 20 20  cture to..      
d880: 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 2e 0d 0a    /// convert...
d890: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
d8a0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
d8b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
d8c0: 6e 63 6c 75 64 65 4f 75 74 70 75 74 22 3e 0d 0a  ncludeOutput">..
d8d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
d8e0: 7a 65 72 6f 20 74 6f 20 69 6e 63 6c 75 64 65 20  zero to include 
d8f0: 66 69 65 6c 64 73 20 66 72 6f 6d 20 74 68 65 20  fields from the 
d900: 6f 75 74 70 75 74 73 20 70 6f 72 74 69 6f 6e 20  outputs portion 
d910: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  of the native.. 
d920: 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
d930: 74 75 72 65 3b 20 6f 74 68 65 72 77 69 73 65 2c  ture; otherwise,
d940: 20 74 68 65 20 22 6f 75 74 70 75 74 22 20 66 69   the "output" fi
d950: 65 6c 64 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65  elds will not be
d960: 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20   read...        
d970: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
d980: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
d990: 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a   name="index">..
d9a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
d9b0: 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
d9c0: 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65  arameter will be
d9d0: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
d9e0: 74 61 69 6e 20 74 68 65 20 6e 65 77 6c 79 0d 0a  tain the newly..
d9f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61          /// crea
da00: 74 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ted <see cref="S
da10: 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
da20: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
da30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
da40: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
da50: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
da60: 6f 69 64 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d  oid FromIntPtr(.
da70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
da80: 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20  Ptr pIndex,..   
da90: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 6e           bool in
daa0: 63 6c 75 64 65 4f 75 74 70 75 74 2c 0d 0a 20 20  cludeOutput,..  
dab0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
dac0: 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 0d  LiteIndex index.
dad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
dae0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
daf0: 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65         if (pInde
db00: 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  x == IntPtr.Zero
db10: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
db20: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
db30: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
db40: 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  fset = 0;....   
db50: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f           int nCo
db60: 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74  nstraint = SQLit
db70: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
db80: 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
db90: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
dba0: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
dbb0: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
dbc0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
dbd0: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
dbe0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
dbf0: 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20  t, sizeof(int), 
dc00: 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
dc10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
dc20: 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20  Ptr pConstraint 
dc30: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
dc40: 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20  ReadIntPtr(..   
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
dc60: 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
dc70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
dc80: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
dc90: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
dca0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
dcb0: 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74     offset, IntPt
dcc0: 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69  r.Size, sizeof(i
dcd0: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
dce0: 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42       int nOrderB
dcf0: 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  y = SQLiteMarsha
dd00: 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20  l.ReadInt32(..  
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
dd20: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
dd30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
dd40: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
dd50: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
dd60: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
dd70: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
dd80: 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
dd90: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
dda0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72        IntPtr pOr
ddb0: 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61  derBy = SQLiteMa
ddc0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
ddd0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
dde0: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
ddf0: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
de00: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
de10: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74  raintUsage = Int
de20: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
de30: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 63           if (inc
de40: 6c 75 64 65 4f 75 74 70 75 74 29 0d 0a 20 20 20  ludeOutput)..   
de50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
de60: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
de70: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
de80: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
de90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dea0: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e        offset, In
deb0: 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74  tPtr.Size, IntPt
dec0: 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
ded0: 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e              pCon
dee0: 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53  straintUsage = S
def0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
df00: 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
df10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
df20: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
df30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
df40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64  .            ind
df50: 65 78 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49  ex = new SQLiteI
df60: 6e 64 65 78 28 6e 43 6f 6e 73 74 72 61 69 6e 74  ndex(nConstraint
df70: 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20  , nOrderBy);..  
df80: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
df90: 49 6e 64 65 78 49 6e 70 75 74 73 20 69 6e 70 75  IndexInputs inpu
dfa0: 74 73 20 3d 20 69 6e 64 65 78 2e 49 6e 70 75 74  ts = index.Input
dfb0: 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
dfc0: 20 20 69 66 20 28 69 6e 70 75 74 73 20 3d 3d 20    if (inputs == 
dfd0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
dfe0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
dff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
e000: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
e010: 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74  int[] constraint
e020: 73 20 3d 20 69 6e 70 75 74 73 2e 43 6f 6e 73 74  s = inputs.Const
e030: 72 61 69 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20  raints;....     
e040: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74         if (const
e050: 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  raints == null).
e060: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e070: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
e080: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
e090: 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64  dexOrderBy[] ord
e0a0: 65 72 42 79 73 20 3d 20 69 6e 70 75 74 73 2e 4f  erBys = inputs.O
e0b0: 72 64 65 72 42 79 73 3b 0d 0a 0d 0a 20 20 20 20  rderBys;....    
e0c0: 20 20 20 20 20 20 20 20 69 66 20 28 6f 72 64 65          if (orde
e0d0: 72 42 79 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  rBys == null).. 
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
e0f0: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
e100: 20 20 20 20 20 20 54 79 70 65 20 63 6f 6e 73 74        Type const
e110: 72 61 69 6e 74 54 79 70 65 20 3d 20 74 79 70 65  raintType = type
e120: 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
e130: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
e140: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
e150: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
e160: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
e170: 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e     int sizeOfCon
e180: 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 4d 61  straintType = Ma
e190: 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a 20  rshal.SizeOf(.. 
e1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
e1b0: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29 3b 0d  onstraintType);.
e1c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  ...            f
e1d0: 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61  or (int iConstra
e1e0: 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72  int = 0; iConstr
e1f0: 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69  aint < nConstrai
e200: 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b  nt; iConstraint+
e210: 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
e220: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e230: 20 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73 65     IntPtr pOffse
e240: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
e250: 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65  l.IntPtrForOffse
e260: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
e270: 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61          pConstra
e280: 69 6e 74 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74  int, iConstraint
e290: 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61   * sizeOfConstra
e2a0: 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  intType);....   
e2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
e2c0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
e2d0: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
e2e0: 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72  onstraint constr
e2f0: 61 69 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20  aint =..        
e300: 20 20 20 20 20 20 20 20 20 20 20 20 28 55 6e 73              (Uns
e310: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
e320: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
e330: 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20 20 20 20  onstraint)..    
e340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e350: 20 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54      Marshal.PtrT
e360: 6f 53 74 72 75 63 74 75 72 65 28 70 4f 66 66 73  oStructure(pOffs
e370: 65 74 2c 20 63 6f 6e 73 74 72 61 69 6e 74 54 79  et, constraintTy
e380: 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  pe);....        
e390: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
e3a0: 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d  nts[iConstraint]
e3b0: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
e3c0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20  exConstraint(.. 
e3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3e0: 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d     constraint);.
e3f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
e400: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79  ..            Ty
e410: 70 65 20 6f 72 64 65 72 42 79 54 79 70 65 20 3d  pe orderByType =
e420: 20 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20   typeof(..      
e430: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
e440: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
e450: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
e460: 72 62 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rby);....       
e470: 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 4f       int sizeOfO
e480: 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d 61 72  rderByType = Mar
e490: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 6f 72 64 65  shal.SizeOf(orde
e4a0: 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  rByType);....   
e4b0: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
e4c0: 74 20 69 4f 72 64 65 72 42 79 20 3d 20 30 3b 20  t iOrderBy = 0; 
e4d0: 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f 72 64 65  iOrderBy < nOrde
e4e0: 72 42 79 3b 20 69 4f 72 64 65 72 42 79 2b 2b 29  rBy; iOrderBy++)
e4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
e500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e510: 20 49 6e 74 50 74 72 20 70 4f 66 66 73 65 74 20   IntPtr pOffset 
e520: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
e530: 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
e540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e550: 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 2c 20        pOrderBy, 
e560: 69 4f 72 64 65 72 42 79 20 2a 20 73 69 7a 65 4f  iOrderBy * sizeO
e570: 66 4f 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a  fOrderByType);..
e580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e590: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
e5a0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
e5b0: 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72 64 65  dex_orderby orde
e5c0: 72 42 79 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  rBy =..         
e5d0: 20 20 20 20 20 20 20 20 20 20 20 28 55 6e 73 61             (Unsa
e5e0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
e5f0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
e600: 64 65 72 62 79 29 0d 0a 20 20 20 20 20 20 20 20  derby)..        
e610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e620: 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74 72  Marshal.PtrToStr
e630: 75 63 74 75 72 65 28 70 4f 66 66 73 65 74 2c 20  ucture(pOffset, 
e640: 6f 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d  orderByType);...
e650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e660: 20 6f 72 64 65 72 42 79 73 5b 69 4f 72 64 65 72   orderBys[iOrder
e670: 42 79 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  By] = new SQLite
e680: 49 6e 64 65 78 4f 72 64 65 72 42 79 28 6f 72 64  IndexOrderBy(ord
e690: 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  erBy);..        
e6a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
e6b0: 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65       if (include
e6c0: 4f 75 74 70 75 74 29 0d 0a 20 20 20 20 20 20 20  Output)..       
e6d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e6e0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
e6f0: 64 65 78 4f 75 74 70 75 74 73 20 6f 75 74 70 75  dexOutputs outpu
e700: 74 73 20 3d 20 69 6e 64 65 78 2e 4f 75 74 70 75  ts = index.Outpu
e710: 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ts;....         
e720: 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70 75         if (outpu
e730: 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts == null)..   
e740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e750: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
e760: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
e770: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
e780: 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73 74 72 61  tUsage[] constra
e790: 69 6e 74 55 73 61 67 65 73 20 3d 0d 0a 20 20 20  intUsages =..   
e7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7b0: 20 6f 75 74 70 75 74 73 2e 43 6f 6e 73 74 72 61   outputs.Constra
e7c0: 69 6e 74 55 73 61 67 65 73 3b 0d 0a 0d 0a 20 20  intUsages;....  
e7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
e7e0: 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
e7f0: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
e800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e810: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
e820: 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65              Type
e830: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
e840: 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a  Type = typeof(..
e850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e860: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
e870: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
e880: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
e890: 5f 75 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  _usage);....    
e8a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
e8b0: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
e8c0: 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72 73  UsageType = Mars
e8d0: 68 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a 20 20 20  hal.SizeOf(..   
e8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8f0: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
e900: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
e910: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
e920: 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d  nt iConstraint =
e930: 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20   0; iConstraint 
e940: 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69  < nConstraint; i
e950: 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20  Constraint++).. 
e960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
e970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e980: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66        IntPtr pOf
e990: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
e9a0: 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66  shal.IntPtrForOf
e9b0: 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20  fset(..         
e9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
e9d0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c  ConstraintUsage,
e9e0: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73   iConstraint * s
e9f0: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
ea00: 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  sageType);....  
ea10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea20: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
ea30: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
ea40: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
ea50: 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55  sage constraintU
ea60: 73 61 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20  sage =..        
ea70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea80: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
ea90: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
eaa0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
eab0: 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  age)..          
eac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ead0: 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53    Marshal.PtrToS
eae0: 74 72 75 63 74 75 72 65 28 70 4f 66 66 73 65 74  tructure(pOffset
eaf0: 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  , constraintUsag
eb00: 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eType);....     
eb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
eb20: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 5b  onstraintUsages[
eb30: 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20 3d 20 6e  iConstraint] = n
eb40: 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ew SQLiteIndexCo
eb50: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d 0a  nstraintUsage(..
eb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb70: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
eb80: 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20  ntUsage);..     
eb90: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
eba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebb0: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
ebc0: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
ebd0: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
ebe0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
ebf0: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73  , IntPtr.Size, s
ec00: 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
ec10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec20: 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 4e 75 6d  outputs.IndexNum
ec30: 62 65 72 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  ber = SQLiteMars
ec40: 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a  hal.ReadInt32(..
ec50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec60: 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73      pIndex, offs
ec70: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
ec80: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
ec90: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
eca0: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecc0: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
ecd0: 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69  (int), IntPtr.Si
ece0: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
ecf0: 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
ed00: 49 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 53 51  IndexString = SQ
ed10: 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e  LiteString.Strin
ed20: 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
ed30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ed40: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
ed50: 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70  hal.ReadIntPtr(p
ed60: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 29 3b  Index, offset));
ed70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ed80: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
ed90: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
eda0: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
edb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
edc0: 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
edd0: 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  e, sizeof(int));
ede0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
edf0: 20 20 20 20 6f 75 74 70 75 74 73 2e 4e 65 65 64      outputs.Need
ee00: 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
ee10: 67 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  g = SQLiteMarsha
ee20: 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20  l.ReadInt32(..  
ee30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee40: 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74    pIndex, offset
ee50: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
ee60: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
ee70: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
ee80: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
ee90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eea0: 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
eeb0: 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  nt), sizeof(int)
eec0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
eed0: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4f 72        outputs.Or
eee0: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 20 3d 20  derByConsumed = 
eef0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
ef00: 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20  adInt32(..      
ef10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
ef20: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
ef30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ef40: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
ef50: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
ef60: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
ef70: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
ef80: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
ef90: 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29   sizeof(double))
efa0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
efb0: 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73 74       outputs.Est
efc0: 69 6d 61 74 65 64 43 6f 73 74 20 3d 20 53 51 4c  imatedCost = SQL
efd0: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 44  iteMarshal.ReadD
efe0: 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  ouble(..        
eff0: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
f000: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
f010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f020: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
f030: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
f040: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
f050: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
f060: 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  , sizeof(double)
f070: 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b  , sizeof(long));
f080: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f090: 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
f0a0: 43 61 6e 55 73 65 45 73 74 69 6d 61 74 65 64 52  CanUseEstimatedR
f0b0: 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ows())..        
f0c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
f0e0: 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64  utputs.Estimated
f0f0: 52 6f 77 73 20 3d 20 53 51 4c 69 74 65 4d 61 72  Rows = SQLiteMar
f100: 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d  shal.ReadInt64(.
f110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f120: 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c           pIndex,
f130: 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20 20   offset);..     
f140: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
f150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f160: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
f170: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
f180: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
f190: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
f1a0: 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 2c 20  , sizeof(long), 
f1b0: 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
f1c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f1d0: 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61 6e   if (outputs.Can
f1e0: 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28 29 29  UseIndexFlags())
f1f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f200: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f210: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
f220: 2e 49 6e 64 65 78 46 6c 61 67 73 20 3d 20 28 53  .IndexFlags = (S
f230: 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 29  QLiteIndexFlags)
f240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f250: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
f260: 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33  Marshal.ReadInt3
f270: 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  2(pIndex, offset
f280: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
f290: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
f2a0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
f2b0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
f2c0: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
f2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2e0: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
f2f0: 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 6c  f(int), sizeof(l
f300: 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ong));....      
f310: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 75            if (ou
f320: 74 70 75 74 73 2e 43 61 6e 55 73 65 43 6f 6c 75  tputs.CanUseColu
f330: 6d 6e 73 55 73 65 64 28 29 29 0d 0a 20 20 20 20  mnsUsed())..    
f340: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
f350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f360: 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75 6d     outputs.Colum
f370: 6e 73 55 73 65 64 20 3d 20 53 51 4c 69 74 65 4d  nsUsed = SQLiteM
f380: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34  arshal.ReadInt64
f390: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f3a0: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
f3b0: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20  x, offset);..   
f3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f3d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
f3e0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
f3f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
f400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
f440: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
f450: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
f460: 2f 20 50 6f 70 75 6c 61 74 65 73 20 74 68 65 20  / Populates the 
f470: 6f 75 74 70 75 74 73 20 6f 66 20 61 20 70 72 65  outputs of a pre
f480: 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69 76  -allocated nativ
f490: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
f4a0: 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  info..        //
f4b0: 2f 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e  / structure usin
f4c0: 67 20 61 6e 20 65 78 69 73 74 69 6e 67 20 3c 73  g an existing <s
f4d0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
f4e0: 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 0d  ndex" /> object.
f4f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73  .        /// ins
f500: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
f510: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f520: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
f530: 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e  am name="index">
f540: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
f550: 65 20 65 78 69 73 74 69 6e 67 20 3c 73 65 65 20  e existing <see 
f560: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
f570: 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
f580: 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67  tance containing
f590: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
f5a0: 65 20 6f 75 74 70 75 74 20 64 61 74 61 20 74 6f  e output data to
f5b0: 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
f5c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
f5d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
f5e0: 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a  name="pIndex">..
f5f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
f600: 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
f610: 6f 20 74 68 65 20 70 72 65 2d 61 6c 6c 6f 63 61  o the pre-alloca
f620: 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74  ted native sqlit
f630: 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20  e3_index_info.. 
f640: 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
f650: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
f660: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
f670: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
f680: 6e 61 6d 65 3d 22 69 6e 63 6c 75 64 65 49 6e 70  name="includeInp
f690: 75 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ut">..        //
f6a0: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 69 6e  / Non-zero to in
f6b0: 63 6c 75 64 65 20 66 69 65 6c 64 73 20 66 72 6f  clude fields fro
f6c0: 6d 20 74 68 65 20 69 6e 70 75 74 73 20 70 6f 72  m the inputs por
f6d0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 61 74 69  tion of the nati
f6e0: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
f6f0: 73 74 72 75 63 74 75 72 65 3b 20 6f 74 68 65 72  structure; other
f700: 77 69 73 65 2c 20 74 68 65 20 22 69 6e 70 75 74  wise, the "input
f710: 22 20 66 69 65 6c 64 73 20 77 69 6c 6c 20 6e 6f  " fields will no
f720: 74 20 62 65 20 77 72 69 74 74 65 6e 2e 0d 0a 20  t be written... 
f730: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
f740: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
f750: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
f760: 64 20 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20  d ToIntPtr(..   
f770: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
f780: 6e 64 65 78 20 69 6e 64 65 78 2c 0d 0a 20 20 20  ndex index,..   
f790: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
f7a0: 70 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20  pIndex,..       
f7b0: 20 20 20 20 20 62 6f 6f 6c 20 69 6e 63 6c 75 64       bool includ
f7c0: 65 49 6e 70 75 74 0d 0a 20 20 20 20 20 20 20 20  eInput..        
f7d0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
f7e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
f7f0: 20 28 69 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c 29   (index == null)
f800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f810: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
f820: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
f830: 6e 64 65 78 4f 75 74 70 75 74 73 20 6f 75 74 70  ndexOutputs outp
f840: 75 74 73 20 3d 20 69 6e 64 65 78 2e 4f 75 74 70  uts = index.Outp
f850: 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  uts;....        
f860: 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 20      if (outputs 
f870: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
f880: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
f890: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f8a0: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
f8b0: 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f  traintUsage[] co
f8c0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 20 3d  nstraintUsages =
f8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f8e0: 20 20 6f 75 74 70 75 74 73 2e 43 6f 6e 73 74 72    outputs.Constr
f8f0: 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a 0d 0a 20  aintUsages;.... 
f900: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
f910: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 20  onstraintUsages 
f920: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
f930: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
f940: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f950: 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75   SQLiteIndexInpu
f960: 74 73 20 69 6e 70 75 74 73 20 3d 20 6e 75 6c 6c  ts inputs = null
f970: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ;..            S
f980: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
f990: 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e  aint[] constrain
f9a0: 74 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ts = null;..    
f9b0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
f9c0: 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64  dexOrderBy[] ord
f9d0: 65 72 42 79 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  erBys = null;...
f9e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
f9f0: 28 69 6e 63 6c 75 64 65 49 6e 70 75 74 29 0d 0a  (includeInput)..
fa00: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
fa20: 6e 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 49 6e  nputs = index.In
fa30: 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  puts;....       
fa40: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 70           if (inp
fa50: 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  uts == null)..  
fa60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa70: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
fa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
fa90: 73 74 72 61 69 6e 74 73 20 3d 20 69 6e 70 75 74  straints = input
faa0: 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a  s.Constraints;..
fab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fac0: 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74    if (constraint
fad0: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
fae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
faf0: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
fb00: 20 20 20 20 20 20 20 20 20 20 20 6f 72 64 65 72             order
fb10: 42 79 73 20 3d 20 69 6e 70 75 74 73 2e 4f 72 64  Bys = inputs.Ord
fb20: 65 72 42 79 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  erBys;....      
fb30: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 72            if (or
fb40: 64 65 72 42 79 73 20 3d 3d 20 6e 75 6c 6c 29 0d  derBys == null).
fb50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fb60: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20       return;..  
fb70: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
fb80: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
fb90: 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e  Index == IntPtr.
fba0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
fbb0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
fbc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
fbd0: 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d  t offset = 0;...
fbe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
fbf0: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53   nConstraint = S
fc00: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
fc10: 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  dInt32(pIndex, o
fc20: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
fc30: 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
fc40: 64 65 49 6e 70 75 74 20 26 26 20 28 6e 43 6f 6e  deInput && (nCon
fc50: 73 74 72 61 69 6e 74 20 21 3d 20 63 6f 6e 73 74  straint != const
fc60: 72 61 69 6e 74 73 2e 4c 65 6e 67 74 68 29 29 0d  raints.Length)).
fc70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fc80: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
fc90: 20 20 20 20 20 20 20 20 69 66 20 28 6e 43 6f 6e          if (nCon
fca0: 73 74 72 61 69 6e 74 20 21 3d 20 63 6f 6e 73 74  straint != const
fcb0: 72 61 69 6e 74 55 73 61 67 65 73 2e 4c 65 6e 67  raintUsages.Leng
fcc0: 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th)..           
fcd0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
fce0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
fcf0: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
fd00: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
fd10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fd20: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
fd30: 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69  (int), IntPtr.Si
fd40: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
fd50: 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 49      if (includeI
fd60: 6e 70 75 74 29 0d 0a 20 20 20 20 20 20 20 20 20  nput)..         
fd70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
fd80: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
fd90: 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74  nstraint = SQLit
fda0: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
fdb0: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
fdc0: 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78            pIndex
fdd0: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
fde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
fdf0: 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
fe00: 6e 74 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  ntType = Marshal
fe10: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
fe20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fe30: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
fe40: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
fe50: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
fe60: 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
fe70: 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
fe80: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30   iConstraint = 0
fe90: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20  ; iConstraint < 
fea0: 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f  nConstraint; iCo
feb0: 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20  nstraint++)..   
fec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
fed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fee0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
fef0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
ff00: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
ff10: 20 63 6f 6e 73 74 72 61 69 6e 74 20 3d 0d 0a 20   constraint =.. 
ff20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff30: 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66         new Unsaf
ff40: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
ff50: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
ff60: 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20  straint(..      
ff70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff80: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
ff90: 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 29 3b  s[iConstraint]);
ffa0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ffb0: 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
ffc0: 53 74 72 75 63 74 75 72 65 54 6f 50 74 72 28 0d  StructureToPtr(.
ffd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ffe0: 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61           constra
fff0: 69 6e 74 2c 20 53 51 4c 69 74 65 4d 61 72 73 68  int, SQLiteMarsh
10000 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  al.IntPtrForOffs
10010 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
10020 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
10030 6e 73 74 72 61 69 6e 74 2c 20 69 43 6f 6e 73 74  nstraint, iConst
10040 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f  raint * sizeOfCo
10050 6e 73 74 72 61 69 6e 74 54 79 70 65 29 2c 0d 0a  nstraintType),..
10060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10070 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d          false);.
10080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10090 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
100a0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
100b0 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
100c0 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
100d0 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
100e0 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
100f0 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65  ntPtr.Size, size
10100 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
10110 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72           int nOr
10120 64 65 72 42 79 20 3d 20 69 6e 63 6c 75 64 65 49  derBy = includeI
10130 6e 70 75 74 20 3f 0d 0a 20 20 20 20 20 20 20 20  nput ?..        
10140 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
10150 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28  rshal.ReadInt32(
10160 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 20  pIndex, offset) 
10170 3a 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  : 0;....        
10180 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 49      if (includeI
10190 6e 70 75 74 20 26 26 20 28 6e 4f 72 64 65 72 42  nput && (nOrderB
101a0 79 20 21 3d 20 6f 72 64 65 72 42 79 73 2e 4c 65  y != orderBys.Le
101b0 6e 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20 20  ngth))..        
101c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
101d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
101e0 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
101f0 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
10200 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
10210 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
10220 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
10230 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
10240 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
10250 64 65 49 6e 70 75 74 29 0d 0a 20 20 20 20 20 20  deInput)..      
10260 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10270 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
10280 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74  pOrderBy = SQLit
10290 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
102a0 50 74 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  Ptr(pIndex, offs
102b0 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
102c0 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
102d0 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20  OfOrderByType = 
102e0 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74  Marshal.SizeOf(t
102f0 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
10300 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
10310 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
10320 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
10330 64 65 72 62 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  derby));....    
10340 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
10350 28 69 6e 74 20 69 4f 72 64 65 72 42 79 20 3d 20  (int iOrderBy = 
10360 30 3b 20 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f  0; iOrderBy < nO
10370 72 64 65 72 42 79 3b 20 69 4f 72 64 65 72 42 79  rderBy; iOrderBy
10380 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
10390 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
103a0 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
103b0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
103c0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
103d0 64 65 72 62 79 20 6f 72 64 65 72 42 79 20 3d 0d  derby orderBy =.
103e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
103f0 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73           new Uns
10400 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
10410 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
10420 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20  rderby(..       
10430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10440 20 20 20 20 20 6f 72 64 65 72 42 79 73 5b 69 4f       orderBys[iO
10450 72 64 65 72 42 79 5d 29 3b 0d 0a 0d 0a 20 20 20  rderBy]);....   
10460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10470 20 4d 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75   Marshal.Structu
10480 72 65 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20  reToPtr(..      
10490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104a0 20 20 6f 72 64 65 72 42 79 2c 20 53 51 4c 69 74    orderBy, SQLit
104b0 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46  eMarshal.IntPtrF
104c0 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20  orOffset(..     
104d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104e0 20 20 20 70 4f 72 64 65 72 42 79 2c 20 69 4f 72     pOrderBy, iOr
104f0 64 65 72 42 79 20 2a 20 73 69 7a 65 4f 66 4f 72  derBy * sizeOfOr
10500 64 65 72 42 79 54 79 70 65 29 2c 0d 0a 20 20 20  derByType),..   
10510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10520 20 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20 20       false);..  
10530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
10540 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
10550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
10560 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
10570 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
10580 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
10590 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50      offset, IntP
105a0 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e  tr.Size, IntPtr.
105b0 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
105c0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
105d0 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
105e0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
105f0 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  adIntPtr(..     
10600 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
10610 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
10620 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
10630 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
10640 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68  sageType = Marsh
10650 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66  al.SizeOf(typeof
10660 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10670 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
10680 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
10690 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
106a0 75 73 61 67 65 29 29 3b 0d 0a 0d 0a 20 20 20 20  usage));....    
106b0 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
106c0 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30   iConstraint = 0
106d0 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20  ; iConstraint < 
106e0 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f  nConstraint; iCo
106f0 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20  nstraint++)..   
10700 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10710 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
10720 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
10730 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
10740 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 63  nstraint_usage c
10750 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d  onstraintUsage =
10760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10770 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65        new Unsafe
10780 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
10790 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
107a0 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20  traint_usage(.. 
107b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107c0 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e         constrain
107d0 74 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72 61  tUsages[iConstra
107e0 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int]);....      
107f0 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
10800 6c 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74 72  l.StructureToPtr
10810 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10820 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e         constrain
10830 74 55 73 61 67 65 2c 20 53 51 4c 69 74 65 4d 61  tUsage, SQLiteMa
10840 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f  rshal.IntPtrForO
10850 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20  ffset(..        
10860 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e              pCon
10870 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20 69 43  straintUsage, iC
10880 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65  onstraint * size
10890 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  OfConstraintUsag
108a0 65 54 79 70 65 29 2c 0d 0a 20 20 20 20 20 20 20  eType),..       
108b0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c               fal
108c0 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  se);..          
108d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
108e0 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
108f0 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
10900 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
10910 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
10920 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69   IntPtr.Size, si
10930 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
10940 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
10950 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
10960 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
10970 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
10980 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64       outputs.Ind
10990 65 78 4e 75 6d 62 65 72 29 3b 0d 0a 0d 0a 20 20  exNumber);....  
109a0 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
109b0 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
109c0 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
109d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
109e0 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
109f0 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  nt), IntPtr.Size
10a00 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10a10 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
10a20 57 72 69 74 65 49 6e 74 50 74 72 28 70 49 6e 64  WriteIntPtr(pInd
10a30 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  ex, offset,..   
10a40 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
10a50 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
10a60 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 6f  tPtrFromString(o
10a70 75 74 70 75 74 73 2e 49 6e 64 65 78 53 74 72 69  utputs.IndexStri
10a80 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ng));....       
10a90 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
10aa0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
10ab0 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
10ac0 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
10ad0 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20  t, IntPtr.Size, 
10ae0 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
10af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
10b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
10b10 4e 4f 54 45 3a 20 57 65 20 6a 75 73 74 20 61 6c  NOTE: We just al
10b20 6c 6f 63 61 74 65 64 20 74 68 65 20 49 6e 64 65  located the Inde
10b30 78 53 74 72 69 6e 67 20 66 69 65 6c 64 3b 20 74  xString field; t
10b40 68 65 72 65 66 6f 72 65 2c 20 77 65 0d 0a 20 20  herefore, we..  
10b50 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10b60 20 20 20 6e 65 65 64 20 74 6f 20 73 65 74 20 6d     need to set m
10b70 61 6b 65 20 73 75 72 65 20 74 68 65 20 4e 65 65  ake sure the Nee
10b80 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
10b90 6e 67 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20  ng field..      
10ba0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
10bb0 73 20 6e 6f 6e 2d 7a 65 72 6f 3b 20 68 6f 77 65  s non-zero; howe
10bc0 76 65 72 2c 20 77 65 20 61 72 65 20 6e 6f 74 20  ver, we are not 
10bd0 70 69 63 6b 79 20 61 62 6f 75 74 20 74 68 65 20  picky about the 
10be0 65 78 61 63 74 0d 0a 20 20 20 20 20 20 20 20 20  exact..         
10bf0 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 6c 75     //       valu
10c00 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
10c10 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
10c20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 6e  int needToFreeIn
10c30 64 65 78 53 74 72 69 6e 67 20 3d 20 6f 75 74 70  dexString = outp
10c40 75 74 73 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e  uts.NeedToFreeIn
10c50 64 65 78 53 74 72 69 6e 67 20 21 3d 20 30 20 3f  dexString != 0 ?
10c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c70 20 20 6f 75 74 70 75 74 73 2e 4e 65 65 64 54 6f    outputs.NeedTo
10c80 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20  FreeIndexString 
10c90 3a 20 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  : 1;....        
10ca0 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
10cb0 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e  l.WriteInt32(pIn
10cc0 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
10cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
10ce0 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72  edToFreeIndexStr
10cf0 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ing);....       
10d00 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
10d10 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
10d20 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
10d30 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
10d40 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20  t, sizeof(int), 
10d50 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
10d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
10d70 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
10d80 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66  Int32(pIndex, of
10d90 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
10da0 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4f         outputs.O
10db0 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 29 3b  rderByConsumed);
10dc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10dd0 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
10de0 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
10df0 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
10e00 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
10e10 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f  zeof(int), sizeo
10e20 66 28 64 6f 75 62 6c 65 29 29 3b 0d 0a 0d 0a 20  f(double));.... 
10e30 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
10e40 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64  utputs.Estimated
10e50 43 6f 73 74 2e 48 61 73 56 61 6c 75 65 29 0d 0a  Cost.HasValue)..
10e60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
10e80 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
10e90 74 65 44 6f 75 62 6c 65 28 70 49 6e 64 65 78 2c  teDouble(pIndex,
10ea0 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
10eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
10ec0 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64 43  tputs.EstimatedC
10ed0 6f 73 74 2e 47 65 74 56 61 6c 75 65 4f 72 44 65  ost.GetValueOrDe
10ee0 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20  fault());..     
10ef0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10f00 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
10f10 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
10f20 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
10f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
10f40 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75  fset, sizeof(dou
10f50 62 6c 65 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e  ble), sizeof(lon
10f60 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  g));....        
10f70 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
10f80 43 61 6e 55 73 65 45 73 74 69 6d 61 74 65 64 52  CanUseEstimatedR
10f90 6f 77 73 28 29 20 26 26 0d 0a 20 20 20 20 20 20  ows() &&..      
10fa0 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74            output
10fb0 73 2e 45 73 74 69 6d 61 74 65 64 52 6f 77 73 2e  s.EstimatedRows.
10fc0 48 61 73 56 61 6c 75 65 29 0d 0a 20 20 20 20 20  HasValue)..     
10fd0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10fe0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
10ff0 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
11000 36 34 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  64(pIndex, offse
11010 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
11020 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
11030 45 73 74 69 6d 61 74 65 64 52 6f 77 73 2e 47 65  EstimatedRows.Ge
11040 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28  tValueOrDefault(
11050 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
11060 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
11070 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
11080 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
11090 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
110a0 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
110b0 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 2c 20 73 69  sizeof(long), si
110c0 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
110d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
110e0 75 74 70 75 74 73 2e 43 61 6e 55 73 65 49 6e 64  utputs.CanUseInd
110f0 65 78 46 6c 61 67 73 28 29 20 26 26 0d 0a 20 20  exFlags() &&..  
11100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
11110 74 70 75 74 73 2e 49 6e 64 65 78 46 6c 61 67 73  tputs.IndexFlags
11120 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20 20 20  .HasValue)..    
11130 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11140 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
11150 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
11160 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
11170 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
11180 20 20 20 20 20 20 20 20 28 69 6e 74 29 6f 75 74          (int)out
11190 70 75 74 73 2e 49 6e 64 65 78 46 6c 61 67 73 2e  puts.IndexFlags.
111a0 47 65 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c  GetValueOrDefaul
111b0 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  t());..         
111c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
111d0 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
111e0 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
111f0 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
11200 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
11210 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73  , sizeof(int), s
11220 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d  izeof(long));...
11230 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
11240 28 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65 43  (outputs.CanUseC
11250 6f 6c 75 6d 6e 73 55 73 65 64 28 29 20 26 26 0d  olumnsUsed() &&.
11260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11270 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75 6d 6e 73   outputs.Columns
11280 55 73 65 64 2e 48 61 73 56 61 6c 75 65 29 0d 0a  Used.HasValue)..
11290 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
112a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
112b0 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
112c0 74 65 49 6e 74 36 34 28 70 49 6e 64 65 78 2c 20  teInt64(pIndex, 
112d0 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20  offset,..       
112e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
112f0 70 75 74 73 2e 43 6f 6c 75 6d 6e 73 55 73 65 64  puts.ColumnsUsed
11300 2e 47 65 74 56 61 6c 75 65 4f 72 44 65 66 61 75  .GetValueOrDefau
11310 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  lt());..        
11320 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
11330 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
11340 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
11350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11390 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
113a0 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
113b0 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
113c0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
113d0 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20  LiteIndexInputs 
113e0 69 6e 70 75 74 73 3b 0d 0a 20 20 20 20 20 20 20  inputs;..       
113f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11400 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
11410 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
11420 65 49 6e 64 65 78 49 6e 70 75 74 73 22 20 2f 3e  eIndexInputs" />
11430 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
11440 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
11450 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 70       /// the inp
11460 75 74 73 20 74 6f 20 74 68 65 20 3c 73 65 65 20  uts to the <see 
11470 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
11480 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
11490 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20  ndex" />..      
114a0 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20    /// method... 
114b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
114c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
114d0 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
114e0 78 49 6e 70 75 74 73 20 49 6e 70 75 74 73 0d 0a  xInputs Inputs..
114f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11500 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
11510 75 72 6e 20 69 6e 70 75 74 73 3b 20 7d 0d 0a 20  urn inputs; }.. 
11520 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
11530 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
11540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
11580 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
11590 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
115a0 73 20 6f 75 74 70 75 74 73 3b 0d 0a 20 20 20 20  s outputs;..    
115b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
115c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
115d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
115e0 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73  LiteIndexOutputs
115f0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
11600 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  ance containing.
11610 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
11620 20 6f 75 74 70 75 74 73 20 66 72 6f 6d 20 74 68   outputs from th
11630 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
11640 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
11650 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
11660 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
11670 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
11680 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11690 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
116a0 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20  iteIndexOutputs 
116b0 4f 75 74 70 75 74 73 0d 0a 20 20 20 20 20 20 20  Outputs..       
116c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
116d0 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f 75 74  get { return out
116e0 70 75 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  puts; }..       
116f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
11700 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
11710 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
11720 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
11730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11770 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
11780 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
11790 6c 65 20 42 61 73 65 20 43 6c 61 73 73 0d 0a 20  le Base Class.. 
117a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
117b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
117c0 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
117d0 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74 75 61  a managed virtua
117e0 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e  l table implemen
117f0 74 61 74 69 6f 6e 2e 20 20 49 74 20 69 73 0d 0a  tation.  It is..
11800 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 73 65 61 6c      /// not seal
11810 65 64 20 61 6e 64 20 73 68 6f 75 6c 64 20 62 65  ed and should be
11820 20 75 73 65 64 20 61 73 20 74 68 65 20 62 61 73   used as the bas
11830 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 20  e class for any 
11840 75 73 65 72 2d 64 65 66 69 6e 65 64 0d 0a 20 20  user-defined..  
11850 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61    /// virtual ta
11860 62 6c 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c  ble classes impl
11870 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67  emented in manag
11880 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f  ed code...    //
11890 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
118a0 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73 20 53    public class S
118b0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
118c0 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e :..           
118d0 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
118e0 6e 64 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c  ndle, IDisposabl
118f0 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20  e /* NOT SEALED 
11900 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  */..    {..     
11910 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
11920 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
11930 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
11940 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
11950 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68 69   The index withi
11960 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 73  n the array of s
11970 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20  trings provided 
11980 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
11990 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
119a0 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
119b0 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61  ule.Create" /> a
119c0 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nd..        /// 
119d0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
119e0 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
119f0 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
11a00 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ods containing t
11a10 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
11a20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75  name of the modu
11a30 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20  le implementing 
11a40 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
11a50 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
11a60 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11a70 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
11a80 73 74 20 69 6e 74 20 4d 6f 64 75 6c 65 4e 61 6d  st int ModuleNam
11a90 65 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 0d 0a 20  eIndex = 0;.... 
11aa0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
11af0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11b00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11b10 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78 20 77   /// The index w
11b20 69 74 68 69 6e 20 74 68 65 20 61 72 72 61 79 20  ithin the array 
11b30 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69  of strings provi
11b40 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ded to the..    
11b50 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
11b60 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
11b70 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
11b80 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  /> and..        
11b90 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
11ba0 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
11bb0 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  ule.Connect" /> 
11bc0 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69  methods containi
11bd0 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
11be0 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  /// name of the 
11bf0 64 61 74 61 62 61 73 65 20 63 6f 6e 74 61 69 6e  database contain
11c00 69 6e 67 20 74 68 69 73 20 76 69 72 74 75 61 6c  ing this virtual
11c10 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
11c20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
11c30 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
11c40 20 63 6f 6e 73 74 20 69 6e 74 20 44 61 74 61 62   const int Datab
11c50 61 73 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 31  aseNameIndex = 1
11c60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
11c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11cb0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
11cc0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11cd0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
11ce0 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68 65 20  ndex within the 
11cf0 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73  array of strings
11d00 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
11d10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11d20 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
11d30 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72  ManagedModule.Cr
11d40 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20  eate" /> and..  
11d50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
11d60 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
11d70 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63  gedModule.Connec
11d80 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f  t" /> methods co
11d90 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20  ntaining the..  
11da0 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f        /// name o
11db0 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  f the virtual ta
11dc0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
11dd0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11de0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
11df0 6e 73 74 20 69 6e 74 20 54 61 62 6c 65 4e 61 6d  nst int TableNam
11e00 65 49 6e 64 65 78 20 3d 20 32 3b 0d 0a 20 20 20  eIndex = 2;..   
11e10 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
11e20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
11e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e70 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
11e80 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e  egion Public Con
11e90 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
11ea0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11eb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
11ec0 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
11ed0 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
11ee0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
11ef0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11f00 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
11f10 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22  name="arguments"
11f20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11f30 68 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61  he original arra
11f40 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f  y of strings pro
11f50 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
11f60 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
11f70 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
11f80 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
11f90 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20  " /> and..      
11fa0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
11fb0 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
11fc0 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f  odule.Connect" /
11fd0 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
11fe0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
11ff0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
12000 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
12010 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ble(..          
12020 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d    string[] argum
12030 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ents..          
12040 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
12050 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
12060 2e 61 72 67 75 6d 65 6e 74 73 20 3d 20 61 72 67  .arguments = arg
12070 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20  uments;..       
12080 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
12090 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
120a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
120b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
120e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
120f0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
12100 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  lic Properties..
12110 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
12120 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e  string[] argumen
12130 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ts;..        ///
12140 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
12150 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67      /// The orig
12160 69 6e 61 6c 20 61 72 72 61 79 20 6f 66 20 73 74  inal array of st
12170 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74  rings provided t
12180 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
12190 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
121a0 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
121b0 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e  le.Create" /> an
121c0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  d..        /// <
121d0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
121e0 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
121f0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
12200 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ds...        ///
12210 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12220 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
12230 75 61 6c 20 73 74 72 69 6e 67 5b 5d 20 41 72 67  ual string[] Arg
12240 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  uments..        
12250 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
12260 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
12270 65 64 28 29 3b 20 72 65 74 75 72 6e 20 61 72 67  ed(); return arg
12280 75 6d 65 6e 74 73 3b 20 7d 0d 0a 20 20 20 20 20  uments; }..     
12290 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
122a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122e0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
122f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
12300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
12310 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f  e name of the mo
12320 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e  dule implementin
12330 67 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  g this virtual t
12340 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
12350 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
12360 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
12370 72 74 75 61 6c 20 73 74 72 69 6e 67 20 4d 6f 64  rtual string Mod
12380 75 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  uleName..       
12390 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
123a0 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
123b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
123c0 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
123d0 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
123e0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
123f0 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41 72 67   arguments = Arg
12400 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20  uments;....     
12410 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
12420 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c  arguments != nul
12430 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  l) &&..         
12440 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75             (argu
12450 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 4d  ments.Length > M
12460 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29  oduleNameIndex))
12470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12480 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12490 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
124a0 61 72 67 75 6d 65 6e 74 73 5b 4d 6f 64 75 6c 65  arguments[Module
124b0 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20  NameIndex];..   
124c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
124d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
124e0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
124f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12500 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12510 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
12520 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12530 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12540 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12550 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12590 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
125a0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
125b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
125c0 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
125d0 64 61 74 61 62 61 73 65 20 63 6f 6e 74 61 69 6e  database contain
125e0 69 6e 67 20 74 68 69 73 20 76 69 72 74 75 61 6c  ing this virtual
125f0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
12600 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12610 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
12620 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20 44  virtual string D
12630 61 74 61 62 61 73 65 4e 61 6d 65 0d 0a 20 20 20  atabaseName..   
12640 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12650 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
12660 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12670 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
12680 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
12690 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
126a0 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d  ng[] arguments =
126b0 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20   Arguments;.... 
126c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
126d0 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d  f ((arguments !=
126e0 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20   null) &&..     
126f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
12700 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68  arguments.Length
12710 20 3e 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49   > DatabaseNameI
12720 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20  ndex))..        
12730 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12750 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b  eturn arguments[
12760 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64 65  DatabaseNameInde
12770 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x];..           
12780 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12790 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
127a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
127b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
127c0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
127d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
127e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
127f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
12800 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
12810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12850 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
12860 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
12870 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
12880 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20   of the virtual 
12890 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
128a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
128b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
128c0 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20 54 61  irtual string Ta
128d0 62 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  bleName..       
128e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
128f0 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
12900 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12910 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
12920 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
12930 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
12940 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41 72 67   arguments = Arg
12950 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20  uments;....     
12960 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
12970 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c  arguments != nul
12980 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  l) &&..         
12990 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75             (argu
129a0 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 54  ments.Length > T
129b0 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d  ableNameIndex)).
129c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
129d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
129e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61          return a
129f0 72 67 75 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61  rguments[TableNa
12a00 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20  meIndex];..     
12a10 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
12a30 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
12a40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12a50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12a60 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
12a70 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12a80 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12a90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
12aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ae0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
12af0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
12b00 65 49 6e 64 65 78 20 69 6e 64 65 78 3b 0d 0a 20  eIndex index;.. 
12b10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
12b20 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
12b30 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
12b40 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e  "SQLiteIndex" />
12b50 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
12b60 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20   containing all 
12b70 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
12b80 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 69 6e   data for the in
12b90 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73  puts and outputs
12ba0 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 74 68 65   relating to the
12bb0 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 69 6e 64   most recent ind
12bc0 65 78 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ex..        /// 
12bd0 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  selection...    
12be0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12bf0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
12c00 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74  ic virtual SQLit
12c10 65 49 6e 64 65 78 20 49 6e 64 65 78 0d 0a 20 20  eIndex Index..  
12c20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12c30 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
12c40 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
12c50 72 6e 20 69 6e 64 65 78 3b 20 7d 0d 0a 20 20 20  rn index; }..   
12c60 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12c70 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
12c80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
12cd0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
12ce0 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
12cf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
12d00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
12d10 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
12d20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20  should normally 
12d30 62 65 20 75 73 65 64 20 62 79 20 74 68 65 0d 0a  be used by the..
12d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
12d50 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
12d60 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
12d70 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
12d80 20 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20   in order to..  
12d90 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72        /// perfor
12da0 6d 20 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f  m index selectio
12db0 6e 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 63  n based on the c
12dc0 6f 6e 73 74 72 61 69 6e 74 73 20 70 72 6f 76 69  onstraints provi
12dd0 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20  ded by the..    
12de0 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63      /// SQLite c
12df0 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
12e00 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
12e10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
12e20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
12e30 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
12e40 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
12e50 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20  f="SQLiteIndex" 
12e60 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
12e70 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c  ce containing al
12e80 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  l the..        /
12e90 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65 20  // data for the 
12ea0 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75  inputs and outpu
12eb0 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 69  ts relating to i
12ec0 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 2e 0d  ndex selection..
12ed0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
12ee0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
12ef0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
12f00 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
12f10 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e  ro upon success.
12f20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12f30 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
12f40 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
12f50 20 62 6f 6f 6c 20 42 65 73 74 49 6e 64 65 78 28   bool BestIndex(
12f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
12f70 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 0d  LiteIndex index.
12f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
12f90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12fa0 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
12fb0 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
12fc0 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65         this.inde
12fd0 78 20 3d 20 69 6e 64 65 78 3b 0d 0a 0d 0a 20 20  x = index;....  
12fe0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12ff0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
13000 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
13010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13050 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
13060 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13070 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
13080 70 74 73 20 74 6f 20 72 65 63 6f 72 64 20 74 68  pts to record th
13090 65 20 72 65 6e 61 6d 69 6e 67 20 6f 66 20 74 68  e renaming of th
130a0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
130b0 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
130c0 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
130d0 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
130e0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
130f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13100 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
13110 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20  ame="name">..   
13120 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77       /// The new
13130 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76 69   name for the vi
13140 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
13150 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
13160 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
13170 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
13180 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
13190 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20  upon success... 
131a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
131b0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
131c0 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 62 6f  ublic virtual bo
131d0 6f 6c 20 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  ol Rename(..    
131e0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
131f0 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ame..           
13200 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
13210 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
13220 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
13230 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
13240 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c  arguments != nul
13250 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  l) &&..         
13260 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74         (argument
13270 73 2e 4c 65 6e 67 74 68 20 3e 20 54 61 62 6c 65  s.Length > Table
13280 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20 20  NameIndex))..   
13290 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
132a0 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 75              argu
132b0 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61 6d 65 49  ments[TableNameI
132c0 6e 64 65 78 5d 20 3d 20 6e 61 6d 65 3b 0d 0a 20  ndex] = name;.. 
132d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
132e0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
132f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
13300 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13310 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
13320 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
13330 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
13340 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13380 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13390 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51       #region ISQ
133a0 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
133b0 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
133c0 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72    private IntPtr
133d0 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a   nativeHandle;..
133e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
133f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
13400 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 75  // Returns the u
13410 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65  nderlying SQLite
13420 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61   native handle a
13430 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
13440 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
13450 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
13460 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
13470 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13480 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
13490 6c 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48  l IntPtr NativeH
134a0 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b  andle..        {
134b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
134c0 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
134d0 64 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 74 69  d(); return nati
134e0 76 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20  veHandle; }..   
134f0 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61           interna
13500 6c 20 73 65 74 20 7b 20 6e 61 74 69 76 65 48 61  l set { nativeHa
13510 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  ndle = value; }.
13520 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
13530 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
13540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
135a0 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
135b0 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
135c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
135d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73  .        /// Dis
135e0 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62  poses of this ob
135f0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
13600 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
13610 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13620 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
13630 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ose()..        {
13640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
13650 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
13660 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70            GC.Sup
13670 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68  pressFinalize(th
13680 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  is);..        }.
13690 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
136a0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
13700 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
13710 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20  sable "Pattern" 
13720 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
13730 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69   private bool di
13740 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20  sposed;..       
13750 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13760 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f          /// Thro
13770 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d  ws an <see cref=
13780 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45  "ObjectDisposedE
13790 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20  xception" /> if 
137a0 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20  this object..   
137b0 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
137c0 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f  e has been dispo
137d0 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
137e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
137f0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f        private vo
13800 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  id CheckDisposed
13810 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  () /* throw */..
13820 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54          {..#if T
13830 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44  HROW_ON_DISPOSED
13840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
13850 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20   (disposed)..   
13860 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13870 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
13880 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
13890 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a  osedException(..
138a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138b0 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74      typeof(SQLit
138c0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 29 2e 4e  eVirtualTable).N
138d0 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
138e0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
138f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
13900 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
13950 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13960 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
13970 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69   Disposes of thi
13980 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
13990 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
139a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
139b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
139c0 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67 22 3e  ame="disposing">
139d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
139e0 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d  n-zero if this m
139f0 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63  ethod is being c
13a00 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a  alled from the..
13a10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
13a20 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65 28 29   cref="Dispose()
13a30 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65  " /> method.  Ze
13a40 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
13a50 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
13a60 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  d..        /// f
13a70 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a 65  rom the finalize
13a80 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
13a90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
13aa0 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
13ab0 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65  ual void Dispose
13ac0 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29  (bool disposing)
13ad0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
13ae0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69           if (!di
13af0 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  sposed)..       
13b00 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13b10 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69          //if (di
13b20 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
13b30 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20            //{.. 
13b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13b50 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  /    ///////////
13b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
13b80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
13b90 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61   // dispose mana
13ba0 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
13bb0 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
13bc0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
13bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bf0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
13c00 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20     //}....      
13c10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
13c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c50 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d    // release unm
13c60 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
13c70 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
13c80 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
13c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13cb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13cc0 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74      disposed = t
13cd0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
13ce0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
13cf0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
13d00 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
13d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d50 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
13d60 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63   #region Destruc
13d70 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  tor..        ///
13d80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13d90 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65      /// Finalize
13da0 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  s this object in
13db0 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
13dc0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13dd0 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69 74 65  .        ~SQLite
13de0 56 69 72 74 75 61 6c 54 61 62 6c 65 28 29 0d 0a  VirtualTable()..
13df0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13e00 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 66         Dispose(f
13e10 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alse);..        
13e20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
13e30 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
13e40 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
13e50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13ea0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
13eb0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
13ec0 65 43 75 72 73 6f 72 20 42 61 73 65 20 43 6c 61  eCursor Base Cla
13ed0 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
13ee0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
13ef0 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
13f00 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76  ents a managed v
13f10 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
13f20 73 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  sor implementati
13f30 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20  on...    /// It 
13f40 69 73 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e  is not sealed an
13f50 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  d should be used
13f60 20 61 73 20 74 68 65 20 62 61 73 65 20 63 6c 61   as the base cla
13f70 73 73 20 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20  ss for any..    
13f80 2f 2f 2f 20 75 73 65 72 2d 64 65 66 69 6e 65 64  /// user-defined
13f90 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
13fa0 75 72 73 6f 72 20 63 6c 61 73 73 65 73 20 69 6d  ursor classes im
13fb0 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e  plemented in man
13fc0 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20  aged code...    
13fd0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13fe0 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73      public class
13ff0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
14000 62 6c 65 43 75 72 73 6f 72 20 3a 0d 0a 20 20 20  bleCursor :..   
14010 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65           ISQLite
14020 4e 61 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44  NativeHandle, ID
14030 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54  isposable /* NOT
14040 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20   SEALED */..    
14050 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
14060 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 43 6f 6e  on Protected Con
14070 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  stants..        
14080 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14090 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
140a0 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
140b0 20 61 6e 20 69 6e 76 61 6c 69 64 20 69 6e 74 65   an invalid inte
140c0 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65  ger row sequence
140d0 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   number...      
140e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
140f0 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
14100 74 65 64 20 73 74 61 74 69 63 20 72 65 61 64 6f  ted static reado
14110 6e 6c 79 20 69 6e 74 20 49 6e 76 61 6c 69 64 52  nly int InvalidR
14120 6f 77 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20  owIndex = 0;..  
14130 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
14140 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
14150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14190 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
141a0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
141b0 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ata..        ///
141c0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
141d0 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 65 6c      /// The fiel
141e0 64 20 68 6f 6c 64 73 20 74 68 65 20 69 6e 74 65  d holds the inte
141f0 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65  ger row sequence
14200 20 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20   number for the 
14210 63 75 72 72 65 6e 74 20 72 6f 77 0d 0a 20 20 20  current row..   
14220 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 64       /// pointed
14230 20 74 6f 20 62 79 20 74 68 69 73 20 63 75 72 73   to by this curs
14240 6f 72 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  or object instan
14250 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
14260 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14270 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74       private int
14280 20 72 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20   rowIndex;..    
14290 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
142a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
142b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
14300 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73  gion Public Cons
14310 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
14320 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14330 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
14340 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
14350 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
14360 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
14370 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14380 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
14390 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
143a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
143b0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
143c0 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
143d0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
143e0 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
143f0 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
14400 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
14410 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
14420 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
14430 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56    public SQLiteV
14440 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
14450 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
14460 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
14470 6c 65 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  le table..      
14480 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
14490 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
144a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
144b0 20 20 20 20 20 20 74 68 69 73 2e 74 61 62 6c 65        this.table
144c0 20 3d 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20   = table;..     
144d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
144e0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
144f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
14500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
14540 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
14550 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74  rivate Construct
14560 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
14570 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14580 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
14590 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
145a0 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
145b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
145c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
145d0 72 69 76 61 74 65 20 53 51 4c 69 74 65 56 69 72  rivate SQLiteVir
145e0 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28  tualTableCursor(
145f0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
14600 20 20 20 20 20 20 20 20 20 20 72 6f 77 49 6e 64            rowInd
14610 65 78 20 3d 20 49 6e 76 61 6c 69 64 52 6f 77 49  ex = InvalidRowI
14620 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ndex;..        }
14630 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
14640 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
14650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14690 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
146a0 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
146b0 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
146c0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
146d0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
146e0 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20   table;..       
146f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14700 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
14710 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
14720 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
14730 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
14740 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
14750 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
14760 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
14770 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
14780 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14790 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
147a0 74 75 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75  tual SQLiteVirtu
147b0 61 6c 54 61 62 6c 65 20 54 61 62 6c 65 0d 0a 20  alTable Table.. 
147c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
147d0 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
147e0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
147f0 75 72 6e 20 74 61 62 6c 65 3b 20 7d 0d 0a 20 20  urn table; }..  
14800 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
14810 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
14820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14860 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e        private in
14870 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a  t indexNumber;..
14880 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
14890 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
148a0 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74  // Number used t
148b0 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
148c0 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
148d0 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ex.  This value 
148e0 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  will..        //
148f0 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68 65  / be set via the
14900 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c 74   <see cref="Filt
14910 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
14920 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
14930 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14940 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 69  public virtual i
14950 6e 74 20 49 6e 64 65 78 4e 75 6d 62 65 72 0d 0a  nt IndexNumber..
14960 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14970 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
14980 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
14990 74 75 72 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72  turn indexNumber
149a0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
149b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
149c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
14a10 76 61 74 65 20 73 74 72 69 6e 67 20 69 6e 64 65  vate string inde
14a20 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  xString;..      
14a30 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14a40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72  .        /// Str
14a50 69 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70  ing used to help
14a60 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65   identify the se
14a70 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54  lected index.  T
14a80 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a  his value will..
14a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 73          /// be s
14aa0 65 74 20 76 69 61 20 74 68 65 20 3c 73 65 65 20  et via the <see 
14ab0 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e  cref="Filter" />
14ac0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
14ad0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14ae0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
14af0 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20   virtual string 
14b00 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20 20 20  IndexString..   
14b10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14b20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
14b30 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
14b40 6e 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d  n indexString; }
14b50 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
14b60 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14bb0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
14bc0 65 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20  e SQLiteValue[] 
14bd0 76 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20  values;..       
14be0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14bf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
14c00 76 61 6c 75 65 73 20 75 73 65 64 20 74 6f 20 66  values used to f
14c10 69 6c 74 65 72 20 74 68 65 20 72 6f 77 73 20 72  ilter the rows r
14c20 65 74 75 72 6e 65 64 20 76 69 61 20 74 68 69 73  eturned via this
14c30 20 63 75 72 73 6f 72 20 6f 62 6a 65 63 74 0d 0a   cursor object..
14c40 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
14c50 61 6e 63 65 2e 20 20 54 68 69 73 20 76 61 6c 75  ance.  This valu
14c60 65 20 77 69 6c 6c 20 62 65 20 73 65 74 20 76 69  e will be set vi
14c70 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  a the <see cref=
14c80 22 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20  "Filter" />..   
14c90 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e       /// method.
14ca0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14cb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14cc0 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
14cd0 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 56   SQLiteValue[] V
14ce0 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20 20 7b  alues..        {
14cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
14d00 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
14d10 64 28 29 3b 20 72 65 74 75 72 6e 20 76 61 6c 75  d(); return valu
14d20 65 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  es; }..        }
14d30 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
14d40 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
14d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
14da0 20 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65     #region Prote
14db0 63 74 65 64 20 4d 65 74 68 6f 64 73 0d 0a 20 20  cted Methods..  
14dc0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
14dd0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
14de0 20 41 74 74 65 6d 70 74 73 20 74 6f 20 70 65 72   Attempts to per
14df0 73 69 73 74 20 74 68 65 20 73 70 65 63 69 66 69  sist the specifi
14e00 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  ed <see cref="SQ
14e10 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62  LiteValue" /> ob
14e20 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
14e30 2f 20 69 6e 73 74 61 6e 63 65 73 20 69 6e 20 6f  / instances in o
14e40 72 64 65 72 20 74 6f 20 6d 61 6b 65 20 74 68 65  rder to make the
14e50 6d 20 61 76 61 69 6c 61 62 6c 65 20 61 66 74 65  m available afte
14e60 72 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  r the..        /
14e70 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
14e80 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
14e90 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  le.Filter" /> me
14ea0 74 68 6f 64 20 72 65 74 75 72 6e 73 2e 0d 0a 20  thod returns... 
14eb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
14ec0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
14ed0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
14ee0 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20  values">..      
14ef0 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20    /// The array 
14f00 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
14f10 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62  LiteValue" /> ob
14f20 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 74  ject instances t
14f30 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
14f40 2f 20 70 65 72 73 69 73 74 65 64 2e 0d 0a 20 20  / persisted...  
14f50 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
14f60 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
14f70 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
14f80 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
14f90 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  r of <see cref="
14fa0 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20  SQLiteValue" /> 
14fb0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73  object instances
14fc0 20 74 68 61 74 20 77 65 72 65 0d 0a 20 20 20 20   that were..    
14fd0 20 20 20 20 2f 2f 2f 20 73 75 63 63 65 73 73 66      /// successf
14fe0 75 6c 6c 79 20 70 65 72 73 69 73 74 65 64 2e 0d  ully persisted..
14ff0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
15000 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
15010 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
15020 61 6c 20 69 6e 74 20 54 72 79 50 65 72 73 69 73  al int TryPersis
15030 74 56 61 6c 75 65 73 28 0d 0a 20 20 20 20 20 20  tValues(..      
15040 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
15050 65 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20  e[] values..    
15060 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
15070 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15080 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30    int result = 0
15090 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
150a0 20 69 66 20 28 76 61 6c 75 65 73 20 21 3d 20 6e   if (values != n
150b0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
150c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
150d0 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 53 51       foreach (SQ
150e0 4c 69 74 65 56 61 6c 75 65 20 76 61 6c 75 65 20  LiteValue value 
150f0 69 6e 20 76 61 6c 75 65 73 29 0d 0a 20 20 20 20  in values)..    
15100 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15120 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
15130 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
15140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
15150 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
15160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15170 69 66 20 28 76 61 6c 75 65 2e 50 65 72 73 69 73  if (value.Persis
15180 74 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  t())..          
15190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
151a0 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20  sult++;..       
151b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
151c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
151d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
151e0 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  result;..       
151f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
15200 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
15210 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15250 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
15260 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
15270 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  lic Methods..   
15280 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15290 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
152a0 54 68 69 73 20 6d 65 74 68 6f 64 20 73 68 6f 75  This method shou
152b0 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 20 75  ld normally be u
152c0 73 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20  sed by the..    
152d0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
152e0 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
152f0 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20  dModule.Filter" 
15300 2f 3e 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64  /> method in ord
15310 65 72 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  er to..        /
15320 2f 2f 20 70 65 72 66 6f 72 6d 20 66 69 6c 74 65  // perform filte
15330 72 69 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75  ring of the resu
15340 6c 74 20 72 6f 77 73 20 61 6e 64 2f 6f 72 20 74  lt rows and/or t
15350 6f 20 72 65 63 6f 72 64 20 74 68 65 20 66 69 6c  o record the fil
15360 74 65 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  tering..        
15370 2f 2f 2f 20 63 72 69 74 65 72 69 61 20 70 72 6f  /// criteria pro
15380 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51 4c  vided by the SQL
15390 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
153a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
153b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
153c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
153d0 6d 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72 22  me="indexNumber"
153e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
153f0 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65  umber used to he
15400 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
15410 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d  selected index..
15420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
15430 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
15440 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
15450 69 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20  indexString">.. 
15460 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e         /// Strin
15470 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  g used to help i
15480 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
15490 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20  cted index...   
154a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
154b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
154c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
154d0 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  es">..        //
154e0 2f 20 54 68 65 20 76 61 6c 75 65 73 20 63 6f 72  / The values cor
154f0 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61  responding to ea
15500 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65  ch column in the
15510 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
15520 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
15530 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
15540 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 76  public virtual v
15550 6f 69 64 20 46 69 6c 74 65 72 28 0d 0a 20 20 20  oid Filter(..   
15560 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64           int ind
15570 65 78 4e 75 6d 62 65 72 2c 0d 0a 20 20 20 20 20  exNumber,..     
15580 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 69 6e         string in
15590 64 65 78 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20  dexString,..    
155a0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 61          SQLiteVa
155b0 6c 75 65 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20  lue[] values..  
155c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
155d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
155e0 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
155f0 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
15600 20 20 20 20 69 66 20 28 28 76 61 6c 75 65 73 20      if ((values 
15610 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
15620 20 20 20 20 20 20 20 20 20 20 20 20 20 28 54 72               (Tr
15630 79 50 65 72 73 69 73 74 56 61 6c 75 65 73 28 76  yPersistValues(v
15640 61 6c 75 65 73 29 20 21 3d 20 76 61 6c 75 65 73  alues) != values
15650 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20  .Length))..     
15660 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15670 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
15680 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
15690 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
156a0 20 20 20 20 20 20 20 20 20 20 22 66 61 69 6c 65            "faile
156b0 64 20 74 6f 20 70 65 72 73 69 73 74 20 6f 6e 65  d to persist one
156c0 20 6f 72 20 6d 6f 72 65 20 76 61 6c 75 65 73 22   or more values"
156d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
156e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
156f0 20 74 68 69 73 2e 69 6e 64 65 78 4e 75 6d 62 65   this.indexNumbe
15700 72 20 3d 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b  r = indexNumber;
15710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
15720 69 73 2e 69 6e 64 65 78 53 74 72 69 6e 67 20 3d  is.indexString =
15730 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20   indexString;.. 
15740 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
15750 76 61 6c 75 65 73 20 3d 20 76 61 6c 75 65 73 3b  values = values;
15760 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
15770 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
15780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
157c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
157d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
157e0 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
157f0 74 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20  the integer row 
15800 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20  sequence number 
15810 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
15820 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  row...        //
15830 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15840 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
15850 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
15860 20 54 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77   The integer row
15870 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72   sequence number
15880 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
15890 20 72 6f 77 20 2d 4f 52 2d 20 7a 65 72 6f 20 69   row -OR- zero i
158a0 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  f..        /// i
158b0 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
158c0 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20  rmined...       
158d0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
158e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
158f0 76 69 72 74 75 61 6c 20 69 6e 74 20 47 65 74 52  virtual int GetR
15900 6f 77 49 6e 64 65 78 28 29 0d 0a 20 20 20 20 20  owIndex()..     
15910 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15920 20 20 72 65 74 75 72 6e 20 72 6f 77 49 6e 64 65    return rowInde
15930 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  x;..        }...
15940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
15950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15990 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
159a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
159b0 20 20 20 2f 2f 2f 20 41 64 6a 75 73 74 73 20 74     /// Adjusts t
159c0 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  he integer row s
159d0 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 73  equence number s
159e0 6f 20 74 68 61 74 20 69 74 20 72 65 66 65 72 73  o that it refers
159f0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
15a00 20 2f 2f 2f 20 6e 65 78 74 20 72 6f 77 2e 0d 0a   /// next row...
15a10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
15a20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
15a30 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 76  public virtual v
15a40 6f 69 64 20 4e 65 78 74 52 6f 77 49 6e 64 65 78  oid NextRowIndex
15a50 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
15a60 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 49 6e             rowIn
15a70 64 65 78 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  dex++;..        
15a80 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
15a90 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
15aa0 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ae0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
15af0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
15b00 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20  iteNativeHandle 
15b10 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
15b20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
15b30 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20  nativeHandle;.. 
15b40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
15b50 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
15b60 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e  / Returns the un
15b70 64 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20  derlying SQLite 
15b80 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73  native handle as
15b90 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
15ba0 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
15bb0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
15bc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
15bd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15be0 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
15bf0 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61   IntPtr NativeHa
15c00 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
15c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
15c20 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
15c30 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 74 69 76  (); return nativ
15c40 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20  eHandle; }..    
15c50 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
15c60 20 73 65 74 20 7b 20 6e 61 74 69 76 65 48 61 6e   set { nativeHan
15c70 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  dle = value; }..
15c80 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
15c90 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
15ca0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
15cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
15d00 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
15d10 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
15d20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15d30 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70          /// Disp
15d40 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a  oses of this obj
15d50 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
15d60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15d70 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
15d80 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
15d90 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  se()..        {.
15da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73  .            Dis
15db0 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
15dc0 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
15dd0 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
15de0 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
15df0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
15e00 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
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 2f 2f 2f 2f  ////////////////
15e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e50 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
15e60 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73   #region IDispos
15e70 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d  able "Pattern" M
15e80 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
15e90 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73  private bool dis
15ea0 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  posed;..        
15eb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15ec0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77         /// Throw
15ed0 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
15ee0 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
15ef0 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74  ception" /> if t
15f00 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20  his object..    
15f10 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
15f20 20 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73   has been dispos
15f30 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
15f40 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15f50 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69       private voi
15f60 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  d CheckDisposed(
15f70 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ) /* throw */.. 
15f80 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48         {..#if TH
15f90 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d  ROW_ON_DISPOSED.
15fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
15fb0 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  (disposed)..    
15fc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15fd0 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
15fe0 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f   new ObjectDispo
15ff0 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  sedException(.. 
16000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16010 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65     typeof(SQLite
16020 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
16030 6f 72 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20  or).Name);..    
16040 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
16050 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
16060 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
16070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
160b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
160c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
160d0 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f    /// Disposes o
160e0 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  f this object in
160f0 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
16100 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16110 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16120 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73  ram name="dispos
16130 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ing">..        /
16140 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
16150 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65  his method is be
16160 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20  ing called from 
16170 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
16180 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69 73 70   <see cref="Disp
16190 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64  ose()" /> method
161a0 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69 73 20  .  Zero if this 
161b0 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20  method is being 
161c0 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20 20 20  called..        
161d0 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66 69 6e  /// from the fin
161e0 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20  alizer...       
161f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
16200 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
16210 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69   virtual void Di
16220 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f  spose(bool dispo
16230 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b  sing)..        {
16240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
16250 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
16260 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16270 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69               //i
16280 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  f (disposing).. 
16290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
162a0 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  /{..            
162b0 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
162c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
162e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
162f0 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65  //    // dispose
16300 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
16310 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
16320 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
16330 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16350 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
16360 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20          //}.... 
16370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
16380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163a0 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
163b0 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73         // releas
163c0 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f  e unmanaged reso
163d0 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
163e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
163f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16410 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
16420 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65           dispose
16430 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
16440 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
16450 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
16460 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
16470 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
16480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
164c0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
164d0 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20  structor..      
164e0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
164f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e  .        /// Fin
16500 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65  alizes this obje
16510 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
16520 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16530 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53  ary>..        ~S
16540 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
16550 65 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20  eCursor()..     
16560 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
16570 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29    Dispose(false)
16580 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
16590 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
165a0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
165b0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
165c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
16610 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
16620 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 49 6e  eNativeHandle In
16630 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f  terface..    ///
16640 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16650 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66 61  /// This interfa
16660 63 65 20 72 65 70 72 65 73 65 6e 74 73 20 61 20  ce represents a 
16670 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 70 72  native handle pr
16680 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51  ovided by the SQ
16690 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f  Lite core..    /
166a0 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  // library...   
166b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
166c0 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65  .    public inte
166d0 72 66 61 63 65 20 49 53 51 4c 69 74 65 4e 61 74  rface ISQLiteNat
166e0 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  iveHandle..    {
166f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
16700 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
16710 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
16720 68 61 6e 64 6c 65 20 76 61 6c 75 65 2e 0d 0a 20  handle value... 
16730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
16740 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 49  mary>..        I
16750 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64  ntPtr NativeHand
16760 6c 65 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20  le { get; }..   
16770 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
16780 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
16790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
167e0 67 69 6f 6e 20 49 53 51 4c 69 74 65 4d 61 6e 61  gion ISQLiteMana
167f0 67 65 64 4d 6f 64 75 6c 65 20 49 6e 74 65 72 66  gedModule Interf
16800 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ace..    /// <su
16810 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
16820 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 72  This interface r
16830 65 70 72 65 73 65 6e 74 73 20 61 20 76 69 72 74  epresents a virt
16840 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d  ual table implem
16850 65 6e 74 61 74 69 6f 6e 20 77 72 69 74 74 65 6e  entation written
16860 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e   in..    /// man
16870 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20  aged code...    
16880 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16890 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72      public inter
168a0 66 61 63 65 20 49 53 51 4c 69 74 65 4d 61 6e 61  face ISQLiteMana
168b0 67 65 64 4d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b  gedModule..    {
168c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
168d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
168e0 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f 6e   /// Returns non
168f0 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73 63 68  -zero if the sch
16900 65 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72 74  ema for the virt
16910 75 61 6c 20 74 61 62 6c 65 20 68 61 73 20 62 65  ual table has be
16920 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
16930 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 20  declared...     
16940 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16950 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  >..        bool 
16960 44 65 63 6c 61 72 65 64 20 7b 20 67 65 74 3b 20  Declared { get; 
16970 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
16980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
169a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
169b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
169c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
169d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
169e0 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72         /// Retur
169f0 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  ns the name of t
16a00 68 65 20 6d 6f 64 75 6c 65 20 61 73 20 69 74 20  he module as it 
16a10 77 61 73 20 72 65 67 69 73 74 65 72 65 64 20 77  was registered w
16a20 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 0d 0a  ith the SQLite..
16a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 65          /// core
16a40 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
16a50 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16a60 3e 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  >..        strin
16a70 67 20 4e 61 6d 65 20 7b 20 67 65 74 3b 20 7d 0d  g Name { get; }.
16a80 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
16a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ad0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
16ae0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16af0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
16b00 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
16b10 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
16b20 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
16b30 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
16b40 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
16b50 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  reate" /> method
16b60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16b70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16b80 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16b90 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
16ba0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16bb0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
16bc0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f  iteConnection" /
16bd0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
16be0 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
16bf0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  h..        /// t
16c00 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
16c10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16c20 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
16c30 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
16c40 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d  ="pClientData">.
16c50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
16c60 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
16c70 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
16c80 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d  ated with this m
16c90 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61 73  odule, as it was
16ca0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72  ..        /// pr
16cb0 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51  ovided to the SQ
16cc0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
16cd0 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76  y when the nativ
16ce0 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63  e module instanc
16cf0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  e..        /// w
16d00 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20  as created...   
16d10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
16d20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
16d30 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75  param name="argu
16d40 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20 20  ments">..       
16d50 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20   /// The module 
16d60 6e 61 6d 65 2c 20 64 61 74 61 62 61 73 65 20 6e  name, database n
16d70 61 6d 65 2c 20 76 69 72 74 75 61 6c 20 74 61 62  ame, virtual tab
16d80 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 61 6c 6c  le name, and all
16d90 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20   other..        
16da0 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 70 61  /// arguments pa
16db0 73 73 65 64 20 74 6f 20 74 68 65 20 43 52 45 41  ssed to the CREA
16dc0 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
16dd0 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20   statement...   
16de0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
16df0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
16e00 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
16e10 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
16e20 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
16e30 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
16e40 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
16e50 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  o contain the.. 
16e60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
16e70 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
16e80 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
16e90 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
16ea0 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20  ociated with..  
16eb0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69        /// the vi
16ec0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
16ed0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16ee0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16ef0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
16f00 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
16f10 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20  / Upon failure, 
16f20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
16f30 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
16f40 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65 72  to contain an er
16f50 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ror..        ///
16f60 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20   message...     
16f70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16f80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
16f90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
16fa0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
16fb0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
16fc0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
16fd0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
16fe0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
16ff0 6f 64 65 20 43 72 65 61 74 65 28 0d 0a 20 20 20  ode Create(..   
17000 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
17010 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63  onnection connec
17020 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f 0d  tion,  /* in */.
17030 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
17040 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c  Ptr pClientData,
17050 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
17060 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
17070 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65   string[] argume
17080 6e 74 73 2c 20 20 20 20 20 20 20 20 20 20 20 2f  nts,           /
17090 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
170a0 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 56       ref SQLiteV
170b0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
170c0 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20  e, /* out */..  
170d0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
170e0 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20 20  ring error      
170f0 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a          /* out *
17100 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
17110 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
17120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17160 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
17170 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17180 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
17190 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
171a0 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
171b0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
171c0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
171d0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
171e0 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
171f0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
17200 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17210 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
17220 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
17230 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n">..        ///
17240 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
17250 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
17260 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
17270 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20  ance associated 
17280 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f  with..        //
17290 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  / the virtual ta
172a0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
172b0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
172c0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
172d0 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61  ame="pClientData
172e0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
172f0 54 68 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d  The native user-
17300 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73  data pointer ass
17310 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
17320 73 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20  s module, as it 
17330 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  was..        ///
17340 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
17350 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
17360 72 61 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61  rary when the na
17370 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74  tive module inst
17380 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
17390 2f 20 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a  / was created...
173a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
173b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
173c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
173d0 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20  rguments">..    
173e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75      /// The modu
173f0 6c 65 20 6e 61 6d 65 2c 20 64 61 74 61 62 61 73  le name, databas
17400 65 20 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c 20  e name, virtual 
17410 74 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20  table name, and 
17420 61 6c 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20 20  all other..     
17430 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73     /// arguments
17440 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 43   passed to the C
17450 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
17460 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a  BLE statement...
17470 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17480 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
17490 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
174a0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
174b0 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
174c0 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
174d0 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
174e0 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
174f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
17500 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
17510 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
17520 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
17530 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d  associated with.
17540 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
17550 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
17560 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17570 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17580 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17590 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  error">..       
175a0 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72   /// Upon failur
175b0 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  e, this paramete
175c0 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
175d0 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e  ed to contain an
175e0 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
175f0 2f 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20  /// message...  
17600 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17610 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
17620 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
17630 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
17640 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
17650 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
17660 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
17670 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
17680 6f 72 43 6f 64 65 20 43 6f 6e 6e 65 63 74 28 0d  orCode Connect(.
17690 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
176a0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
176b0 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e  nnection,  /* in
176c0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
176d0 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
176e0 61 74 61 2c 20 20 20 20 20 20 20 20 20 20 20 2f  ata,           /
176f0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
17700 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
17710 67 75 6d 65 6e 74 73 2c 20 20 20 20 20 20 20 20  guments,        
17720 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
17730 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
17740 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
17750 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f  table, /* out */
17760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
17770 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 20 20  f string error  
17780 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f              /* o
17790 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
177a0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
177b0 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17800 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17810 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17820 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
17830 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
17840 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
17850 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
17860 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
17870 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20  ule.xBestIndex" 
17880 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
17890 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
178a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
178b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
178c0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
178d0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
178e0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
178f0 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
17900 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
17910 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
17920 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
17930 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
17940 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
17950 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
17960 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e  am name="index">
17970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17980 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
17990 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a  iteIndex" /> obj
179a0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e  ect instance con
179b0 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d  taining all the.
179c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61 74  .        /// dat
179d0 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75 74 73  a for the inputs
179e0 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72 65 6c   and outputs rel
179f0 61 74 69 6e 67 20 74 6f 20 69 6e 64 65 78 20 73  ating to index s
17a00 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  election...     
17a10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
17a20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
17a30 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
17a40 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
17a50 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
17a60 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
17a70 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
17a80 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
17a90 6f 64 65 20 42 65 73 74 49 6e 64 65 78 28 0d 0a  ode BestIndex(..
17aa0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
17ab0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
17ac0 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  able, /* in */..
17ad0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
17ae0 74 65 49 6e 64 65 78 20 69 6e 64 65 78 20 20 20  teIndex index   
17af0 20 20 20 20 20 20 2f 2a 20 69 6e 2c 20 6f 75 74        /* in, out
17b00 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
17b10 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
17b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
17b70 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17b80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
17b90 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
17ba0 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
17bb0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
17bc0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
17bd0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
17be0 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f  e.xDisconnect" /
17bf0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
17c00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17c10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17c20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
17c30 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
17c40 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
17c50 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
17c60 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
17c70 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
17c80 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
17c90 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
17ca0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
17cb0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
17cc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
17cd0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
17ce0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
17cf0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
17d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17d10 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17d20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
17d30 65 20 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20  e Disconnect(.. 
17d40 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
17d50 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
17d60 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ble /* in */..  
17d70 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
17d80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17db0 2f 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 0d  ///////////////.
17dd0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17de0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17df0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
17e00 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
17e10 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
17e20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
17e30 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
17e40 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
17e50 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  roy" /> method..
17e60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
17e70 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
17e80 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
17e90 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
17ea0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
17eb0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
17ec0 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
17ed0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
17ee0 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
17ef0 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
17f00 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
17f10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
17f20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
17f30 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
17f40 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
17f50 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
17f60 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
17f70 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
17f80 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
17f90 72 6f 72 43 6f 64 65 20 44 65 73 74 72 6f 79 28  rorCode Destroy(
17fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
17fb0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
17fc0 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d   table /* in */.
17fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
17fe0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
17ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
18040 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
18050 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
18060 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
18070 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
18080 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
18090 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
180a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f  eNativeModule.xO
180b0 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  pen" /> method..
180c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
180d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
180e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
180f0 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
18100 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
18110 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
18120 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
18130 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
18140 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
18150 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
18160 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
18170 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18180 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
18190 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75   <param name="cu
181a0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
181b0 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
181c0 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
181d0 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
181e0 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
181f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
18200 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
18210 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
18220 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
18230 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
18240 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
18250 74 68 20 74 68 65 20 6e 65 77 6c 79 20 6f 70 65  th the newly ope
18260 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
18270 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20  e cursor...     
18280 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
182a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
182b0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
182c0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
182d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
182e0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
182f0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
18300 6f 64 65 20 4f 70 65 6e 28 0d 0a 20 20 20 20 20  ode Open(..     
18310 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
18320 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c  tualTable table,
18330 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
18340 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
18350 20 72 65 66 20 53 51 4c 69 74 65 56 69 72 74 75   ref SQLiteVirtu
18360 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75  alTableCursor cu
18370 72 73 6f 72 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  rsor /* out */..
18380 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
18390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
183a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183e0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
183f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18400 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
18410 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
18420 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
18430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
18440 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
18450 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  NativeModule.xCl
18460 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ose" /> method..
18470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
18480 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18490 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
184a0 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  ="cursor">..    
184b0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
184c0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
184d0 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22  tualTableCursor"
184e0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
184f0 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nce..        ///
18500 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
18510 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20   the previously 
18520 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74  opened virtual t
18530 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62  able cursor to b
18540 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  e..        /// u
18550 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
18560 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
18570 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
18580 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
18590 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
185a0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
185b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
185c0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
185d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43  QLiteErrorCode C
185e0 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  lose(..         
185f0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
18600 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
18610 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  or /* in */..   
18620 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
18630 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18680 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
18690 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
186a0 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
186b0 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
186c0 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
186d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
186e0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
186f0 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
18700 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
18710 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
18720 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
18730 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
18740 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  cursor">..      
18750 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
18760 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
18770 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f  alTableCursor" /
18780 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
18790 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
187a0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
187b0 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70  he previously op
187c0 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ened virtual tab
187d0 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d  le cursor to be.
187e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  .        /// use
187f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
18800 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
18810 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
18820 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72 22 3e  e="indexNumber">
18830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75  ..        /// Nu
18840 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65 6c  mber used to hel
18850 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73  p identify the s
18860 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a  elected index...
18870 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
18880 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
18890 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
188a0 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20 20  ndexString">..  
188b0 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67        /// String
188c0 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64   used to help id
188d0 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63  entify the selec
188e0 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20  ted index...    
188f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
18900 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
18910 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
18920 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
18930 20 54 68 65 20 76 61 6c 75 65 73 20 63 6f 72 72   The values corr
18940 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63  esponding to eac
18950 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20  h column in the 
18960 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d  selected index..
18970 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
18980 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
18990 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
189a0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
189b0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
189c0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
189d0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
189e0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
189f0 45 72 72 6f 72 43 6f 64 65 20 46 69 6c 74 65 72  ErrorCode Filter
18a00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
18a10 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
18a20 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 20  eCursor cursor, 
18a30 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
18a40 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 4e        int indexN
18a50 75 6d 62 65 72 2c 20 20 20 20 20 20 20 20 20 20  umber,          
18a60 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
18a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
18a80 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 2c  ing indexString,
18a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
18aa0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18ab0 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b      SQLiteValue[
18ac0 5d 20 76 61 6c 75 65 73 20 20 20 20 20 20 20 20  ] values        
18ad0 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
18ae0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
18af0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
18b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
18b50 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
18b60 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
18b70 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
18b80 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
18b90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
18ba0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
18bb0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78  ativeModule.xNex
18bc0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
18bd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
18be0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
18bf0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
18c00 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  cursor">..      
18c10 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
18c20 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
18c30 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f  alTableCursor" /
18c40 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
18c50 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
18c60 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
18c70 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70  he previously op
18c80 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ened virtual tab
18c90 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d  le cursor to be.
18ca0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  .        /// use
18cb0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
18cc0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
18cd0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
18ce0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
18cf0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
18d00 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
18d10 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
18d20 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
18d30 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4e 65 78  iteErrorCode Nex
18d40 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
18d50 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
18d60 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20  leCursor cursor 
18d70 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
18d80 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
18d90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18de0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
18df0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18e00 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
18e10 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
18e20 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
18e30 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
18e40 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
18e50 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
18e60 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
18e70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
18e80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18e90 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72  ram name="cursor
18ea0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
18eb0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
18ec0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
18ed0 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65  eCursor" /> obje
18ee0 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  ct instance..   
18ef0 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61       /// associa
18f00 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65  ted with the pre
18f10 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76  viously opened v
18f20 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
18f30 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20  sor to be..     
18f40 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20     /// used...  
18f50 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
18f60 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
18f70 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
18f80 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
18f90 69 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77 73 20  if no more rows 
18fa0 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3b 20 7a  are available; z
18fb0 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
18fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
18fd0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
18fe0 62 6f 6f 6c 20 45 6f 66 28 0d 0a 20 20 20 20 20  bool Eof(..     
18ff0 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
19000 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
19010 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d  cursor /* in */.
19020 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
19030 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
19040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19080 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
19090 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
190a0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
190b0 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
190c0 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
190d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
190e0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
190f0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
19100 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  olumn" /> method
19110 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19120 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
19130 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
19140 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20  me="cursor">..  
19150 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
19160 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
19170 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
19180 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
19190 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  tance..        /
191a0 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
191b0 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c  th the previousl
191c0 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c  y opened virtual
191d0 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f   table cursor to
191e0 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
191f0 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
19200 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
19210 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19220 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78 74 22 3e   name="context">
19230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
19240 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
19250 69 74 65 43 6f 6e 74 65 78 74 22 20 2f 3e 20 6f  iteContext" /> o
19260 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
19270 6f 20 62 65 20 75 73 65 64 20 66 6f 72 0d 0a 20  o be used for.. 
19280 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72         /// retur
19290 6e 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  ning the specifi
192a0 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 20  ed column value 
192b0 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  to the SQLite co
192c0 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
192d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
192e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
192f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
19300 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
19310 20 54 68 65 20 7a 65 72 6f 2d 62 61 73 65 64 20   The zero-based 
19320 69 6e 64 65 78 20 63 6f 72 72 65 73 70 6f 6e 64  index correspond
19330 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6c 75 6d  ing to the colum
19340 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  n containing the
19350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61  ..        /// va
19360 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
19370 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
19380 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
19390 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
193a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
193b0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
193c0 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
193d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
193e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
193f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f  LiteErrorCode Co
19400 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  lumn(..         
19410 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
19420 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
19430 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  or, /* in */..  
19440 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
19450 43 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 2c  Context context,
19460 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
19470 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19480 20 69 6e 74 20 69 6e 64 65 78 20 20 20 20 20 20   int index      
19490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
194a0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
194b0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
194c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
194d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19510 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
19520 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
19530 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
19540 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
19550 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
19560 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
19570 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
19580 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22  veModule.xRowId"
19590 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
195a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
195b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
195c0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75   <param name="cu
195d0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
195e0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
195f0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
19600 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20  TableCursor" /> 
19610 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d  object instance.
19620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  .        /// ass
19630 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
19640 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e   previously open
19650 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ed virtual table
19660 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20   cursor to be.. 
19670 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e         /// used.
19680 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19690 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
196a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
196b0 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20  "rowId">..      
196c0 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
196d0 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
196e0 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
196f0 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74  ied to contain t
19700 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20  he unique..     
19710 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72     /// integer r
19720 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f  ow identifier fo
19730 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f  r the current ro
19740 77 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  w for the specif
19750 69 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20  ied cursor...   
19760 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
19770 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19780 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
19790 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
197a0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
197b0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
197c0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
197d0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
197e0 72 43 6f 64 65 20 52 6f 77 49 64 28 0d 0a 20 20  rCode RowId(..  
197f0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
19800 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
19810 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e  or cursor, /* in
19820 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19830 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 20   ref long rowId 
19840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19850 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
19860 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
19870 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
198c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
198d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
198e0 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
198f0 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
19900 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
19910 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
19920 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
19930 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
19940 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
19950 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
19960 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
19970 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
19980 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
19990 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
199a0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
199b0 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
199c0 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
199d0 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
199e0 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
199f0 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
19a00 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
19a10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19a20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
19a30 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  es">..        //
19a40 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 3c  / The array of <
19a50 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
19a60 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Value" /> object
19a70 20 69 6e 73 74 61 6e 63 65 73 20 63 6f 6e 74 61   instances conta
19a80 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f  ining..        /
19a90 2f 2f 20 74 68 65 20 6e 65 77 20 6f 72 20 6d 6f  // the new or mo
19aa0 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61  dified column va
19ab0 6c 75 65 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20  lues, if any... 
19ac0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
19ad0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
19ae0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f   <param name="ro
19af0 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  wId">..        /
19b00 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
19b10 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
19b20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
19b30 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20   to contain the 
19b40 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20 20 20  unique..        
19b50 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f 77 20  /// integer row 
19b60 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20 74  identifier for t
19b70 68 65 20 72 6f 77 20 74 68 61 74 20 77 61 73 20  he row that was 
19b80 69 6e 73 65 72 74 65 64 2c 20 69 66 20 61 6e 79  inserted, if any
19b90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19ba0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19bb0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
19bc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
19bd0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
19be0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
19bf0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
19c00 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
19c10 74 65 45 72 72 6f 72 43 6f 64 65 20 55 70 64 61  teErrorCode Upda
19c20 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
19c30 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
19c40 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e  ble table, /* in
19c50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19c60 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76   SQLiteValue[] v
19c70 61 6c 75 65 73 2c 20 20 20 20 20 2f 2a 20 69 6e  alues,     /* in
19c80 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19c90 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 20   ref long rowId 
19ca0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75             /* ou
19cb0 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
19cc0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
19cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19d20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
19d30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
19d40 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
19d50 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
19d60 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
19d70 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
19d80 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
19d90 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65  le.xBegin" /> me
19da0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
19db0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
19dc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19dd0 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
19de0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
19df0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
19e00 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
19e10 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
19e20 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
19e30 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
19e40 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
19e50 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
19e60 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
19e70 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
19e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
19e90 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
19ea0 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
19eb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
19ec0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
19ed0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 42 65  LiteErrorCode Be
19ee0 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  gin(..          
19ef0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
19f00 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e  able table /* in
19f10 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19f20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
19f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f70 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19f80 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
19f90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
19fa0 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
19fb0 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
19fc0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
19fd0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
19fe0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
19ff0 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68  e.xSync" /> meth
1a000 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1a010 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1a020 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1a030 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
1a040 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1a050 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1a060 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
1a070 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1a080 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
1a090 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
1a0a0 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
1a0b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a0c0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1a0d0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1a0e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1a0f0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1a100 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
1a110 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1a120 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
1a130 74 65 45 72 72 6f 72 43 6f 64 65 20 53 79 6e 63  teErrorCode Sync
1a140 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1a150 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1a160 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f  e table /* in */
1a170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1a180 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1a1e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1a1f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1a200 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1a210 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1a220 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a230 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1a240 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1a250 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f  Commit" /> metho
1a260 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1a270 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1a280 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1a290 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
1a2a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1a2b0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
1a2c0 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
1a2d0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
1a2e0 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
1a2f0 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
1a300 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
1a310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1a320 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1a330 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1a340 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1a350 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1a360 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1a370 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1a380 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1a390 65 45 72 72 6f 72 43 6f 64 65 20 43 6f 6d 6d 69  eErrorCode Commi
1a3a0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1a3b0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1a3c0 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a  le table /* in *
1a3d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
1a3e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1a3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a430 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1a440 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1a450 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1a460 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
1a470 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
1a480 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1a490 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
1a4a0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
1a4b0 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65  xRollback" /> me
1a4c0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1a4d0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1a4e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1a4f0 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1a500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1a510 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1a520 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1a530 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1a540 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1a550 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1a560 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1a570 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1a580 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1a590 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1a5a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1a5b0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
1a5c0 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
1a5d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1a5e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
1a5f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f  LiteErrorCode Ro
1a600 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
1a610 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
1a620 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a  alTable table /*
1a630 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1a640 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1a650 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a690 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1a6a0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1a6b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1a6c0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1a6d0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1a6e0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1a6f0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1a700 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1a710 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
1a720 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
1a730 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1a740 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1a750 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1a760 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
1a770 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
1a780 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
1a790 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
1a7a0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
1a7b0 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
1a7c0 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
1a7d0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
1a7e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1a7f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1a800 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
1a810 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20 20  umentCount">..  
1a820 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
1a830 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
1a840 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f  s to the functio
1a850 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d  n being sought..
1a860 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1a870 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1a880 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1a890 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  name">..        
1a8a0 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
1a8b0 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69  the function bei
1a8c0 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20  ng sought...    
1a8d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a8e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a8f0 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74  aram name="funct
1a900 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ion">..        /
1a910 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
1a920 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
1a930 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
1a940 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d   to contain the.
1a950 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1a960 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46 75  e cref="SQLiteFu
1a970 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63  nction" /> objec
1a980 74 20 69 6e 73 74 61 6e 63 65 20 72 65 73 70 6f  t instance respo
1a990 6e 73 69 62 6c 65 20 66 6f 72 0d 0a 20 20 20 20  nsible for..    
1a9a0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
1a9b0 74 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  ting the specifi
1a9c0 65 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20  ed function...  
1a9d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1a9e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1a9f0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c  <param name="pCl
1aa00 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20  ientData">..    
1aa10 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
1aa20 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
1aa30 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
1aa40 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
1aa50 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1aa60 2f 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61  / native user-da
1aa70 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63  ta pointer assoc
1aa80 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
1aa90 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65      /// <paramre
1aaa0 66 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e  f name="function
1aab0 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  " />...        /
1aac0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1aad0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1aae0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1aaf0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
1ab00 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69  specified functi
1ab10 6f 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a 65  on was found; ze
1ab20 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  ro otherwise... 
1ab30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1ab40 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 62  urns>..        b
1ab50 6f 6f 6c 20 46 69 6e 64 46 75 6e 63 74 69 6f 6e  ool FindFunction
1ab60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1ab70 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1ab80 65 20 74 61 62 6c 65 2c 20 20 20 20 2f 2a 20 69  e table,    /* i
1ab90 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1aba0 20 20 69 6e 74 20 61 72 67 75 6d 65 6e 74 43 6f    int argumentCo
1abb0 75 6e 74 2c 20 20 20 20 20 20 20 20 20 20 20 2f  unt,           /
1abc0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1abd0 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
1abe0 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
1abf0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
1ac00 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
1ac10 74 65 46 75 6e 63 74 69 6f 6e 20 66 75 6e 63 74  teFunction funct
1ac20 69 6f 6e 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  ion, /* out */..
1ac30 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1ac40 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
1ac50 74 61 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20  ta       /* out 
1ac60 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1ac70 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
1ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1acd0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1ace0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1acf0 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
1ad00 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
1ad10 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1ad20 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
1ad30 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
1ad40 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74  .xRename" /> met
1ad50 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1ad60 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1ad70 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1ad80 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
1ad90 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ada0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1adb0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1adc0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1add0 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
1ade0 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
1adf0 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
1ae00 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1ae10 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1ae20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ae30 65 3d 22 6e 65 77 4e 61 6d 65 22 3e 0d 0a 20 20  e="newName">..  
1ae40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65        /// The ne
1ae50 77 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76  w name for the v
1ae60 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1ae70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ae80 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1ae90 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1aea0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1aeb0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1aec0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1aed0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1aee0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1aef0 72 6f 72 43 6f 64 65 20 52 65 6e 61 6d 65 28 0d  rorCode Rename(.
1af00 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1af10 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
1af20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  table, /* in */.
1af30 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
1af40 69 6e 67 20 6e 65 77 4e 61 6d 65 20 20 20 20 20  ing newName     
1af50 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
1af60 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1af70 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1af80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afc0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1afd0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1afe0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1aff0 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
1b000 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
1b010 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1b020 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
1b030 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53  eNativeModule.xS
1b040 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74  avepoint" /> met
1b050 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1b060 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1b070 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1b080 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
1b090 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1b0a0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1b0b0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1b0c0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1b0d0 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
1b0e0 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
1b0f0 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
1b100 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1b110 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1b120 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1b130 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a  e="savepoint">..
1b140 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1b150 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69   is an integer i
1b160 64 65 6e 74 69 66 69 65 72 20 75 6e 64 65 72 20  dentifier under 
1b170 77 68 69 63 68 20 74 68 65 20 74 68 65 20 63 75  which the the cu
1b180 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66 0d 0a  rrent state of..
1b190 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
1b1a0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73 68  virtual table sh
1b1b0 6f 75 6c 64 20 62 65 20 73 61 76 65 64 2e 0d 0a  ould be saved...
1b1c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1b1d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1b1e0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1b1f0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
1b200 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
1b210 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
1b220 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1b230 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
1b240 72 72 6f 72 43 6f 64 65 20 53 61 76 65 70 6f 69  rrorCode Savepoi
1b250 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
1b260 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
1b270 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e  ble table, /* in
1b280 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1b290 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20 20   int savepoint  
1b2a0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
1b2b0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1b2c0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1b2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b310 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1b320 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1b330 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1b340 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
1b350 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
1b360 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
1b370 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
1b380 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
1b390 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
1b3a0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1b3b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1b3c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b3d0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
1b3e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b3f0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
1b400 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
1b410 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1b420 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
1b430 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
1b440 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
1b450 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1b460 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1b470 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1b480 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e  ame="savepoint">
1b490 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b4a0 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  is is an integer
1b4b0 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61 74   used to indicat
1b4c0 65 20 74 68 61 74 20 61 6e 79 20 73 61 76 65 64  e that any saved
1b4d0 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d   states with an.
1b4e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 64 65  .        /// ide
1b4f0 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72 20  ntifier greater 
1b500 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f  than or equal to
1b510 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20   this should be 
1b520 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 0d 0a  deleted by the..
1b530 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74          /// virt
1b540 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1b550 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1b560 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1b570 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1b580 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1b590 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1b5a0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1b5b0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1b5c0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1b5d0 43 6f 64 65 20 52 65 6c 65 61 73 65 28 0d 0a 20  Code Release(.. 
1b5e0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1b5f0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
1b600 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ble, /* in */.. 
1b610 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
1b620 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20  avepoint        
1b630 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
1b640 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1b650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b6a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1b6b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1b6c0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1b6d0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1b6e0 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1b6f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1b700 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1b710 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
1b720 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68  lbackTo" /> meth
1b730 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1b740 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1b750 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1b760 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
1b770 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1b780 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1b790 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
1b7a0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1b7b0 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
1b7c0 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
1b7d0 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
1b7e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b7f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1b800 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1b810 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20  ="savepoint">.. 
1b820 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1b830 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69 64  is an integer id
1b840 65 6e 74 69 66 69 65 72 20 75 73 65 64 20 74 6f  entifier used to
1b850 20 73 70 65 63 69 66 79 20 61 20 73 70 65 63 69   specify a speci
1b860 66 69 63 20 73 61 76 65 64 0d 0a 20 20 20 20 20  fic saved..     
1b870 20 20 20 2f 2f 2f 20 73 74 61 74 65 20 66 6f 72     /// state for
1b880 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1b890 6c 65 20 66 6f 72 20 69 74 20 74 6f 20 72 65 73  le for it to res
1b8a0 74 6f 72 65 20 69 74 73 65 6c 66 20 62 61 63 6b  tore itself back
1b8b0 20 74 6f 2c 20 77 68 69 63 68 0d 0a 20 20 20 20   to, which..    
1b8c0 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 61      /// should a
1b8d0 6c 73 6f 20 68 61 76 65 20 74 68 65 20 65 66 66  lso have the eff
1b8e0 65 63 74 20 6f 66 20 64 65 6c 65 74 69 6e 67 20  ect of deleting 
1b8f0 61 6c 6c 20 73 61 76 65 64 20 73 74 61 74 65 73  all saved states
1b900 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20   with an..      
1b910 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 69 64    /// integer id
1b920 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72  entifier greater
1b930 20 74 68 61 6e 20 74 68 69 73 20 6f 6e 65 2e 0d   than this one..
1b940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1b950 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1b960 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1b970 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
1b980 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
1b990 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
1b9a0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1b9b0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
1b9c0 45 72 72 6f 72 43 6f 64 65 20 52 6f 6c 6c 62 61  ErrorCode Rollba
1b9d0 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20  ckTo(..         
1b9e0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
1b9f0 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20  Table table, /* 
1ba00 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1ba10 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74     int savepoint
1ba20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
1ba30 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1ba40 20 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20     );..    }..  
1ba50 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1ba60 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ba70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1baa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1bab0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
1bac0 51 4c 69 74 65 4d 65 6d 6f 72 79 20 53 74 61 74  QLiteMemory Stat
1bad0 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  ic Class..    //
1bae0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1baf0 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
1bb00 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63 20  contains static 
1bb10 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72 65  methods that are
1bb20 20 75 73 65 64 20 74 6f 20 61 6c 6c 6f 63 61 74   used to allocat
1bb30 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e 69  e,..    /// mani
1bb40 70 75 6c 61 74 65 2c 20 61 6e 64 20 66 72 65 65  pulate, and free
1bb50 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 70   native memory p
1bb60 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 53  rovided by the S
1bb70 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1bb80 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ry...    /// </s
1bb90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74  ummary>..    int
1bba0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
1bbb0 73 73 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 0d  ss SQLiteMemory.
1bbc0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1bbd0 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
1bbe0 44 61 74 61 0d 0a 23 69 66 20 54 52 41 43 4b 5f  Data..#if TRACK_
1bbf0 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20  MEMORY_BYTES..  
1bc00 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1bc10 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1bc20 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   This object ins
1bc30 74 61 6e 63 65 20 69 73 20 75 73 65 64 20 74 6f  tance is used to
1bc40 20 73 79 6e 63 68 72 6f 6e 69 7a 65 20 61 63 63   synchronize acc
1bc50 65 73 73 20 74 6f 20 74 68 65 20 6f 74 68 65 72  ess to the other
1bc60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
1bc70 61 74 69 63 20 66 69 65 6c 64 73 20 6f 66 20 74  atic fields of t
1bc80 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
1bc90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1bca0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
1bcb0 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63  ate static objec
1bcc0 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77  t syncRoot = new
1bcd0 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20   object();....  
1bce0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1bd30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1bd40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1bd50 2f 2f 2f 20 54 68 65 20 74 6f 74 61 6c 20 6e 75  /// The total nu
1bd60 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64  mber of outstand
1bd70 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74 65 73  ing memory bytes
1bd80 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 74 68   allocated by th
1bd90 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
1bda0 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
1bdb0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1bdc0 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
1bdd0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1bde0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
1bdf0 61 74 69 63 20 69 6e 74 20 62 79 74 65 73 41 6c  atic int bytesAl
1be00 6c 6f 63 61 74 65 64 3b 0d 0a 0d 0a 20 20 20 20  located;....    
1be10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1be20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1be60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1be70 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1be80 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75  / The maximum nu
1be90 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64  mber of outstand
1bea0 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74 65 73  ing memory bytes
1beb0 20 65 76 65 72 20 61 6c 6c 6f 63 61 74 65 64 20   ever allocated 
1bec0 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  by..        /// 
1bed0 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
1bee0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
1bef0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
1bf00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1bf10 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
1bf20 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 6d 61  te static int ma
1bf30 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61  ximumBytesAlloca
1bf40 74 65 64 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ted;..#endif..  
1bf50 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1bf60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1bf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfb0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
1bfc0 72 65 67 69 6f 6e 20 4d 65 6d 6f 72 79 20 41 6c  region Memory Al
1bfd0 6c 6f 63 61 74 69 6f 6e 20 48 65 6c 70 65 72 20  location Helper 
1bfe0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
1bff0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1c000 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f          /// Allo
1c010 63 61 74 65 73 20 61 74 20 6c 65 61 73 74 20 74  cates at least t
1c020 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 75 6d  he specified num
1c030 62 65 72 20 6f 66 20 62 79 74 65 73 20 6f 66 20  ber of bytes of 
1c040 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 0d 0a 20  native memory.. 
1c050 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 61 20 74         /// via t
1c060 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
1c070 69 62 72 61 72 79 20 73 71 6c 69 74 65 33 5f 6d  ibrary sqlite3_m
1c080 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e  alloc() function
1c090 20 61 6e 64 20 72 65 74 75 72 6e 73 0d 0a 20 20   and returns..  
1c0a0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 65        /// the re
1c0b0 73 75 6c 74 69 6e 67 20 6e 61 74 69 76 65 20 70  sulting native p
1c0c0 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20  ointer...       
1c0d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1c0e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1c0f0 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e  ram name="size">
1c100 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1c110 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
1c120 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2e 0d 0a  s to allocate...
1c130 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1c140 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1c150 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1c160 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1c170 69 76 65 20 70 6f 69 6e 74 65 72 20 74 68 61 74  ive pointer that
1c180 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 62 6c 6f   points to a blo
1c190 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66 20  ck of memory of 
1c1a0 61 74 20 6c 65 61 73 74 20 74 68 65 0d 0a 20 20  at least the..  
1c1b0 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66        /// specif
1c1c0 69 65 64 20 73 69 7a 65 20 2d 4f 52 2d 20 3c 73  ied size -OR- <s
1c1d0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e  ee cref="IntPtr.
1c1e0 5a 65 72 6f 22 20 2f 3e 20 69 66 20 74 68 65 20  Zero" /> if the 
1c1f0 6d 65 6d 6f 72 79 20 63 6f 75 6c 64 0d 0a 20 20  memory could..  
1c200 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 62 65        /// not be
1c210 20 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20   allocated...   
1c220 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1c230 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1c240 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74  lic static IntPt
1c250 72 20 41 6c 6c 6f 63 61 74 65 28 69 6e 74 20 73  r Allocate(int s
1c260 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ize)..        {.
1c270 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1c280 50 74 72 20 70 4d 65 6d 6f 72 79 20 3d 20 55 6e  Ptr pMemory = Un
1c290 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1c2a0 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  s.sqlite3_malloc
1c2b0 28 73 69 7a 65 29 3b 0d 0a 0d 0a 23 69 66 20 54  (size);....#if T
1c2c0 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45  RACK_MEMORY_BYTE
1c2d0 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  S..            i
1c2e0 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e  f (pMemory != In
1c2f0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1c300 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1c310 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 62             int b
1c320 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28  lockSize = Size(
1c330 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  pMemory);....   
1c340 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1c350 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d  (blockSize > 0).
1c360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c370 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1c380 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1c390 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1c3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1c3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3c0 20 20 20 20 20 20 20 20 62 79 74 65 73 41 6c 6c          bytesAll
1c3d0 6f 63 61 74 65 64 20 2b 3d 20 62 6c 6f 63 6b 53  ocated += blockS
1c3e0 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ize;....        
1c3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c400 69 66 20 28 62 79 74 65 73 41 6c 6c 6f 63 61 74  if (bytesAllocat
1c410 65 64 20 3e 20 6d 61 78 69 6d 75 6d 42 79 74 65  ed > maximumByte
1c420 73 41 6c 6c 6f 63 61 74 65 64 29 0d 0a 20 20 20  sAllocated)..   
1c430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c440 20 20 20 20 20 20 20 20 20 6d 61 78 69 6d 75 6d           maximum
1c450 42 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 3d  BytesAllocated =
1c460 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b   bytesAllocated;
1c470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c480 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c490 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1c4a0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1c4b0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
1c4c0 20 72 65 74 75 72 6e 20 70 4d 65 6d 6f 72 79 3b   return pMemory;
1c4d0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1c4e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1c4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1c540 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1c550 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65   /// Gets and re
1c560 74 75 72 6e 73 20 74 68 65 20 61 63 74 75 61 6c  turns the actual
1c570 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73 70 65   size of the spe
1c580 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 62 6c  cified memory bl
1c590 6f 63 6b 20 74 68 61 74 0d 0a 20 20 20 20 20 20  ock that..      
1c5a0 20 20 2f 2f 2f 20 77 61 73 20 70 72 65 76 69 6f    /// was previo
1c5b0 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  usly obtained fr
1c5c0 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  om the <see cref
1c5d0 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d  ="Allocate" /> m
1c5e0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1c5f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1c600 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1c610 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79  am name="pMemory
1c620 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1c630 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
1c640 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79  er to the memory
1c650 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c   block previousl
1c660 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
1c670 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1c680 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f   <see cref="Allo
1c690 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  cate" /> method.
1c6a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c6b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1c6c0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1c6d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
1c6e0 63 74 75 61 6c 20 73 69 7a 65 2c 20 69 6e 20 62  ctual size, in b
1c6f0 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6d 65 6d  ytes, of the mem
1c700 6f 72 79 20 62 6c 6f 63 6b 20 73 70 65 63 69 66  ory block specif
1c710 69 65 64 20 76 69 61 20 74 68 65 0d 0a 20 20 20  ied via the..   
1c720 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20       /// native 
1c730 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  pointer...      
1c740 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1c750 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1c760 20 73 74 61 74 69 63 20 69 6e 74 20 53 69 7a 65   static int Size
1c770 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29  (IntPtr pMemory)
1c780 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1c790 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
1c7a0 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  D..            r
1c7b0 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69  eturn UnsafeNati
1c7c0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
1c7d0 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e  3_malloc_size_in
1c7e0 74 65 72 6f 70 28 70 4d 65 6d 6f 72 79 29 3b 0d  terop(pMemory);.
1c7f0 0a 23 65 6c 69 66 20 54 52 41 43 4b 5f 4d 45 4d  .#elif TRACK_MEM
1c800 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20  ORY_BYTES..     
1c810 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1c820 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
1c830 4f 6b 2c 20 77 65 20 63 61 6e 6e 6f 74 20 64 65  Ok, we cannot de
1c840 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a 65  termine the size
1c850 20 6f 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 62   of the memory b
1c860 6c 6f 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  lock;..         
1c870 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 72     //       ther
1c880 65 66 6f 72 65 2c 20 6a 75 73 74 20 74 72 61 63  efore, just trac
1c890 6b 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c 6f  k number of allo
1c8a0 63 61 74 69 6f 6e 73 20 69 6e 73 74 65 61 64 2e  cations instead.
1c8b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1c8c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1c8d0 74 75 72 6e 20 28 70 4d 65 6d 6f 72 79 20 21 3d  turn (pMemory !=
1c8e0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 20   IntPtr.Zero) ? 
1c8f0 31 20 3a 20 30 3b 0d 0a 23 65 6c 73 65 0d 0a 20  1 : 0;..#else.. 
1c900 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1c910 6e 20 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  n 0;..#endif..  
1c920 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1c930 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1c940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1c980 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1c990 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1c9a0 20 46 72 65 65 73 20 61 20 6d 65 6d 6f 72 79 20   Frees a memory 
1c9b0 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79  block previously
1c9c0 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
1c9d0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1c9e0 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63  <see cref="Alloc
1c9f0 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
1ca00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1ca10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ca20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1ca30 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20  ="pMemory">..   
1ca40 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1ca50 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
1ca60 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20  he memory block 
1ca70 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69  previously obtai
1ca80 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ned from the..  
1ca90 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1caa0 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f  ref="Allocate" /
1cab0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1cac0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1cad0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1cae0 73 74 61 74 69 63 20 76 6f 69 64 20 46 72 65 65  static void Free
1caf0 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29  (IntPtr pMemory)
1cb00 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1cb10 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59   TRACK_MEMORY_BY
1cb20 54 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20  TES..           
1cb30 20 69 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20   if (pMemory != 
1cb40 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1cb50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1cb60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
1cb70 20 62 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a   blockSize = Siz
1cb80 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20  e(pMemory);.... 
1cb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1cba0 66 20 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30  f (blockSize > 0
1cbb0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1cbc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1cbd0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1cbe0 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
1cbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1cc00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cc10 20 20 20 20 20 20 20 20 20 20 62 79 74 65 73 41            bytesA
1cc20 6c 6c 6f 63 61 74 65 64 20 2d 3d 20 62 6c 6f 63  llocated -= bloc
1cc30 6b 53 69 7a 65 3b 0d 0a 20 20 20 20 20 20 20 20  kSize;..        
1cc40 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1cc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1cc60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1cc70 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1cc80 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1cc90 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1cca0 65 33 5f 66 72 65 65 28 70 4d 65 6d 6f 72 79 29  e3_free(pMemory)
1ccb0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
1ccc0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1ccd0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
1cce0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1ccf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1cd40 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
1cd50 53 74 72 69 6e 67 20 53 74 61 74 69 63 20 43 6c  String Static Cl
1cd60 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ass..    /// <su
1cd70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1cd80 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61  This class conta
1cd90 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f  ins static metho
1cda0 64 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64  ds that are used
1cdb0 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 6e 61   to deal with na
1cdc0 74 69 76 65 0d 0a 20 20 20 20 2f 2f 2f 20 55 54  tive..    /// UT
1cdd0 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
1cde0 65 72 73 20 74 6f 20 62 65 20 75 73 65 64 20 77  ers to be used w
1cdf0 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63  ith the SQLite c
1ce00 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
1ce10 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1ce20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ce30 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69  tatic class SQLi
1ce40 74 65 53 74 72 69 6e 67 0d 0a 20 20 20 20 7b 0d  teString..    {.
1ce50 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
1ce60 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e   Private Constan
1ce70 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
1ce80 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1ce90 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
1cea0 68 65 20 6d 61 78 69 6d 75 6d 20 70 6f 73 73 69  he maximum possi
1ceb0 62 6c 65 20 6c 65 6e 67 74 68 20 66 6f 72 20 74  ble length for t
1cec0 68 65 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20  he native UTF-8 
1ced0 65 6e 63 6f 64 65 64 0d 0a 20 20 20 20 20 20 20  encoded..       
1cee0 20 2f 2f 2f 20 73 74 72 69 6e 67 73 20 75 73 65   /// strings use
1cef0 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74  d with the SQLit
1cf00 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
1cf10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1cf20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1cf30 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
1cf40 69 6e 74 20 54 68 69 72 74 79 42 69 74 73 20 3d  int ThirtyBits =
1cf50 20 30 78 33 66 66 66 66 66 66 66 3b 0d 0a 0d 0a   0x3fffffff;....
1cf60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1cf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1cfb0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1cfc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1cfd0 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
1cfe0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 45 6e 63  e <see cref="Enc
1cff0 6f 64 69 6e 67 22 20 2f 3e 20 6f 62 6a 65 63 74  oding" /> object
1d000 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74   instance used t
1d010 6f 20 68 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20  o handle..      
1d020 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 73 69 6f 6e    /// conversion
1d030 73 20 66 72 6f 6d 2f 74 6f 20 55 54 46 2d 38 2e  s from/to UTF-8.
1d040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1d050 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1d060 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1d070 20 72 65 61 64 6f 6e 6c 79 20 45 6e 63 6f 64 69   readonly Encodi
1d080 6e 67 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 20  ng Utf8Encoding 
1d090 3d 20 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 3b  = Encoding.UTF8;
1d0a0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
1d0b0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
1d0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d100 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1d110 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38     #region UTF-8
1d120 20 45 6e 63 6f 64 69 6e 67 20 48 65 6c 70 65 72   Encoding Helper
1d130 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
1d140 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1d150 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
1d160 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66  verts the specif
1d170 69 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72 69  ied managed stri
1d180 6e 67 20 69 6e 74 6f 20 74 68 65 20 55 54 46 2d  ng into the UTF-
1d190 38 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 0d 0a  8 encoding and..
1d1a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75          /// retu
1d1b0 72 6e 73 20 74 68 65 20 61 72 72 61 79 20 6f 66  rns the array of
1d1c0 20 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e   bytes containin
1d1d0 67 20 69 74 73 20 72 65 70 72 65 73 65 6e 74 61  g its representa
1d1e0 74 69 6f 6e 20 69 6e 20 74 68 61 74 0d 0a 20 20  tion in that..  
1d1f0 20 20 20 20 20 20 2f 2f 2f 20 65 6e 63 6f 64 69        /// encodi
1d200 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ng...        ///
1d210 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1d220 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1d230 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
1d240 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
1d250 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f  anaged string to
1d260 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
1d270 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1d280 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1d290 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1d2a0 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
1d2b0 20 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e   bytes containin
1d2c0 67 20 74 68 65 20 72 65 70 72 65 73 65 6e 74 61  g the representa
1d2d0 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 61 6e 61  tion of the mana
1d2e0 67 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ged..        ///
1d2f0 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20 55   string in the U
1d300 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 6f 72  TF-8 encoding or
1d310 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75   null upon failu
1d320 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1d330 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1d340 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1d350 69 63 20 62 79 74 65 5b 5d 20 47 65 74 55 74 66  ic byte[] GetUtf
1d360 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67  8BytesFromString
1d370 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
1d380 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20  tring value..   
1d390 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1d3a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d3b0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
1d3c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1d3d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
1d3e0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
1d3f0 20 20 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e     return Utf8En
1d400 63 6f 64 69 6e 67 2e 47 65 74 42 79 74 65 73 28  coding.GetBytes(
1d410 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
1d420 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1d430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d470 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1d480 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1d490 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
1d4a0 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
1d4b0 65 64 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  ed array of byte
1d4c0 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61  s representing a
1d4d0 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 0d 0a   string in the..
1d4e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d          /// UTF-
1d4f0 38 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 20 72  8 encoding and r
1d500 65 74 75 72 6e 73 20 61 20 6d 61 6e 61 67 65 64  eturns a managed
1d510 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20   string...      
1d520 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1d530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1d540 61 72 61 6d 20 6e 61 6d 65 3d 22 62 79 74 65 73  aram name="bytes
1d550 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1d560 54 68 65 20 61 72 72 61 79 20 6f 66 20 62 79 74  The array of byt
1d570 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  es to convert...
1d580 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1d590 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1d5a0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1d5b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
1d5c0 61 67 65 64 20 73 74 72 69 6e 67 20 6f 72 20 6e  aged string or n
1d5d0 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  ull upon failure
1d5e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1d5f0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1d600 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1d610 20 73 74 72 69 6e 67 20 47 65 74 53 74 72 69 6e   string GetStrin
1d620 67 46 72 6f 6d 55 74 66 38 42 79 74 65 73 28 0d  gFromUtf8Bytes(.
1d630 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
1d640 65 5b 5d 20 62 79 74 65 73 0d 0a 20 20 20 20 20  e[] bytes..     
1d650 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1d660 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d670 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e 75   if (bytes == nu
1d680 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1d690 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
1d6a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1d6b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d6c0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
1d6d0 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f   return Utf8Enco
1d6e0 64 69 6e 67 2e 47 65 74 53 74 72 69 6e 67 28 62  ding.GetString(b
1d6f0 79 74 65 73 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ytes);..#else.. 
1d700 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1d710 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47  n Utf8Encoding.G
1d720 65 74 53 74 72 69 6e 67 28 62 79 74 65 73 2c 20  etString(bytes, 
1d730 30 2c 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 29  0, bytes.Length)
1d740 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
1d750 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
1d760 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
1d770 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1d780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1d7c0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 55         #region U
1d7d0 54 46 2d 38 20 53 74 72 69 6e 67 20 48 65 6c 70  TF-8 String Help
1d7e0 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
1d7f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1d800 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 50  >..        /// P
1d810 72 6f 62 65 73 20 61 20 6e 61 74 69 76 65 20 70  robes a native p
1d820 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69  ointer to a stri
1d830 6e 67 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20  ng in the UTF-8 
1d840 65 6e 63 6f 64 69 6e 67 20 66 6f 72 20 69 74 73  encoding for its
1d850 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 65  ..        /// te
1d860 72 6d 69 6e 61 74 69 6e 67 20 4e 55 4c 20 63 68  rminating NUL ch
1d870 61 72 61 63 74 65 72 2c 20 77 69 74 68 69 6e 20  aracter, within 
1d880 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c 65  the specified le
1d890 6e 67 74 68 20 6c 69 6d 69 74 2e 0d 0a 20 20 20  ngth limit...   
1d8a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1d8b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1d8c0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
1d8d0 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
1d8e0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e  /// The native N
1d8f0 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74  UL-terminated st
1d900 72 69 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20  ring pointer... 
1d910 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1d920 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1d930 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 69   <param name="li
1d940 6d 69 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mit">..        /
1d950 2f 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c  // The maximum l
1d960 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74  ength of the nat
1d970 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62  ive string, in b
1d980 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ytes...        /
1d990 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1d9a0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1d9b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1d9c0 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  The length of th
1d9d0 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c  e native string,
1d9e0 20 69 6e 20 62 79 74 65 73 20 2d 4f 52 2d 20 7a   in bytes -OR- z
1d9f0 65 72 6f 20 69 66 20 74 68 65 20 6c 65 6e 67 74  ero if the lengt
1da00 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  h..        /// c
1da10 6f 75 6c 64 20 6e 6f 74 20 62 65 20 64 65 74 65  ould not be dete
1da20 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20  rmined...       
1da30 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1da40 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1da50 73 74 61 74 69 63 20 69 6e 74 20 50 72 6f 62 65  static int Probe
1da60 46 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74  ForUtf8ByteLengt
1da70 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
1da80 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a  IntPtr pValue,..
1da90 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1daa0 6c 69 6d 69 74 0d 0a 20 20 20 20 20 20 20 20 20  limit..         
1dab0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1dac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1dad0 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a   length = 0;....
1dae0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1daf0 28 70 56 61 6c 75 65 20 21 3d 20 49 6e 74 50 74  (pValue != IntPt
1db00 72 2e 5a 65 72 6f 29 20 26 26 20 28 6c 69 6d 69  r.Zero) && (limi
1db10 74 20 3e 20 30 29 29 0d 0a 20 20 20 20 20 20 20  t > 0))..       
1db20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1db30 20 20 20 20 20 20 20 20 64 6f 0d 0a 20 20 20 20          do..    
1db40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1db50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db60 20 20 20 69 66 20 28 4d 61 72 73 68 61 6c 2e 52     if (Marshal.R
1db70 65 61 64 42 79 74 65 28 70 56 61 6c 75 65 2c 20  eadByte(pValue, 
1db80 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29 0d 0a 20  length) == 0).. 
1db90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dba0 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d         break;...
1dbb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dbc0 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20       if (length 
1dbd0 3e 3d 20 6c 69 6d 69 74 29 0d 0a 20 20 20 20 20  >= limit)..     
1dbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dbf0 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20     break;....   
1dc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc10 20 6c 65 6e 67 74 68 2b 2b 3b 0d 0a 20 20 20 20   length++;..    
1dc20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 77 68              } wh
1dc30 69 6c 65 20 28 74 72 75 65 29 3b 0d 0a 20 20 20  ile (true);..   
1dc40 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1dc50 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1dc60 20 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20   length;..      
1dc70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1dc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dcc0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1dcd0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1dce0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
1dcf0 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66  verts the specif
1dd00 69 65 64 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  ied native NUL-t
1dd10 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
1dd20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 0d 0a  string pointer..
1dd30 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f          /// into
1dd40 20 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e   a managed strin
1dd50 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  g...        /// 
1dd60 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1dd70 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1dd80 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20  ame="pValue">.. 
1dd90 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1dda0 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
1ddb0 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e  ated UTF-8 strin
1ddc0 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20  g pointer...    
1ddd0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1dde0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1ddf0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1de00 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
1de10 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20   string or null 
1de20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1de30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1de40 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1de50 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
1de60 69 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74  ing StringFromUt
1de70 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  f8IntPtr(..     
1de80 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1de90 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
1dea0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1deb0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1dec0 72 6e 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  rn StringFromUtf
1ded0 38 49 6e 74 50 74 72 28 70 56 61 6c 75 65 2c 0d  8IntPtr(pValue,.
1dee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1def0 20 50 72 6f 62 65 46 6f 72 55 74 66 38 42 79 74   ProbeForUtf8Byt
1df00 65 4c 65 6e 67 74 68 28 70 56 61 6c 75 65 2c 20  eLength(pValue, 
1df10 54 68 69 72 74 79 42 69 74 73 29 29 3b 0d 0a 20  ThirtyBits));.. 
1df20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1df30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1df40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1df80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1df90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1dfa0 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73  / Converts the s
1dfb0 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 20  pecified native 
1dfc0 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1dfd0 6e 74 65 72 20 6f 66 20 74 68 65 20 73 70 65 63  nter of the spec
1dfe0 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  ified..        /
1dff0 2f 2f 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61  // length into a
1e000 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e   managed string.
1e010 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1e020 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1e030 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1e040 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20  e="pValue">..   
1e050 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1e060 69 76 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ive UTF-8 string
1e070 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20   pointer...     
1e080 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e090 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1e0a0 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68  ram name="length
1e0b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1e0c0 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  The length of th
1e0d0 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c  e native string,
1e0e0 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20 20   in bytes...    
1e0f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1e100 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1e110 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1e120 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
1e130 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20   string or null 
1e140 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1e150 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1e160 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1e170 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
1e180 69 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74  ing StringFromUt
1e190 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  f8IntPtr(..     
1e1a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1e1b0 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alue,..         
1e1c0 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20     int length.. 
1e1d0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1e1e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e1f0 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20       if (pValue 
1e200 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1e210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e220 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
1e230 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1e240 28 6c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20  (length > 0)..  
1e250 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1e260 20 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74               byt
1e270 65 5b 5d 20 62 79 74 65 73 20 3d 20 6e 65 77 20  e[] bytes = new 
1e280 62 79 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d  byte[length];...
1e290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e2a0 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 70 56   Marshal.Copy(pV
1e2b0 61 6c 75 65 2c 20 62 79 74 65 73 2c 20 30 2c 20  alue, bytes, 0, 
1e2c0 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20  length);....    
1e2d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1e2e0 72 6e 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d  rn GetStringFrom
1e2f0 55 74 66 38 42 79 74 65 73 28 62 79 74 65 73 29  Utf8Bytes(bytes)
1e300 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1e310 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1e320 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d  return String.Em
1e330 70 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  pty;..        }.
1e340 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1e350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e390 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1e3a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1e3b0 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
1e3c0 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
1e3d0 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69  managed string i
1e3e0 6e 74 6f 20 61 20 6e 61 74 69 76 65 20 4e 55 4c  nto a native NUL
1e3f0 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20  -terminated..   
1e400 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73       /// UTF-8 s
1e410 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 75 73  tring pointer us
1e420 69 6e 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69  ing memory obtai
1e430 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  ned from the SQL
1e440 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20  ite core..      
1e450 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a    /// library...
1e460 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1e470 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1e480 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1e490 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
1e4a0 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
1e4b0 64 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76  d string to conv
1e4c0 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ert...        //
1e4d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1e4e0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1e4f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1e500 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65  he native NUL-te
1e510 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
1e520 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72  tring pointer or
1e530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1e540 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e  ee cref="IntPtr.
1e550 5a 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61  Zero" /> upon fa
1e560 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
1e570 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1e580 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1e590 74 61 74 69 63 20 49 6e 74 50 74 72 20 55 74 66  tatic IntPtr Utf
1e5a0 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
1e5b0 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
1e5c0 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
1e5d0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1e5e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e5f0 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d      int length =
1e600 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
1e610 20 20 20 72 65 74 75 72 6e 20 55 74 66 38 49 6e     return Utf8In
1e620 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 76  tPtrFromString(v
1e630 61 6c 75 65 2c 20 72 65 66 20 6c 65 6e 67 74 68  alue, ref length
1e640 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
1e650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1e660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e6a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1e6b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1e6c0 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
1e6d0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61  the specified ma
1e6e0 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74  naged string int
1e6f0 6f 20 61 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  o a native NUL-t
1e700 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20 20  erminated..     
1e710 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72     /// UTF-8 str
1e720 69 6e 67 20 70 6f 69 6e 74 65 72 20 75 73 69 6e  ing pointer usin
1e730 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65  g memory obtaine
1e740 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74  d from the SQLit
1e750 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20  e core..        
1e760 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  /// library...  
1e770 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1e780 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1e790 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
1e7a0 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
1e7b0 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
1e7c0 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72  string to conver
1e7d0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
1e7e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1e7f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1e800 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20  e="length">..   
1e810 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e       /// The len
1e820 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76  gth of the nativ
1e830 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74  e string, in byt
1e840 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
1e850 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1e860 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1e870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1e880 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  e native NUL-ter
1e890 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
1e8a0 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d  ring pointer or.
1e8b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1e8c0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a  e cref="IntPtr.Z
1e8d0 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69  ero" /> upon fai
1e8e0 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
1e8f0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1e900 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1e910 61 74 69 63 20 49 6e 74 50 74 72 20 55 74 66 38  atic IntPtr Utf8
1e920 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
1e930 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
1e940 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20 20  tring value,..  
1e950 20 20 20 20 20 20 20 20 20 20 72 65 66 20 69 6e            ref in
1e960 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20  t length..      
1e970 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1e980 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e990 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
1e9a0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1e9b0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
1e9c0 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
1e9d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 72 65         IntPtr re
1e9e0 73 75 6c 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65  sult = IntPtr.Ze
1e9f0 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
1ea00 20 62 79 74 65 5b 5d 20 62 79 74 65 73 20 3d 20   byte[] bytes = 
1ea10 47 65 74 55 74 66 38 42 79 74 65 73 46 72 6f 6d  GetUtf8BytesFrom
1ea20 53 74 72 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a  String(value);..
1ea30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1ea40 20 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29   (bytes == null)
1ea50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ea60 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
1ea70 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
1ea80 20 20 20 20 20 6c 65 6e 67 74 68 20 3d 20 62 79       length = by
1ea90 74 65 73 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20  tes.Length;.... 
1eaa0 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
1eab0 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  t = SQLiteMemory
1eac0 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74 68  .Allocate(length
1ead0 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 20 20 20   + 1);....      
1eae0 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
1eaf0 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1eb00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1eb10 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
1eb20 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
1eb30 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70       Marshal.Cop
1eb40 79 28 62 79 74 65 73 2c 20 30 2c 20 72 65 73 75  y(bytes, 0, resu
1eb50 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20  lt, length);..  
1eb60 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
1eb70 6c 2e 57 72 69 74 65 42 79 74 65 28 72 65 73 75  l.WriteByte(resu
1eb80 6c 74 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0d  lt, length, 0);.
1eb90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
1eba0 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
1ebb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1ebc0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1ebd0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1ebe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec00 2f 2f 2f 2f 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 0d  ///////////////.
1ec20 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
1ec30 6f 6e 20 55 54 46 2d 38 20 53 74 72 69 6e 67 20  on UTF-8 String 
1ec40 41 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74  Array Helper Met
1ec50 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
1ec60 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1ec70 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
1ec80 73 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  s a logical arra
1ec90 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d  y of native NUL-
1eca0 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38  terminated UTF-8
1ecb0 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20   string..       
1ecc0 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 69 6e   /// pointers in
1ecd0 74 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6d  to an array of m
1ece0 61 6e 61 67 65 64 20 73 74 72 69 6e 67 73 2e 0d  anaged strings..
1ecf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1ed00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ed10 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1ed20 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
1ed30 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
1ed40 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20   of elements in 
1ed50 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  the logical arra
1ed60 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20 20  y of native..   
1ed70 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65 72       /// NUL-ter
1ed80 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
1ed90 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d 0a  ring pointers...
1eda0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1edb0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1edc0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
1edd0 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rgv">..        /
1ede0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
1edf0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f 67  inter to the log
1ee00 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61  ical array of na
1ee10 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
1ee20 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1ee30 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1ee40 69 6e 74 65 72 73 20 74 6f 20 63 6f 6e 76 65 72  inters to conver
1ee50 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
1ee60 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1ee70 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1ee80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1ee90 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65   array of manage
1eea0 64 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75 6c  d strings or nul
1eeb0 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  l upon failure..
1eec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1eed0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1eee0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
1eef0 74 72 69 6e 67 5b 5d 20 53 74 72 69 6e 67 41 72  tring[] StringAr
1ef00 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41  rayFromUtf8SizeA
1ef10 6e 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ndIntPtr(..     
1ef20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
1ef30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1ef40 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20  tPtr argv..     
1ef50 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1ef60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1ef70 20 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d 0a   if (argc < 0)..
1ef80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef90 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
1efa0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1efb0 61 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  argv == IntPtr.Z
1efc0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1efd0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
1efe0 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
1eff0 20 20 73 74 72 69 6e 67 5b 5d 20 72 65 73 75 6c    string[] resul
1f000 74 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 61  t = new string[a
1f010 72 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rgc];....       
1f020 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e       for (int in
1f030 64 65 78 20 3d 20 30 2c 20 6f 66 66 73 65 74 20  dex = 0, offset 
1f040 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0;..          
1f050 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20            index 
1f060 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b  < result.Length;
1f070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f080 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f        index++, o
1f090 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e  ffset += IntPtr.
1f0a0 53 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20  Size)..         
1f0b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f0c0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 72        IntPtr pAr
1f0d0 67 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  g = SQLiteMarsha
1f0e0 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 61 72 67  l.ReadIntPtr(arg
1f0f0 76 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  v, offset);.... 
1f100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1f110 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28  esult[index] = (
1f120 70 41 72 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a  pArg != IntPtr.Z
1f130 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20 20  ero) ?..        
1f140 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
1f150 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
1f160 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a  (pArg) : null;..
1f170 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1f180 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1f190 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
1f1a0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1f1b0 20 20 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 2f 2f 2f  ////////////////
1f1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1f200 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1f210 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1f220 43 6f 6e 76 65 72 74 73 20 61 6e 20 61 72 72 61  Converts an arra
1f230 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72  y of managed str
1f240 69 6e 67 73 20 69 6e 74 6f 20 61 6e 20 61 72 72  ings into an arr
1f250 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20  ay of native..  
1f260 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65        /// NUL-te
1f270 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
1f280 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d  tring pointers..
1f290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1f2a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1f2b0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f2c0 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
1f2d0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61      /// The arra
1f2e0 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72  y of managed str
1f2f0 69 6e 67 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ings to convert.
1f300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f310 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f320 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1f330 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
1f340 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e  rray of native N
1f350 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54  UL-terminated UT
1f360 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
1f370 65 72 73 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20  ers or null..   
1f380 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 66 61       /// upon fa
1f390 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
1f3a0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1f3b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1f3c0 74 61 74 69 63 20 49 6e 74 50 74 72 5b 5d 20 55  tatic IntPtr[] U
1f3d0 74 66 38 49 6e 74 50 74 72 41 72 72 61 79 46 72  tf8IntPtrArrayFr
1f3e0 6f 6d 53 74 72 69 6e 67 41 72 72 61 79 28 0d 0a  omStringArray(..
1f3f0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1f400 6e 67 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20  ng[] values..   
1f410 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1f420 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1f430 20 20 20 69 66 20 28 76 61 6c 75 65 73 20 3d 3d     if (values ==
1f440 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1f450 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1f460 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1f470 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 72 65 73      IntPtr[] res
1f480 75 6c 74 20 3d 20 6e 65 77 20 49 6e 74 50 74 72  ult = new IntPtr
1f490 5b 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 5d 3b  [values.Length];
1f4a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f4b0 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 20 3d  for (int index =
1f4c0 20 30 3b 20 69 6e 64 65 78 20 3c 20 72 65 73 75   0; index < resu
1f4d0 6c 74 2e 4c 65 6e 67 74 68 3b 20 69 6e 64 65 78  lt.Length; index
1f4e0 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
1f4f0 20 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65       result[inde
1f500 78 5d 20 3d 20 55 74 66 38 49 6e 74 50 74 72 46  x] = Utf8IntPtrF
1f510 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65 73  romString(values
1f520 5b 69 6e 64 65 78 5d 29 3b 0d 0a 0d 0a 20 20 20  [index]);....   
1f530 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1f540 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  result;..       
1f550 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
1f560 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
1f570 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1f580 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1f590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5d0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
1f5e0 53 51 4c 69 74 65 42 79 74 65 73 20 53 74 61 74  SQLiteBytes Stat
1f5f0 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  ic Class..    //
1f600 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1f610 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
1f620 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63 20  contains static 
1f630 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72 65  methods that are
1f640 20 75 73 65 64 20 74 6f 20 64 65 61 6c 20 77 69   used to deal wi
1f650 74 68 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 2f  th native..    /
1f660 2f 2f 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6d  // pointers to m
1f670 65 6d 6f 72 79 20 62 6c 6f 63 6b 73 20 74 68 61  emory blocks tha
1f680 74 20 6c 6f 67 69 63 61 6c 6c 79 20 63 6f 6e 74  t logically cont
1f690 61 69 6e 20 61 72 72 61 79 73 20 6f 66 20 62 79  ain arrays of by
1f6a0 74 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20 2f  tes to be..    /
1f6b0 2f 2f 20 75 73 65 64 20 77 69 74 68 20 74 68 65  // used with the
1f6c0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
1f6d0 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rary...    /// <
1f6e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69  /summary>..    i
1f6f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
1f700 6c 61 73 73 20 53 51 4c 69 74 65 42 79 74 65 73  lass SQLiteBytes
1f710 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1f720 20 23 72 65 67 69 6f 6e 20 42 79 74 65 20 41 72   #region Byte Ar
1f730 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ray Helper Metho
1f740 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
1f750 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1f760 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
1f770 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
1f780 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 61 72   to a logical ar
1f790 72 61 79 20 6f 66 20 62 79 74 65 73 20 6f 66 20  ray of bytes of 
1f7a0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1f7b0 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74   specified lengt
1f7c0 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64  h into a managed
1f7d0 20 62 79 74 65 20 61 72 72 61 79 2e 0d 0a 20 20   byte array...  
1f7e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1f7f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1f800 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1f810 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
1f820 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1f830 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c  pointer to the l
1f840 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
1f850 62 79 74 65 73 20 74 6f 20 63 6f 6e 76 65 72 74  bytes to convert
1f860 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f870 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1f880 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f890 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20  ="length">..    
1f8a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67      /// The leng
1f8b0 74 68 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  th, in bytes, of
1f8c0 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72   the logical arr
1f8d0 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63  ay of bytes to c
1f8e0 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
1f8f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1f900 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1f910 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1f920 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62 79  / The managed by
1f930 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c  te array or null
1f940 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1f950 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1f960 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1f970 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 79  public static by
1f980 74 65 5b 5d 20 46 72 6f 6d 49 6e 74 50 74 72 28  te[] FromIntPtr(
1f990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1f9a0 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20  tPtr pValue,..  
1f9b0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65            int le
1f9c0 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20  ngth..          
1f9d0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1f9e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1f9f0 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
1fa00 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1fa10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1fa20 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1fa30 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d      if (length =
1fa40 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0)..          
1fa50 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
1fa60 20 62 79 74 65 5b 30 5d 3b 0d 0a 0d 0a 20 20 20   byte[0];....   
1fa70 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20           byte[] 
1fa80 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 62 79 74  result = new byt
1fa90 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20  e[length];....  
1faa0 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
1fab0 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20 72  l.Copy(pValue, r
1fac0 65 73 75 6c 74 2c 20 30 2c 20 6c 65 6e 67 74 68  esult, 0, length
1fad0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1fae0 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
1faf0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1fb00 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1fb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1fb50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1fb60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1fb70 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
1fb80 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72  managed byte arr
1fb90 61 79 20 69 6e 74 6f 20 61 20 6e 61 74 69 76 65  ay into a native
1fba0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f   pointer to a lo
1fbb0 67 69 63 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  gical..        /
1fbc0 2f 2f 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  // array of byte
1fbd0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
1fbe0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1fbf0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1fc00 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
1fc10 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
1fc20 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79  naged byte array
1fc30 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
1fc40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1fc50 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1fc60 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1fc70 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1fc80 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c  e pointer to a l
1fc90 6f 67 69 63 61 6c 20 62 79 74 65 20 61 72 72 61  ogical byte arra
1fca0 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66  y or null upon f
1fcb0 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
1fcc0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1fcd0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1fce0 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 6f  static IntPtr To
1fcf0 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
1fd00 20 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c 75       byte[] valu
1fd10 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
1fd20 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1fd30 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e           int len
1fd40 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  gth = 0;....    
1fd50 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54          return T
1fd60 6f 49 6e 74 50 74 72 28 76 61 6c 75 65 2c 20 72  oIntPtr(value, r
1fd70 65 66 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20  ef length);..   
1fd80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1fd90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1fda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
1fde0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1fdf0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1fe00 43 6f 6e 76 65 72 74 73 20 61 20 6d 61 6e 61 67  Converts a manag
1fe10 65 64 20 62 79 74 65 20 61 72 72 61 79 20 69 6e  ed byte array in
1fe20 74 6f 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e  to a native poin
1fe30 74 65 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c  ter to a logical
1fe40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72  ..        /// ar
1fe50 72 61 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20  ray of bytes... 
1fe60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1fe70 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1fe80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1fe90 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1fea0 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
1feb0 20 62 79 74 65 20 61 72 72 61 79 20 74 6f 20 63   byte array to c
1fec0 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
1fed0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1fee0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1fef0 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e  m name="length">
1ff00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1ff10 65 20 6c 65 6e 67 74 68 2c 20 69 6e 20 62 79 74  e length, in byt
1ff20 65 73 2c 20 6f 66 20 74 68 65 20 63 6f 6e 76 65  es, of the conve
1ff30 72 74 65 64 20 6c 6f 67 69 63 61 6c 20 61 72 72  rted logical arr
1ff40 61 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20  ay of bytes...  
1ff50 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1ff60 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1ff70 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1ff80 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1ff90 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c  e pointer to a l
1ffa0 6f 67 69 63 61 6c 20 62 79 74 65 20 61 72 72 61  ogical byte arra
1ffb0 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66  y or null upon f
1ffc0 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
1ffd0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1ffe0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1fff0 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 6f  static IntPtr To
20000 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
20010 20 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c 75       byte[] valu
20020 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
20030 72 65 66 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a  ref int length..
20040 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
20050 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20060 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
20070 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
20080 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
20090 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
200a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e  .            len
200b0 67 74 68 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67  gth = value.Leng
200c0 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  th;....         
200d0 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d     if (length ==
200e0 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
200f0 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
20100 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
20110 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 72          IntPtr r
20120 65 73 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65  esult = SQLiteMe
20130 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65  mory.Allocate(le
20140 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth);....      
20150 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
20160 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
20170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20180 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
20190 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
201a0 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70       Marshal.Cop
201b0 79 28 76 61 6c 75 65 2c 20 30 2c 20 72 65 73 75  y(value, 0, resu
201c0 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a  lt, length);....
201d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
201e0 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
201f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
20200 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
20210 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
20220 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
20230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20270 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
20280 6f 6e 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c  on SQLiteMarshal
20290 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20   Static Class.. 
202a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
202b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
202c0 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74  lass contains st
202d0 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61  atic methods tha
202e0 74 20 61 72 65 20 75 73 65 64 20 74 6f 20 70 65  t are used to pe
202f0 72 66 6f 72 6d 20 73 65 76 65 72 61 6c 0d 0a 20  rform several.. 
20300 20 20 20 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c     /// low-level
20310 20 64 61 74 61 20 6d 61 72 73 68 61 6c 6c 69 6e   data marshallin
20320 67 20 74 61 73 6b 73 20 62 65 74 77 65 65 6e 20  g tasks between 
20330 6e 61 74 69 76 65 20 61 6e 64 20 6d 61 6e 61 67  native and manag
20340 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f  ed code...    //
20350 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
20360 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
20370 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 61  c class SQLiteMa
20380 72 73 68 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20  rshal..    {..  
20390 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
203a0 74 50 74 72 20 48 65 6c 70 65 72 20 4d 65 74 68  tPtr Helper Meth
203b0 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
203c0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
203d0 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
203e0 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  a new <see cref=
203f0 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
20400 63 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65  ct instance base
20410 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  d on the..      
20420 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20    /// specified 
20430 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
20440 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
20450 74 61 6e 63 65 20 61 6e 64 20 61 6e 20 69 6e 74  tance and an int
20460 65 67 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  eger..        //
20470 2f 20 6f 66 66 73 65 74 2e 0d 0a 20 20 20 20 20  / offset...     
20480 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
20490 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
204a0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
204b0 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
204c0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
204d0 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
204e0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
204f0 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
20500 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
20510 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
20520 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20530 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
20540 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
20550 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
20560 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
20570 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
20580 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
20590 6f 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65  ocation that the
205a0 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f   new..        //
205b0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
205c0 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
205d0 6e 73 74 61 6e 63 65 20 73 68 6f 75 6c 64 20 70  nstance should p
205e0 6f 69 6e 74 20 74 6f 2e 0d 0a 20 20 20 20 20 20  oint to...      
205f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20600 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
20610 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
20620 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20  // The new <see 
20630 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
20640 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
20650 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20660 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
20670 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
20680 20 49 6e 74 50 74 72 20 49 6e 74 50 74 72 46 6f   IntPtr IntPtrFo
20690 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20  rOffset(..      
206a0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
206b0 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
206c0 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20     int offset.. 
206d0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
206e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
206f0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
20700 49 6e 74 50 74 72 28 70 6f 69 6e 74 65 72 2e 54  IntPtr(pointer.T
20710 6f 49 6e 74 36 34 28 29 20 2b 20 6f 66 66 73 65  oInt64() + offse
20720 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
20730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
20740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20780 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
20790 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
207a0 20 20 20 20 2f 2f 2f 20 52 6f 75 6e 64 73 20 75      /// Rounds u
207b0 70 20 61 6e 20 69 6e 74 65 67 65 72 20 73 69 7a  p an integer siz
207c0 65 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75  e to the next mu
207d0 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 20 61 6c  ltiple of the al
207e0 69 67 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20  ignment...      
207f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
20800 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
20810 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22  aram name="size"
20820 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20830 68 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65  he size, in byte
20840 73 2c 20 74 6f 20 62 65 20 72 6f 75 6e 64 65 64  s, to be rounded
20850 20 75 70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   up...        //
20860 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20870 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20880 61 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e  ame="alignment">
20890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
208a0 65 20 72 65 71 75 69 72 65 64 20 61 6c 69 67 6e  e required align
208b0 6d 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65 74  ment for the ret
208c0 75 72 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  urn value...    
208d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
208e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
208f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
20900 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69   /// The size, i
20910 6e 20 62 79 74 65 73 2c 20 72 6f 75 6e 64 65 64  n bytes, rounded
20920 20 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20   up to the next 
20930 6d 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 0d  multiple of the.
20940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 69  .        /// ali
20950 67 6e 6d 65 6e 74 2e 20 20 54 68 69 73 20 76 61  gnment.  This va
20960 6c 75 65 20 6d 61 79 20 65 6e 64 20 75 70 20 62  lue may end up b
20970 65 69 6e 67 20 74 68 65 20 73 61 6d 65 20 61 73  eing the same as
20980 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20   the original.. 
20990 20 20 20 20 20 20 20 2f 2f 2f 20 73 69 7a 65 2e         /// size.
209a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
209b0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
209c0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
209d0 69 6e 74 20 52 6f 75 6e 64 55 70 28 0d 0a 20 20  int RoundUp(..  
209e0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
209f0 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze,..           
20a00 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a   int alignment..
20a10 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
20a20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20a30 20 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d        int alignm
20a40 65 6e 74 4d 69 6e 75 73 4f 6e 65 20 3d 20 61 6c  entMinusOne = al
20a50 69 67 6e 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20 20  ignment - 1;..  
20a60 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
20a70 20 28 28 73 69 7a 65 20 2b 20 61 6c 69 67 6e 6d   ((size + alignm
20a80 65 6e 74 4d 69 6e 75 73 4f 6e 65 29 20 26 20 7e  entMinusOne) & ~
20a90 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e  alignmentMinusOn
20aa0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
20ab0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
20ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
20b10 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
20b20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
20b30 65 73 20 74 68 65 20 6f 66 66 73 65 74 2c 20 69  es the offset, i
20b40 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20  n bytes, of the 
20b50 6e 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d  next structure m
20b60 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  ember...        
20b70 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
20b80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
20b90 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
20ba0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20bb0 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79  he offset, in by
20bc0 74 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72  tes, of the curr
20bd0 65 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ent structure me
20be0 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
20bf0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
20c00 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
20c10 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20  name="size">..  
20c20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69        /// The si
20c30 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  ze, in bytes, of
20c40 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 72   the current str
20c50 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a  ucture member...
20c60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
20c70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
20c80 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
20c90 6c 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20  lignment">..    
20ca0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 6c 69 67      /// The alig
20cb0 6e 6d 65 6e 74 2c 20 69 6e 20 62 79 74 65 73 2c  nment, in bytes,
20cc0 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72   of the next str
20cd0 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a  ucture member...
20ce0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
20cf0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
20d00 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
20d10 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66       /// The off
20d20 73 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  set, in bytes, o
20d30 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63  f the next struc
20d40 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  ture member...  
20d50 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
20d60 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
20d70 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20  blic static int 
20d80 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
20d90 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
20da0 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
20db0 20 20 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20      int size,.. 
20dc0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
20dd0 6c 69 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20  lignment..      
20de0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
20df0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20e00 72 65 74 75 72 6e 20 52 6f 75 6e 64 55 70 28 6f  return RoundUp(o
20e10 66 66 73 65 74 20 2b 20 73 69 7a 65 2c 20 61 6c  ffset + size, al
20e20 69 67 6e 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20  ignment);..     
20e30 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
20e40 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
20e50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
20e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
20ea0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d         #region M
20eb0 61 72 73 68 61 6c 20 52 65 61 64 20 48 65 6c 70  arshal Read Help
20ec0 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
20ed0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
20ee0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
20ef0 65 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66  eads a <see cref
20f00 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
20f10 65 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69  e from the speci
20f20 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20  fied memory..   
20f30 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f       /// locatio
20f40 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
20f50 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
20f60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20f70 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a  ame="pointer">..
20f80 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
20f90 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
20fa0 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
20fb0 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69  tance representi
20fc0 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  ng the base..   
20fd0 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20       /// memory 
20fe0 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
20ff0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21010 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74  ram name="offset
21020 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
21030 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73  The integer offs
21040 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65  et from the base
21050 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
21060 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20   where the..    
21070 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
21080 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
21090 75 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73  ue to be read is
210a0 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20   located...     
210b0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
210c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
210d0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
210e0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
210f0 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
21100 75 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66  ue at the specif
21110 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ied memory locat
21120 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
21130 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
21140 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
21150 74 69 63 20 69 6e 74 20 52 65 61 64 49 6e 74 33  tic int ReadInt3
21160 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2(..            
21170 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
21180 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
21190 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20   offset..       
211a0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
211b0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
211c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
211d0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
211e0 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65  eturn Marshal.Re
211f0 61 64 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c  adInt32(pointer,
21200 20 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65   offset);..#else
21210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
21220 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
21230 64 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72  dInt32(IntPtrFor
21240 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
21250 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69  offset));..#endi
21260 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
21270 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
21280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
212c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
212d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
212e0 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73    /// Reads a <s
212f0 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
21300 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68  /> value from th
21310 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
21320 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
21330 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
21340 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
21350 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
21360 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
21370 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
21380 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
21390 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
213a0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
213b0 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
213c0 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
213d0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
213e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
213f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21400 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21410 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
21420 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
21430 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
21440 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
21450 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68  ocation where th
21460 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
21470 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
21480 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20   /> value to be 
21490 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e  read is located.
214a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
214b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
214c0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
214d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
214e0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
214f0 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65   /> value at the
21500 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
21510 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
21520 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
21530 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
21540 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20  lic static long 
21550 52 65 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20  ReadInt64(..    
21560 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
21570 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  ointer,..       
21580 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d       int offset.
21590 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
215a0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
215b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
215c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
215d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61         return Ma
215e0 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28  rshal.ReadInt64(
215f0 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
21600 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
21610 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
21620 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49  shal.ReadInt64(I
21630 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
21640 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29  ointer, offset))
21650 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
21660 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
21670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
216c0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
216d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
216e0 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ads a <see cref=
216f0 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
21700 65 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69  e from the speci
21710 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20  fied memory..   
21720 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f       /// locatio
21730 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
21740 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
21750 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21760 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a  ame="pointer">..
21770 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
21780 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
21790 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
217a0 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69  tance representi
217b0 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  ng the base..   
217c0 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20       /// memory 
217d0 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
217e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
217f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21800 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74  ram name="offset
21810 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
21820 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73  The integer offs
21830 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65  et from the base
21840 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
21850 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20   where the..    
21860 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
21870 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f  f="Double" /> to
21880 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61   be read is loca
21890 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
218a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
218b0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
218c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
218d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f  he <see cref="Do
218e0 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 61  uble" /> value a
218f0 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  t the specified 
21900 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
21910 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21920 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
21930 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
21940 64 6f 75 62 6c 65 20 52 65 61 64 44 6f 75 62 6c  double ReadDoubl
21950 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
21960 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
21970 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
21980 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20   offset..       
21990 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
219a0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
219b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
219c0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
219d0 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74  eturn BitConvert
219e0 65 72 2e 49 6e 74 36 34 42 69 74 73 54 6f 44 6f  er.Int64BitsToDo
219f0 75 62 6c 65 28 4d 61 72 73 68 61 6c 2e 52 65 61  uble(Marshal.Rea
21a00 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20  dInt64(..       
21a10 20 20 20 20 20 20 20 20 20 70 6f 69 6e 74 65 72           pointer
21a20 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6c  , offset));..#el
21a30 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
21a40 72 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72  return BitConver
21a50 74 65 72 2e 54 6f 44 6f 75 62 6c 65 28 42 69 74  ter.ToDouble(Bit
21a60 43 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74  Converter.GetByt
21a70 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
21a80 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 52 65 61       Marshal.Rea
21a90 64 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72  dInt64(IntPtrFor
21aa0 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
21ab0 6f 66 66 73 65 74 29 29 29 2c 20 30 29 3b 0d 0a  offset))), 0);..
21ac0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
21ad0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
21ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
21b30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
21b40 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73         /// Reads
21b50 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49   an <see cref="I
21b60 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
21b70 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69  from the specifi
21b80 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
21b90 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
21ba0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21bb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
21bc0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
21bd0 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
21be0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
21bf0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
21c00 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
21c10 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
21c20 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
21c30 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
21c40 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
21c50 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
21c60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
21c70 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
21c80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21c90 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
21ca0 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
21cb0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
21cc0 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
21cd0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
21ce0 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75  "IntPtr" /> valu
21cf0 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20  e to be read is 
21d00 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
21d10 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
21d20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
21d30 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
21d40 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
21d50 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c  ="IntPtr" /> val
21d60 75 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66  ue at the specif
21d70 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ied memory locat
21d80 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
21d90 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
21da0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
21db0 74 69 63 20 49 6e 74 50 74 72 20 52 65 61 64 49  tic IntPtr ReadI
21dc0 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
21dd0 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
21de0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
21df0 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20   int offset..   
21e00 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
21e10 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
21e20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21e30 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
21e40 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
21e50 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 6f 69  l.ReadIntPtr(poi
21e60 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  nter, offset);..
21e70 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
21e80 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
21e90 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 49 6e 74  l.ReadIntPtr(Int
21ea0 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
21eb0 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d  nter, offset));.
21ec0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
21ed0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
21ee0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
21ef0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
21f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
21f40 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72       #region Mar
21f50 73 68 61 6c 20 57 72 69 74 65 20 48 65 6c 70 65  shal Write Helpe
21f60 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
21f70 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
21f80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72  ..        /// Wr
21f90 69 74 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65  ites an <see cre
21fa0 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
21fb0 75 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  ue to the specif
21fc0 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
21fd0 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
21fe0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21ff0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
22000 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
22010 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
22020 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
22030 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
22040 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
22050 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
22060 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
22070 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
22080 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
22090 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
220a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
220b0 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
220c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
220d0 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
220e0 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
220f0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
22100 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
22110 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
22120 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
22130 65 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20  e to be written 
22140 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20  is located...   
22150 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
22160 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
22170 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
22180 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
22190 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
221a0 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20  Int32" /> value 
221b0 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
221c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
221d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
221e0 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
221f0 65 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20  eInt32(..       
22200 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
22210 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
22220 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
22230 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 76             int v
22240 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
22250 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
22260 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22270 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22280 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
22290 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70  hal.WriteInt32(p
222a0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20  ointer, offset, 
222b0 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
222c0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
222d0 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 49  hal.WriteInt32(I
222e0 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
222f0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c  ointer, offset),
22300 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
22310 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
22320 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
22330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22370 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
22380 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22390 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c   /// Writes an <
223a0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
223b0 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65   /> value to the
223c0 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
223d0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
223e0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
223f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
22400 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
22410 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
22420 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
22430 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
22440 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
22450 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
22460 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
22470 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
22480 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
22490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
224a0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
224b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
224c0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
224d0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
224e0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
224f0 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
22500 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
22510 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
22520 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
22530 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77  /> value to be w
22540 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65  ritten is locate
22550 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
22560 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
22570 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
22580 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
22590 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
225a0 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
225b0 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e   value to write.
225c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
225d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
225e0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
225f0 69 64 20 57 72 69 74 65 49 6e 74 36 34 28 0d 0a  id WriteInt64(..
22600 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
22610 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
22620 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
22630 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
22640 20 20 6c 6f 6e 67 20 76 61 6c 75 65 0d 0a 20 20    long value..  
22650 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
22660 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
22670 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22680 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
22690 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74      Marshal.Writ
226a0 65 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c 20  eInt64(pointer, 
226b0 6f 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d  offset, value);.
226c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
226d0 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74      Marshal.Writ
226e0 65 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72  eInt64(IntPtrFor
226f0 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
22700 6f 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b  offset), value);
22710 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
22720 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
22730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22770 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
22780 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
22790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69  .        /// Wri
227a0 74 65 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d  tes a <see cref=
227b0 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
227c0 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  e to the specifi
227d0 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
227e0 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
227f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
22800 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22810 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
22820 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
22830 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
22840 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
22850 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
22860 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
22870 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
22880 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
22890 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
228a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
228b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
228c0 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
228d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
228e0 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
228f0 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
22900 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
22910 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
22920 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
22930 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
22940 65 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20  e to be written 
22950 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20  is located...   
22960 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
22970 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
22980 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
22990 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
229a0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
229b0 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
229c0 20 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20   to write...    
229d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
229e0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
229f0 20 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69   static void Wri
22a00 74 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  teDouble(..     
22a10 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
22a20 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
22a30 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d      int offset,.
22a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75  .            dou
22a50 62 6c 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ble value..     
22a60 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
22a70 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
22a80 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22a90 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
22aa0 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
22ab0 74 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  t64(pointer, off
22ac0 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
22ad0 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74        BitConvert
22ae0 65 72 2e 44 6f 75 62 6c 65 54 6f 49 6e 74 36 34  er.DoubleToInt64
22af0 42 69 74 73 28 76 61 6c 75 65 29 29 3b 0d 0a 23  Bits(value));..#
22b00 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
22b10 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49    Marshal.WriteI
22b20 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66  nt64(IntPtrForOf
22b30 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
22b40 66 73 65 74 29 2c 0d 0a 20 20 20 20 20 20 20 20  fset),..        
22b50 20 20 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65          BitConve
22b60 72 74 65 72 2e 54 6f 49 6e 74 36 34 28 42 69 74  rter.ToInt64(Bit
22b70 43 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74  Converter.GetByt
22b80 65 73 28 76 61 6c 75 65 29 2c 20 30 29 29 3b 0d  es(value), 0));.
22b90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
22ba0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
22bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22bf0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
22c00 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22c10 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74          /// Writ
22c20 65 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  es a <see cref="
22c30 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
22c40 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
22c50 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
22c60 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
22c70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
22c80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22c90 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22ca0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
22cb0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
22cc0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
22cd0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
22ce0 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
22cf0 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
22d00 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
22d10 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
22d20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22d30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
22d40 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
22d50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
22d60 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
22d70 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
22d80 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
22d90 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
22da0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
22db0 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
22dc0 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
22dd0 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
22de0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
22df0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
22e00 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
22e10 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
22e20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
22e30 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
22e40 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
22e50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
22e60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
22e70 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
22e80 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  eIntPtr(..      
22e90 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
22ea0 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
22eb0 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a     int offset,..
22ec0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
22ed0 74 72 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  tr value..      
22ee0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
22ef0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
22f00 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22f10 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
22f20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
22f30 50 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  Ptr(pointer, off
22f40 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65  set, value);..#e
22f50 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
22f60 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
22f70 74 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66  tPtr(IntPtrForOf
22f80 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
22f90 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a  fset), value);..
22fa0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
22fb0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
22fc0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
22fd0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23010 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
23020 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 62 6a 65      #region Obje
23030 63 74 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ct Helper Method
23040 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
23050 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23060 20 20 2f 2f 2f 20 47 65 6e 65 72 61 74 65 73 20    /// Generates 
23070 61 20 68 61 73 68 20 63 6f 64 65 20 76 61 6c 75  a hash code valu
23080 65 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74  e for the object
23090 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
230a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
230b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
230c0 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
230d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a       /// The obj
230e0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65  ect instance use
230f0 64 20 74 6f 20 63 61 6c 63 75 6c 61 74 65 20 74  d to calculate t
23100 68 65 20 68 61 73 68 20 63 6f 64 65 2e 0d 0a 20  he hash code... 
23110 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23120 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
23130 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64   <param name="id
23140 65 6e 74 69 74 79 22 3e 0d 0a 20 20 20 20 20 20  entity">..      
23150 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
23160 66 20 64 69 66 66 65 72 65 6e 74 20 6f 62 6a 65  f different obje
23170 63 74 20 69 6e 73 74 61 6e 63 65 73 20 77 69 74  ct instances wit
23180 68 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  h the same value
23190 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20   should..       
231a0 20 2f 2f 2f 20 67 65 6e 65 72 61 74 65 20 64 69   /// generate di
231b0 66 66 65 72 65 6e 74 20 68 61 73 68 20 63 6f 64  fferent hash cod
231c0 65 73 2c 20 77 68 65 72 65 20 61 70 70 6c 69 63  es, where applic
231d0 61 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61  able.  This para
231e0 6d 65 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  meter..        /
231f0 2f 2f 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  // has no effect
23200 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   on the .NET Com
23210 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d  pact Framework..
23220 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
23230 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
23240 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
23250 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 68 61        /// The ha
23260 73 68 20 63 6f 64 65 20 76 61 6c 75 65 20 2d 4f  sh code value -O
23270 52 2d 20 7a 65 72 6f 20 69 66 20 74 68 65 20 6f  R- zero if the o
23280 62 6a 65 63 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a  bject is null...
23290 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
232a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
232b0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e  public static in
232c0 74 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a  t GetHashCode(..
232d0 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
232e0 63 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20  ct value,..     
232f0 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 64 65 6e         bool iden
23300 74 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20  tity..          
23310 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
23320 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23330 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23340 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
23350 69 64 65 6e 74 69 74 79 29 0d 0a 20 20 20 20 20  identity)..     
23360 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23370 6e 20 52 75 6e 74 69 6d 65 48 65 6c 70 65 72 73  n RuntimeHelpers
23380 2e 47 65 74 48 61 73 68 43 6f 64 65 28 76 61 6c  .GetHashCode(val
23390 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
233a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
233b0 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 20 72  value == null) r
233c0 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20  eturn 0;..      
233d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
233e0 75 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29  ue.GetHashCode()
233f0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
23400 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
23410 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
23420 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
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 2f 2f  ////////////////
23460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
23480 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
23490 4d 6f 64 75 6c 65 20 42 61 73 65 20 43 6c 61 73  Module Base Clas
234a0 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
234b0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
234c0 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
234d0 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69  nts a managed vi
234e0 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
234f0 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
23500 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69  n...    /// It i
23510 73 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64  s not sealed and
23520 20 6d 75 73 74 20 62 65 20 75 73 65 64 20 61 73   must be used as
23530 20 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20   the base class 
23540 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f  for any..    ///
23550 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69   user-defined vi
23560 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
23570 6c 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65  le classes imple
23580 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65  mented in manage
23590 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d code...    ///
235a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
235b0 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74   public abstract
235c0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64   class SQLiteMod
235d0 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  ule :..         
235e0 20 20 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65     ISQLiteManage
235f0 64 4d 6f 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69  dModule, /*ISQLi
23600 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a  teNativeModule,*
23610 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  /..            I
23620 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f  Disposable /* NO
23630 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20  T SEALED */..   
23640 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
23650 69 6f 6e 20 53 51 4c 69 74 65 4e 61 74 69 76 65  ion SQLiteNative
23660 4d 6f 64 75 6c 65 20 50 72 69 76 61 74 65 20 43  Module Private C
23670 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lass..        //
23680 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
23690 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c       /// This cl
236a0 61 73 73 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  ass implements t
236b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
236c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
236d0 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
236e0 2f 2f 20 69 6e 74 65 72 66 61 63 65 20 62 79 20  // interface by 
236f0 66 6f 72 77 61 72 64 69 6e 67 20 74 68 6f 73 65  forwarding those
23700 20 6d 65 74 68 6f 64 20 63 61 6c 6c 73 20 74 6f   method calls to
23710 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
23720 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
23730 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
23740 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 74  ject instance it
23750 20 63 6f 6e 74 61 69 6e 73 2e 20 20 49 66 20 74   contains.  If t
23760 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
23770 63 6f 6e 74 61 69 6e 65 64 20 3c 73 65 65 20 63  contained <see c
23780 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
23790 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
237a0 74 61 6e 63 65 20 69 73 20 6e 75 6c 6c 2c 20 61  tance is null, a
237b0 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
237c0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
237d0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
237e0 6c 65 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 73  le" /> methods s
237f0 69 6d 70 6c 79 20 67 65 6e 65 72 61 74 65 20 61  imply generate a
23800 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  n..        /// e
23810 72 72 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rror...        /
23820 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
23830 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
23840 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
23850 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3a  teNativeModule :
23860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23870 20 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d    ISQLiteNativeM
23880 6f 64 75 6c 65 2c 20 49 44 69 73 70 6f 73 61 62  odule, IDisposab
23890 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  le..        {.. 
238a0 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
238b0 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
238c0 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ants..          
238d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
238e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
238f0 20 54 68 69 73 20 69 73 20 74 68 65 20 76 61 6c   This is the val
23900 75 65 20 74 68 61 74 20 69 73 20 61 6c 77 61 79  ue that is alway
23910 73 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 22  s used for the "
23920 6c 6f 67 45 72 72 6f 72 73 22 0d 0a 20 20 20 20  logErrors"..    
23930 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61          /// para
23940 6d 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72  meter to the var
23950 69 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f  ious static erro
23960 72 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f  r handling metho
23970 64 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20  ds provided..   
23980 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20           /// by 
23990 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
239a0 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
239b0 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
239c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
239d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
239e0 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f  private const bo
239f0 6f 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72  ol DefaultLogErr
23a00 6f 72 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20  ors = true;.... 
23a10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
23a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
23a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23a70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
23a80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69           /// Thi
23a90 73 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74  s is the value t
23aa0 68 61 74 20 69 73 20 61 6c 77 61 79 73 20 75 73  hat is always us
23ab0 65 64 20 66 6f 72 20 74 68 65 20 22 6c 6f 67 45  ed for the "logE
23ac0 78 63 65 70 74 69 6f 6e 73 22 0d 0a 20 20 20 20  xceptions"..    
23ad0 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61          /// para
23ae0 6d 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72  meter to the var
23af0 69 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f  ious static erro
23b00 72 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f  r handling metho
23b10 64 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20  ds provided..   
23b20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20           /// by 
23b30 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
23b40 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
23b50 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
23b60 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
23b70 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
23b80 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f  private const bo
23b90 6f 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63  ol DefaultLogExc
23ba0 65 70 74 69 6f 6e 73 20 3d 20 74 72 75 65 3b 0d  eptions = true;.
23bb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
23bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
23c10 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
23c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23c30 20 54 68 69 73 20 69 73 20 74 68 65 20 65 72 72   This is the err
23c40 6f 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20  or message text 
23c50 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 63 6f  used when the co
23c60 6e 74 61 69 6e 65 64 0d 0a 20 20 20 20 20 20 20  ntained..       
23c70 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
23c80 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
23c90 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
23ca0 61 6e 63 65 20 69 73 20 6e 6f 74 20 61 76 61 69  ance is not avai
23cb0 6c 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  lable..         
23cc0 20 20 20 2f 2f 2f 20 66 6f 72 20 61 6e 79 20 72     /// for any r
23cd0 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  eason...        
23ce0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
23cf0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
23d00 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
23d10 72 69 6e 67 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  ring ModuleNotAv
23d20 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73  ailableErrorMess
23d30 61 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  age =..         
23d40 20 20 20 20 20 20 20 22 6e 61 74 69 76 65 20 6d         "native m
23d50 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  odule implementa
23d60 74 69 6f 6e 20 6e 6f 74 20 61 76 61 69 6c 61 62  tion not availab
23d70 6c 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  le";..          
23d80 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
23d90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
23da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
23de0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
23df0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
23e00 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ata..           
23e10 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
23e20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23e30 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
23e40 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
23e50 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
23e60 75 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65 0d  used to provide.
23e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23e80 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69   an implementati
23e90 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63  on of the <see c
23ea0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
23eb0 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20  veModule" />..  
23ec0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e            /// in
23ed0 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20  terface...      
23ee0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
23ef0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
23f00 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
23f10 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a  Module module;..
23f20 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
23f30 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
23f40 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
23f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
23f90 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
23fa0 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
23fb0 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  tors..          
23fc0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
23fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23fe0 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
23ff0 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
24000 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
24010 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
24020 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
24030 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
24040 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20  "module">..     
24050 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
24060 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
24070 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
24080 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20  t instance used 
24090 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20 20  to provide..    
240a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69          /// an i
240b0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
240c0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
240d0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
240e0 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ule" />..       
240f0 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61       /// interfa
24100 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce...           
24110 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
24120 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
24130 63 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  c SQLiteNativeMo
24140 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
24150 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
24160 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ule module..    
24170 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
24180 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
24190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
241a0 69 73 2e 6d 6f 64 75 6c 65 20 3d 20 6d 6f 64 75  is.module = modu
241b0 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
241c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
241d0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
241e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
241f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24230 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
24240 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61  gion Private Sta
24250 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  tic Methods..   
24260 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
24270 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
24280 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
24290 20 74 61 62 6c 65 20 65 72 72 6f 72 20 6d 65 73   table error mes
242a0 73 61 67 65 20 74 6f 20 6f 6e 65 20 74 68 61 74  sage to one that
242b0 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 6e   indicates the n
242c0 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20  ative..         
242d0 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d     /// module im
242e0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20  plementation is 
242f0 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  not available...
24300 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24310 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
24320 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
24330 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
24340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24350 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
24360 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
24370 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
24380 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
24390 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
243a0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
243b0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
243c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
243d0 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c  / The value of <
243e0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
243f0 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22  ErrorCode.Error"
24400 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   />...          
24410 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
24420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
24430 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c  ivate static SQL
24440 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64  iteErrorCode Mod
24450 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
24460 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20  ableError(..    
24470 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
24480 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
24490 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
244a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
244b0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
244c0 61 62 6c 65 45 72 72 6f 72 28 6e 75 6c 6c 2c 20  ableError(null, 
244d0 70 56 74 61 62 2c 20 44 65 66 61 75 6c 74 4c 6f  pVtab, DefaultLo
244e0 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20  gErrors,..      
244f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65                De
24500 66 61 75 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f  faultLogExceptio
24510 6e 73 2c 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ns, ModuleNotAva
24520 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61  ilableErrorMessa
24530 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ge);....        
24540 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
24550 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
24560 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rror;..         
24570 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
24580 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
24590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
245d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
245e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
245f0 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74    /// Sets the t
24600 61 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61  able error messa
24610 67 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69  ge to one that i
24620 6e 64 69 63 61 74 65 73 20 74 68 65 20 6e 61 74  ndicates the nat
24630 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ive..           
24640 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c   /// module impl
24650 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f  ementation is no
24660 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20  t available...  
24670 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
24680 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24690 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
246a0 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
246b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
246c0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
246d0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
246e0 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
246f0 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20  derived..       
24700 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
24710 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
24720 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
24730 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24740 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
24750 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
24760 6c 75 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66  lue of <see cref
24770 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ="SQLiteErrorCod
24780 65 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20  e.Error" />...  
24790 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
247a0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
247b0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
247c0 61 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  atic SQLiteError
247d0 43 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  Code ModuleNotAv
247e0 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72  ailableCursorErr
247f0 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
24800 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
24810 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
24820 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
24830 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24840 20 20 20 20 20 20 20 53 65 74 43 75 72 73 6f 72         SetCursor
24850 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 43 75 72  Error(null, pCur
24860 73 6f 72 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45  sor, DefaultLogE
24870 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20  rrors,..        
24880 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66 61              Defa
24890 75 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73  ultLogExceptions
248a0 2c 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  , ModuleNotAvail
248b0 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
248c0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
248d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
248e0 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
248f0 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or;..           
24900 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
24910 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
24920 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
24930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24970 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
24980 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69  gion ISQLiteNati
24990 76 65 4d 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73  veModule Members
249a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
249b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
249c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
249d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
249e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
249f0 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20  ule.xCreate" /> 
24a00 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
24a10 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
24a20 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
24a30 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
24a40 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20  ="pDb">..       
24a50 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
24a60 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
24a70 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
24a80 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
24a90 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
24aa0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
24ab0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24ac0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78  param name="pAux
24ad0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
24ae0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
24af0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
24b00 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
24b10 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
24b20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24b30 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
24b40 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24b50 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
24b60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
24b70 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
24b80 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
24b90 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
24ba0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
24bb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24bc0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
24bd0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
24be0 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
24bf0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
24c00 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
24c10 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
24c20 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
24c30 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
24c40 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
24c50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24c60 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
24c70 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
24c80 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24c90 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
24ca0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
24cb0 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
24cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24cd0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
24ce0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
24cf0 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22  am name="pError"
24d00 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
24d10 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
24d20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
24d30 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
24d40 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
24d50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24d60 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
24d70 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
24d80 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
24d90 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
24da0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
24db0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
24dc0 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
24dd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24de0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
24df0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
24e00 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
24e10 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Create(..       
24e20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
24e30 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  pDb,..          
24e40 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75        IntPtr pAu
24e50 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
24e60 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
24e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
24e80 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
24e90 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
24ea0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
24eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ec0 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
24ed0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
24ee0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
24ef0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24f00 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
24f10 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
24f20 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
24f30 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
24f40 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
24f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
24f60 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
24f70 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
24f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24f90 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
24fa0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
24fb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45                pE
24fd0 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72  rror = SQLiteStr
24fe0 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72  ing.Utf8IntPtrFr
24ff0 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  omString(..     
25000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25010 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69     ModuleNotAvai
25020 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67  lableErrorMessag
25030 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
25040 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
25050 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
25060 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
25070 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
25080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25090 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 72  eturn module.xCr
250a0 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  eate(..         
250b0 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20             pDb, 
250c0 70 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76  pAux, argc, argv
250d0 2c 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66  , ref pVtab, ref
250e0 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20   pError);..     
250f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
25100 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
25110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25150 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25160 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
25170 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
25180 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
25190 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
251a0 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
251b0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
251c0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
251d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
251e0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
251f0 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  pDb">..         
25200 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
25210 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
25220 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
25230 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
25240 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
25250 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25260 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
25270 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22  aram name="pAux"
25280 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25290 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
252a0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
252b0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
252c0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
252d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
252e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
252f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
25300 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
25310 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
25320 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
25330 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
25340 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
25350 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
25360 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
25370 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
25380 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
25390 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20  e="argv">..     
253a0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
253b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
253c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
253d0 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
253e0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
253f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
25400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25410 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
25420 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
25430 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25440 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25450 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25460 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
25470 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25480 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
25490 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
254a0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72  param name="pErr
254b0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
254c0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
254d0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
254e0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
254f0 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
25500 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25510 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
25520 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
25530 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
25540 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25550 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25560 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25570 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
25580 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25590 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
255a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
255b0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
255c0 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ode xConnect(.. 
255d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
255e0 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
255f0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
25600 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
25610 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
25620 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
25630 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
25640 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
25650 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
25660 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
25670 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
25680 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20   pError..       
25690 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
256a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
256b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
256c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
256d0 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
256e0 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
256f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25700 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
25710 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
25720 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
25730 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
25740 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
25750 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
25760 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
25770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25780 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c      pError = SQL
25790 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
257a0 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d  tPtrFromString(.
257b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
257c0 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e           ModuleN
257d0 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72  otAvailableError
257e0 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20  Message);....   
257f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25800 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
25810 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
25820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25830 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
25840 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
25850 6c 65 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  le.xConnect(..  
25860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25870 20 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67    pDb, pAux, arg
25880 63 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74  c, argv, ref pVt
25890 61 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b  ab, ref pError);
258a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
258b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
258c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25900 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
25910 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
25920 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25930 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
25940 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
25950 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
25960 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
25970 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25980 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
25990 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
259a0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
259b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
259c0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
259d0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
259e0 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
259f0 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
25a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25a10 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25a20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
25a30 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e  m name="pIndex">
25a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25a50 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
25a60 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
25a70 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
25a80 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
25a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25aa0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25ab0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
25ac0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
25ad0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
25ae0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
25af0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
25b00 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68  stIndex" /> meth
25b10 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25b20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
25b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
25b40 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
25b50 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d  ode xBestIndex(.
25b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25b70 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
25b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b90 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20  IntPtr pIndex.. 
25ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
25bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
25bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25bd0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
25be0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
25bf0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
25c00 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
25c10 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
25c20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
25c30 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
25c40 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
25c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
25c60 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
25c70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
25c80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
25c90 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
25ca0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
25cb0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
25cc0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
25cd0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 28 70  ule.xBestIndex(p
25ce0 56 74 61 62 2c 20 70 49 6e 64 65 78 29 3b 0d 0a  Vtab, pIndex);..
25cf0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
25d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25d50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25d60 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
25d70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
25d80 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
25d90 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
25da0 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63  odule.xDisconnec
25db0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
25dc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25dd0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
25de0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
25df0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
25e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25e10 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
25e20 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
25e30 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  eModule.xDisconn
25e40 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
25e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25e60 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25e70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
25e80 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
25e90 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
25ea0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
25eb0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  NativeModule.xDi
25ec0 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  sconnect" /> met
25ed0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
25ee0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
25ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
25f00 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
25f10 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74  Code xDisconnect
25f20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
25f30 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
25f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25f50 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
25f60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
25f70 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
25f80 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
25f90 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
25fa0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
25fb0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
25fc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
25fd0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
25fe0 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
25ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26000 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
26010 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
26020 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26030 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
26040 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
26050 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
26060 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
26070 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63  odule.xDisconnec
26080 74 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  t(pVtab);..     
26090 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
260a0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
260b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
260f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26100 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
26110 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
26120 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
26130 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
26140 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65  .xDestroy" /> me
26150 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26160 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
26170 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26180 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26190 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
261a0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
261b0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
261c0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
261d0 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74  xDestroy" /> met
261e0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
261f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
26200 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26210 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
26220 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
26230 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
26240 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
26250 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d  e.xDestroy" /> m
26260 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
26270 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
26280 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
26290 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
262a0 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28  orCode xDestroy(
262b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
262c0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
262d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
262f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26300 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
26310 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
26320 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
26330 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
26340 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
26350 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
26360 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
26370 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
26380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
26390 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
263a0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
263b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
263c0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
263d0 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
263e0 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
263f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
26400 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 28 70 56  dule.xDestroy(pV
26410 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
26420 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
26430 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26470 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
26480 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
26490 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
264a0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
264b0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
264c0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  NativeModule.xOp
264d0 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  en" /> method...
264e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
264f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
26500 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
26510 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
26520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26530 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
26540 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
26550 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20  veModule.xOpen" 
26560 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26570 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
26580 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
26590 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
265a0 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
265b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
265c0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
265d0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
265e0 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d  dule.xOpen" /> m
265f0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
26600 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
26610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26620 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
26630 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26640 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26650 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26660 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
26670 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26680 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
26690 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
266a0 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
266b0 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20  rCode xOpen(..  
266c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
266d0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
266e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
266f0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
26700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26710 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
26720 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
26730 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
26740 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
26750 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
26760 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
26770 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
26780 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
26790 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
267a0 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
267b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
267c0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
267d0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
267e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
267f0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
26800 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
26810 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
26820 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
26830 6f 64 75 6c 65 2e 78 4f 70 65 6e 28 70 56 74 61  odule.xOpen(pVta
26840 62 2c 20 72 65 66 20 70 43 75 72 73 6f 72 29 3b  b, ref pCursor);
26850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
26860 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
268c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
268d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
268e0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
268f0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26900 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20  eModule.xClose" 
26910 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26920 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
26930 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
26940 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
26950 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
26960 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26970 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26980 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26990 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
269a0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
269b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
269c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
269d0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
269e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
269f0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26a00 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26a10 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
26a20 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26a30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
26a40 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
26a50 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
26a60 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65  ErrorCode xClose
26a70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
26a80 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
26a90 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
26aa0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
26ab0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26ac0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
26ad0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
26ae0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
26af0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
26b00 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
26b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26b20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
26b30 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
26b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26b50 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
26b60 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
26b70 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
26b80 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
26b90 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28  ableCursorError(
26ba0 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20  pCursor);....   
26bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26bc0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73  urn module.xClos
26bd0 65 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20  e(pCursor);..   
26be0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
26bf0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
26c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
26c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26c50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
26c60 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
26c70 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
26c80 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
26c90 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
26ca0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
26cb0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
26cc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
26cd0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
26ce0 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
26cf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
26d00 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
26d10 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
26d20 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
26d30 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
26d40 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
26d50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26d60 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
26d70 64 78 4e 75 6d 22 3e 0d 0a 20 20 20 20 20 20 20  dxNum">..       
26d80 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
26d90 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
26da0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
26db0 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
26dc0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
26dd0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
26de0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26df0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53  param name="idxS
26e00 74 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  tr">..          
26e10 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
26e20 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
26e30 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
26e40 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
26e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26e60 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
26e70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
26e80 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d  am name="argc">.
26e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26ea0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26eb0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26ec0 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22  eModule.xFilter"
26ed0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
26ee0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
26ef0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
26f00 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
26f10 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
26f20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
26f30 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
26f40 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
26f50 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
26f60 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
26f70 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
26f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26f90 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
26fa0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26fb0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26fc0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26fd0 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20  ule.xFilter" /> 
26fe0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
26ff0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
27000 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
27010 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
27020 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28  rorCode xFilter(
27030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27040 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
27050 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
27060 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a     int idxNum,..
27070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27080 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a  IntPtr idxStr,..
27090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270a0 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
270b0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
270c0 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20  r argv..        
270d0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
270e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
270f0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
27100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
27110 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
27120 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
27130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27140 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
27150 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
27160 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
27170 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
27180 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
27190 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
271a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271b0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
271c0 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45  AvailableCursorE
271d0 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a  rror(pCursor);..
271e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
271f0 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
27200 78 46 69 6c 74 65 72 28 70 43 75 72 73 6f 72 2c  xFilter(pCursor,
27210 20 69 64 78 4e 75 6d 2c 20 69 64 78 53 74 72 2c   idxNum, idxStr,
27220 20 61 72 67 63 2c 20 61 72 67 76 29 3b 0d 0a 20   argc, argv);.. 
27230 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
27240 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
27250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
27290 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
272a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
272b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
272c0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
272d0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
272e0 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d  dule.xNext" /> m
272f0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
27300 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
27310 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
27320 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
27330 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
27340 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
27350 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
27360 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
27370 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74  le.xNext" /> met
27380 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
27390 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
273a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
273b0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
273c0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
273d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
273e0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
273f0 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68  e.xNext" /> meth
27400 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27410 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
27420 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
27430 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
27440 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20  ode xNext(..    
27450 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
27460 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
27470 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
27480 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
27490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
274a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
274b0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
274c0 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
274d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
274e0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
274f0 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
27500 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
27510 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
27520 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
27530 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
27540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27550 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
27560 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
27570 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72  sorError(pCursor
27580 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
27590 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
275a0 75 6c 65 2e 78 4e 65 78 74 28 70 43 75 72 73 6f  ule.xNext(pCurso
275b0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
275c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
275d0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
275e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27610 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
27620 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
27630 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
27640 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
27650 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
27660 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22  tiveModule.xEof"
27670 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
27680 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
27690 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
276a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
276b0 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
276c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
276d0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
276e0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
276f0 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e  eModule.xEof" />
27700 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27710 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
27720 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
27730 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
27740 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
27750 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
27760 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
27770 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d  odule.xEof" /> m
27780 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
27790 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
277a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
277b0 70 75 62 6c 69 63 20 69 6e 74 20 78 45 6f 66 28  public int xEof(
277c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
277d0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
277e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
277f0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
27800 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27810 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
27820 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
27830 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
27840 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
27850 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
27860 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27870 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
27880 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
27890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
278a0 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
278b0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
278c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
278d0 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64               Mod
278e0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
278f0 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
27900 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
27910 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
27920 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   1;..           
27930 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27940 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
27950 20 6d 6f 64 75 6c 65 2e 78 45 6f 66 28 70 43 75   module.xEof(pCu
27960 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
27970 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
27980 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
27990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
279d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
279e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
279f0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
27a00 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
27a10 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
27a20 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  olumn" /> method
27a30 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27a40 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
27a50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27a60 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
27a70 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
27a80 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
27a90 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
27aa0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
27ab0 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  olumn" /> method
27ac0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27ad0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
27ae0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
27af0 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6f 6e 74 65  ram name="pConte
27b00 78 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  xt">..          
27b10 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27b20 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27b30 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
27b40 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
27b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27b60 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27b70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
27b80 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e  am name="index">
27b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27ba0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
27bb0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
27bc0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
27bd0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
27be0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
27bf0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
27c00 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
27c10 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27c20 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
27c30 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
27c40 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  iveModule.xColum
27c50 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
27c60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27c70 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
27c80 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
27c90 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
27ca0 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
27cb0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
27cc0 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
27cd0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
27ce0 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20  pContext,..     
27cf0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
27d00 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
27d10 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
27d20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27d30 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
27d40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
27d50 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
27d60 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
27d70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27d90 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
27da0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
27db0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
27dc0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
27dd0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
27de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
27df0 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
27e00 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72  ailableCursorErr
27e10 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a  or(pCursor);....
27e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e30 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43  return module.xC
27e40 6f 6c 75 6d 6e 28 70 43 75 72 73 6f 72 2c 20 70  olumn(pCursor, p
27e50 43 6f 6e 74 65 78 74 2c 20 69 6e 64 65 78 29 3b  Context, index);
27e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
27e70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ec0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
27ed0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
27ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27ef0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27f00 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27f10 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20  eModule.xRowId" 
27f20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
27f30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
27f40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
27f50 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
27f60 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
27f70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27f80 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27f90 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27fa0 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
27fb0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
27fc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
27fd0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
27fe0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
27ff0 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20  ="rowId">..     
28000 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28010 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28020 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28030 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
28040 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
28050 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
28060 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28070 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
28080 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28090 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
280a0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
280b0 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
280c0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
280d0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
280e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
280f0 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
28100 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20  Code xRowId(..  
28110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
28120 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
28130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28140 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
28150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
28160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
28170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28180 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28190 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
281a0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
281b0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
281c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
281d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
281e0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
281f0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
28200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
28210 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
28220 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
28230 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
28240 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
28250 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72  CursorError(pCur
28260 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sor);....       
28270 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
28280 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 28 70 43  module.xRowId(pC
28290 75 72 73 6f 72 2c 20 72 65 66 20 72 6f 77 49 64  ursor, ref rowId
282a0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
282b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
282c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
282d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28300 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28310 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28320 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28330 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28340 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28350 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
28360 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
28370 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28380 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
28390 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
283a0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
283b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
283c0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
283d0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
283e0 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22  eModule.xUpdate"
283f0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28400 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
28410 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
28420 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28430 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20  me="argc">..    
28440 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
28450 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
28460 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28470 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d  le.xUpdate" /> m
28480 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28490 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
284a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
284b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
284c0 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgv">..         
284d0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
284e0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
284f0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55  eNativeModule.xU
28500 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  pdate" /> method
28510 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28520 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
28530 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
28540 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22  ram name="rowId"
28550 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28560 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28570 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28580 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
28590 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
285a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
285b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
285c0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
285d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
285e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
285f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28600 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
28610 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
28620 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28630 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
28640 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
28650 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
28660 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
28670 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
28680 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
28690 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
286a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
286b0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
286c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
286d0 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
286e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
286f0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
28700 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
28710 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
28720 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
28730 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
28740 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
28750 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
28760 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
28770 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
28780 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
28790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
287a0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
287b0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
287c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
287d0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
287e0 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
287f0 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
28800 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
28810 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 28 70 56  odule.xUpdate(pV
28820 74 61 62 2c 20 61 72 67 63 2c 20 61 72 67 76 2c  tab, argc, argv,
28830 20 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20   ref rowId);..  
28840 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
28850 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
28860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
288a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
288b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
288c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
288d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
288e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
288f0 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d  ule.xBegin" /> m
28900 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28910 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
28920 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
28930 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28940 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
28950 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28960 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28970 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28980 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68  .xBegin" /> meth
28990 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
289a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
289b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
289c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
289d0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
289e0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
289f0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28a00 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68  .xBegin" /> meth
28a10 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
28a20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
28a30 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
28a40 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
28a50 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20  ode xBegin(..   
28a60 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
28a70 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
28a80 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
28a90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
28aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28ab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28ac0 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
28ad0 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
28ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28af0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28b00 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
28b10 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
28b20 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
28b30 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
28b40 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
28b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b60 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
28b70 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
28b80 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
28b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28ba0 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
28bb0 78 42 65 67 69 6e 28 70 56 74 61 62 29 3b 0d 0a  xBegin(pVtab);..
28bc0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
28bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28c30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28c40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28c50 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28c60 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28c70 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20  odule.xSync" /> 
28c80 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
28c90 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
28ca0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
28cb0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
28cc0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
28cd0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28ce0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28cf0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28d00 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68  e.xSync" /> meth
28d10 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
28d20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
28d30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28d40 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28d50 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28d60 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28d70 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28d80 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f  .xSync" /> metho
28d90 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28da0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
28db0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
28dc0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
28dd0 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20  de xSync(..     
28de0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
28df0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
28e00 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
28e10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
28e20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
28e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28e40 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
28e50 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
28e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e70 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
28e80 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
28e90 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
28ea0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
28eb0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
28ec0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
28ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ee0 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
28ef0 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
28f00 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
28f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53  return module.xS
28f30 79 6e 63 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  ync(pVtab);..   
28f40 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
28f50 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
28f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
28fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28fb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
28fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
28fd0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
28fe0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28ff0 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d  le.xCommit" /> m
29000 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29010 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
29020 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
29030 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29040 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
29050 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29060 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29070 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29080 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74  .xCommit" /> met
29090 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
290a0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
290b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
290c0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
290d0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
290e0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
290f0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29100 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65  e.xCommit" /> me
29110 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29120 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
29130 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
29140 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
29150 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a  rCode xCommit(..
29160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29170 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
29180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
29190 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
291a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
291b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
291c0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
291d0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
291e0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
291f0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29200 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
29210 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
29220 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
29230 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
29240 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
29250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29260 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
29270 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
29280 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
29290 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
292a0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
292b0 6c 65 2e 78 43 6f 6d 6d 69 74 28 70 56 74 61 62  le.xCommit(pVtab
292c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
292d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
292e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
292f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29320 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
29330 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
29340 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29350 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29360 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29370 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
29380 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ack" /> method..
29390 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
293a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
293b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
293c0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
293d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
293e0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
293f0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29400 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
29410 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ack" /> method..
29420 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29430 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
29440 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
29450 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
29460 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29470 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
29480 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
29490 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f  llback" /> metho
294a0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
294b0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
294c0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
294d0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
294e0 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20  de xRollback(.. 
294f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
29500 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
29510 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
29520 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
29530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29540 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
29550 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
29560 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
29570 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
29580 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
29590 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
295a0 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
295b0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
295c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
295d0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
295e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
295f0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
29600 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
29610 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
29620 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29630 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
29640 65 2e 78 52 6f 6c 6c 62 61 63 6b 28 70 56 74 61  e.xRollback(pVta
29650 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
29660 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
29670 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
296c0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
296d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
296e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
296f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29700 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
29710 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  Function" /> met
29720 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29730 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29750 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
29760 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
29770 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29780 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29790 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
297a0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
297b0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
297c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
297d0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
297e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
297f0 22 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20 20 20  "nArg">..       
29800 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29810 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29820 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29830 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f  xFindFunction" /
29840 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
29850 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29860 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
29870 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
29880 3d 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ="zName">..     
29890 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
298a0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
298b0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
298c0 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
298d0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
298e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
298f0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
29900 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
29910 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a  me="callback">..
29920 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29930 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
29940 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
29950 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
29960 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
29970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29980 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
29990 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
299a0 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74  am name="pClient
299b0 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
299c0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
299d0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
299e0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
299f0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
29a00 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29a10 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
29a20 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
29a30 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
29a40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
29a50 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
29a60 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
29a70 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
29a80 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
29a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29aa0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
29ab0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
29ac0 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  int xFindFunctio
29ad0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
29ae0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
29af0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
29b00 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20     int nArg,..  
29b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
29b20 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20  tPtr zName,..   
29b30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
29b40 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
29b50 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  callback,..     
29b60 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
29b70 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
29b80 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  a..             
29b90 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
29ba0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
29bb0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29bc0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
29bd0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
29be0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
29bf0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
29c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29c10 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
29c20 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
29c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29c40 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
29c50 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
29c60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
29c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
29c80 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
29c90 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
29ca0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
29cb0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30          return 0
29cc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29cd0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
29ce0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
29cf0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
29d00 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
29d10 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62 2c            pVtab,
29d20 20 6e 41 72 67 2c 20 7a 4e 61 6d 65 2c 20 72 65   nArg, zName, re
29d30 66 20 63 61 6c 6c 62 61 63 6b 2c 20 72 65 66 20  f callback, ref 
29d40 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 20  pClientData);.. 
29d50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
29d60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
29d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
29db0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29dc0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
29dd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
29de0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29df0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29e00 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e  dule.xRename" />
29e10 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29e20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
29e30 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
29e40 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
29e50 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
29e60 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29e70 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
29e80 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
29e90 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d  le.xRename" /> m
29ea0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29eb0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
29ec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29ed0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a  / <param name="z
29ee0 4e 65 77 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  New">..         
29ef0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
29f00 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29f10 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
29f20 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
29f30 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29f40 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
29f50 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
29f60 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
29f70 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29f80 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29f90 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
29fa0 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  Rename" /> metho
29fb0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29fc0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
29fd0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
29fe0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
29ff0 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  de xRename(..   
2a000 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2a010 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
2a020 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2a030 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 20 20 20  tr zNew..       
2a040 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2a050 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2a060 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2a070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a080 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
2a090 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
2a0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a0b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2a0c0 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2a0d0 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
2a0e0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
2a0f0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2a100 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2a110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a120 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2a130 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
2a140 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
2a150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a160 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52  return module.xR
2a170 65 6e 61 6d 65 28 70 56 74 61 62 2c 20 7a 4e 65  ename(pVtab, zNe
2a180 77 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  w);..           
2a190 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2a1a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2a1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2a1f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2a200 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2a210 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2a220 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2a230 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
2a240 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
2a250 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a260 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2a270 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a280 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
2a290 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
2a2a0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2a2b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2a2c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76  ativeModule.xSav
2a2d0 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f  epoint" /> metho
2a2e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2a2f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2a300 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2a310 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65  aram name="iSave
2a320 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
2a330 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2a340 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2a350 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2a360 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d  xSavepoint" /> m
2a370 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2a380 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2a390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a3a0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2a3b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2a3c0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2a3d0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2a3e0 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20  ule.xSavepoint" 
2a3f0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2a400 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2a410 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2a420 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2a430 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65  eErrorCode xSave
2a440 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
2a450 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2a460 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
2a470 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
2a480 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  point..         
2a490 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2a4a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a4b0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2a4d0 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
2a4e0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
2a4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2a500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a510 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
2a520 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
2a530 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
2a540 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2a550 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2a560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2a570 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
2a580 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
2a590 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
2a5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2a5b0 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76  turn module.xSav
2a5c0 65 70 6f 69 6e 74 28 70 56 74 61 62 2c 20 69 53  epoint(pVtab, iS
2a5d0 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20  avepoint);..    
2a5e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2a5f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2a600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a640 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a650 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2a660 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2a670 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2a680 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2a690 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
2a6a0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2a6b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2a6c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2a6d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2a6e0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
2a6f0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2a700 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2a710 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2a720 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
2a730 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2a740 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2a750 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a760 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
2a770 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
2a780 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2a790 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2a7a0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2a7b0 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20  le.xRelease" /> 
2a7c0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2a7d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2a7e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a7f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2a800 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2a810 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2a820 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2a830 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f  dule.xRelease" /
2a840 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2a850 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2a860 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2a870 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2a880 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61  ErrorCode xRelea
2a890 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
2a8a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2a8b0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
2a8c0 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
2a8d0 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
2a8e0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2a8f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a900 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2a910 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2a920 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
2a930 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
2a940 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2a950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a960 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
2a970 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
2a980 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a990 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2a9a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2a9b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a9c0 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2a9d0 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2a9e0 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
2a9f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2aa00 6e 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  n module.xReleas
2aa10 65 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f  e(pVtab, iSavepo
2aa20 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  int);..         
2aa30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2aa40 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2aa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa80 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2aa90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2aaa0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2aab0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2aac0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2aad0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
2aae0 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74  llbackTo" /> met
2aaf0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2ab00 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2ab10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ab20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2ab30 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
2ab40 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2ab50 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2ab60 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2ab70 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d  RollbackTo" /> m
2ab80 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2ab90 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2aba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2abb0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
2abc0 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20  Savepoint">..   
2abd0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2abe0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2abf0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2ac00 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22  ule.xRollbackTo"
2ac10 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2ac20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2ac30 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2ac40 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2ac50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ac60 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2ac70 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2ac80 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
2ac90 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ckTo" /> method.
2aca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2acb0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2acc0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2acd0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2ace0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20   xRollbackTo(.. 
2acf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2ad00 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
2ad10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
2ad20 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
2ad30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2ad40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2ad50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad60 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2ad70 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
2ad80 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
2ad90 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
2ada0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2adb0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
2adc0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
2add0 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
2ade0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2adf0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2ae00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ae10 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2ae20 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
2ae30 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
2ae40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ae50 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2ae60 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 70  le.xRollbackTo(p
2ae70 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74  Vtab, iSavepoint
2ae80 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2ae90 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
2aea0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2aeb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2aec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
2af00 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
2af10 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
2af20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
2af30 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2af40 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2af50 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
2af60 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
2af70 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ance...         
2af80 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2af90 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2afa0 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
2afb0 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se()..          
2afc0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2afd0 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
2afe0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2aff0 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
2b000 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
2b010 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2b020 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
2b030 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2b040 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b090 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
2b0a0 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
2b0b0 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
2b0c0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2b0d0 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65  ate bool dispose
2b0e0 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
2b0f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2b100 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
2b110 68 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72  hrows an <see cr
2b120 65 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73  ef="ObjectDispos
2b130 65 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20  edException" /> 
2b140 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a  if this object..
2b150 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b160 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65  instance has bee
2b170 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  n disposed...   
2b180 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2b190 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b1a0 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69       private voi
2b1b0 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  d CheckDisposed(
2b1c0 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ) /* throw */.. 
2b1d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2b1e0 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f  f THROW_ON_DISPO
2b1f0 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  SED..           
2b200 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65       if (dispose
2b210 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
2b220 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b230 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
2b240 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f   new ObjectDispo
2b250 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  sedException(.. 
2b260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b270 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51         typeof(SQ
2b280 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2b290 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  ).Name);..      
2b2a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
2b2b0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2b2c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2b2d0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2b320 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2b330 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2b340 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
2b350 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
2b360 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ance...         
2b370 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2b380 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2b390 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2b3a0 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20  disposing">..   
2b3b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e           /// Non
2b3c0 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65  -zero if this me
2b3d0 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61  thod is being ca
2b3e0 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  lled from the.. 
2b3f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b400 73 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73  see cref="Dispos
2b410 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20  e()" /> method. 
2b420 20 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65   Zero if this me
2b430 74 68 6f 64 20 69 73 20 62 65 69 6e 67 0d 0a 20  thod is being.. 
2b440 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 63             /// c
2b450 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20 66  alled from the f
2b460 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20  inalizer...     
2b470 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2b480 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2b490 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74   private /* prot
2b4a0 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f  ected virtual */
2b4b0 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
2b4c0 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
2b4d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2b4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2b4f0 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
2b500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2b510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b520 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f       //if (dispo
2b530 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
2b540 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a             //{..
2b550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b560 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
2b570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2b590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b5a0 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73      //    // dis
2b5b0 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
2b5c0 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
2b5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b5e0 20 20 20 20 2f 2f 20 20 20 20 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 2f 0d 0a  //////////////..
2b610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b620 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20      //}....     
2b630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b660 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
2b670 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65             // re
2b680 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20  lease unmanaged 
2b690 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
2b6a0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2b6b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2b6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b6e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b6f0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2b700 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2b710 4e 4f 54 45 3a 20 54 68 65 20 6d 6f 64 75 6c 65  NOTE: The module
2b720 20 69 73 20 6e 6f 74 20 6f 77 6e 65 64 20 62 79   is not owned by
2b730 20 75 73 3b 20 74 68 65 72 65 66 6f 72 65 2c 20   us; therefore, 
2b740 64 6f 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20  do not..        
2b750 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2b760 20 20 20 20 20 64 69 73 70 6f 73 65 20 69 74 2e       dispose it.
2b770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b780 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2b790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2b7a0 20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c   (module != null
2b7b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2b7c0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2b7d0 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  e = null;....   
2b7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b7f0 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65   disposed = true
2b800 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2b810 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2b820 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2b830 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2b840 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2b890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
2b8a0 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72  egion Destructor
2b8b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b8c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2b8d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e           /// Fin
2b8e0 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65  alizes this obje
2b8f0 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2b900 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2b910 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2b920 20 20 20 20 20 20 7e 53 51 4c 69 74 65 4e 61 74        ~SQLiteNat
2b930 69 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20  iveModule()..   
2b940 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2b950 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
2b960 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
2b970 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2b980 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2b990 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
2b9a0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2b9b0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
2b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2ba10 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
2ba20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20  Constants..     
2ba30 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2ba40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2ba50 65 20 64 65 66 61 75 6c 74 20 76 65 72 73 69 6f  e default versio
2ba60 6e 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  n of the native 
2ba70 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73  sqlite3_module s
2ba80 74 72 75 63 74 75 72 65 20 69 6e 20 75 73 65 2e  tructure in use.
2ba90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2baa0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2bab0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2bac0 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 44 65   readonly int De
2bad0 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69  faultModuleVersi
2bae0 6f 6e 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20  on = 2;..       
2baf0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2bb00 20 20 20 20 20 20 20 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 2f  ////////////////
2bb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2bb50 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
2bb60 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
2bb70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2bb80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2bb90 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
2bba0 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
2bbb0 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
2bbc0 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  3_module structu
2bbd0 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
2bbe0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
2bbf0 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
2bc00 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
2bc10 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2bc20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55         private U
2bc30 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2bc40 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
2bc50 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d  e nativeModule;.
2bc60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2bc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bcb0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
2bcc0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2bcd0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69       /// This fi
2bce0 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73  eld is used to s
2bcf0 74 6f 72 65 20 74 68 65 20 64 65 73 74 72 75 63  tore the destruc
2bd00 74 6f 72 20 64 65 6c 65 67 61 74 65 20 74 6f 20  tor delegate to 
2bd10 62 65 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20  be passed to..  
2bd20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51        /// the SQ
2bd30 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2bd40 79 20 76 69 61 20 74 68 65 20 73 71 6c 69 74 65  y via the sqlite
2bd50 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
2bd60 62 6c 65 5f 6d 6f 64 75 6c 65 28 29 0d 0a 20 20  ble_module()..  
2bd70 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69        /// functi
2bd80 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
2bd90 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2bda0 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73       private Uns
2bdb0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2bdc0 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20  .xDestroyModule 
2bdd0 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65 3b 0d 0a  destroyModule;..
2bde0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2bdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be30 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2be40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2be50 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65      /// This fie
2be60 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74  ld is used to st
2be70 6f 72 65 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  ore a pointer to
2be80 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
2be90 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
2bea0 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
2beb0 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  e returned by th
2bec0 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
2bed0 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
2bee0 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
2bef0 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
2bf00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2bf10 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2bf20 74 65 20 49 6e 74 50 74 72 20 64 69 73 70 6f 73  te IntPtr dispos
2bf30 61 62 6c 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20  ableModule;.... 
2bf40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2bf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2bf90 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2bfa0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2bfb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2bfc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2bfd0 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69  /// This field i
2bfe0 73 20 75 73 65 64 20 74 6f 20 68 6f 6c 64 20 74  s used to hold t
2bff0 68 65 20 62 6c 6f 63 6b 20 6f 66 20 6e 61 74 69  he block of nati
2c000 76 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 63  ve memory that c
2c010 6f 6e 74 61 69 6e 73 0d 0a 20 20 20 20 20 20 20  ontains..       
2c020 20 2f 2f 2f 20 74 68 65 20 6e 61 74 69 76 65 20   /// the native 
2c030 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73  sqlite3_module s
2c040 74 72 75 63 74 75 72 65 20 61 73 73 6f 63 69 61  tructure associa
2c050 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 62  ted with this ob
2c060 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
2c070 2f 20 69 6e 73 74 61 6e 63 65 20 77 68 65 6e 20  / instance when 
2c080 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e  running on the .
2c090 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
2c0a0 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20  ework...        
2c0b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2c0c0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2c0d0 49 6e 74 50 74 72 20 70 4e 61 74 69 76 65 4d 6f  IntPtr pNativeMo
2c0e0 64 75 6c 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dule;..#endif...
2c0f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2c100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c140 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2c150 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c160 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
2c170 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
2c180 72 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  re the virtual t
2c190 61 62 6c 65 20 69 6e 73 74 61 6e 63 65 73 20 61  able instances a
2c1a0 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
2c1b0 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
2c1c0 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61   module.  The na
2c1d0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
2c1e0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
2c1f0 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20   derived..      
2c200 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
2c210 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69  is used to key i
2c220 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63 74  nto this collect
2c230 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
2c240 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2c250 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69        private Di
2c260 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c  ctionary<IntPtr,
2c270 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
2c280 62 6c 65 3e 20 74 61 62 6c 65 73 3b 0d 0a 0d 0a  ble> tables;....
2c290 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c2e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2c2f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2c300 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2c310 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2c320 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
2c330 62 6c 65 20 63 75 72 73 6f 72 20 69 6e 73 74 61  ble cursor insta
2c340 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nces..        //
2c350 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
2c360 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20  h this module.  
2c370 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
2c380 65 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  er to the..     
2c390 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76     /// sqlite3_v
2c3a0 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
2c3b0 65 64 20 73 74 72 75 63 74 75 72 65 20 69 73 20  ed structure is 
2c3c0 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f  used to key into
2c3d0 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
2c3e0 2f 2f 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a  // collection...
2c3f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2c400 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2c410 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61  private Dictiona
2c420 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74  ry<IntPtr, SQLit
2c430 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
2c440 73 6f 72 3e 20 63 75 72 73 6f 72 73 3b 0d 0a 0d  sor> cursors;...
2c450 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2c460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2c4b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c4c0 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
2c4d0 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
2c4e0 72 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  re the virtual t
2c4f0 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e  able function in
2c500 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20  stances..       
2c510 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
2c520 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65  with this module
2c530 2e 20 20 54 68 65 20 63 61 73 65 2d 69 6e 73 65  .  The case-inse
2c540 6e 73 69 74 69 76 65 20 66 75 6e 63 74 69 6f 6e  nsitive function
2c550 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f   name..        /
2c560 2f 2f 20 61 6e 64 20 74 68 65 20 6e 75 6d 62 65  // and the numbe
2c570 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 28  r of arguments (
2c580 77 69 74 68 20 2d 31 20 6d 65 61 6e 69 6e 67 20  with -1 meaning 
2c590 22 61 6e 79 22 29 20 61 72 65 20 75 73 65 64 20  "any") are used 
2c5a0 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
2c5b0 63 6f 6e 73 74 72 75 63 74 20 74 68 65 20 73 74  construct the st
2c5c0 72 69 6e 67 20 74 68 61 74 20 69 73 20 75 73 65  ring that is use
2c5d0 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68  d to key into th
2c5e0 69 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a  is collection...
2c5f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2c600 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2c610 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61  private Dictiona
2c620 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74  ry<string, SQLit
2c630 65 46 75 6e 63 74 69 6f 6e 3e 20 66 75 6e 63 74  eFunction> funct
2c640 69 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 23  ions;..        #
2c650 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2c660 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2c6b0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2c6c0 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
2c6d0 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
2c6e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2c6f0 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
2c700 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
2c710 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
2c720 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2c730 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2c740 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2c750 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  name">..        
2c760 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
2c770 74 68 65 20 6d 6f 64 75 6c 65 2e 20 20 54 68 69  the module.  Thi
2c780 73 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 6e  s parameter cann
2c790 6f 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ot be null...   
2c7a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2c7b0 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
2c7c0 63 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 28 73  c SQLiteModule(s
2c7d0 74 72 69 6e 67 20 6e 61 6d 65 29 0d 0a 20 20 20  tring name)..   
2c7e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c7f0 20 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20      if (name == 
2c800 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2c810 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
2c820 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63   ArgumentNullExc
2c830 65 70 74 69 6f 6e 28 22 6e 61 6d 65 22 29 3b 0d  eption("name");.
2c840 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
2c850 68 69 73 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b  his.name = name;
2c860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2c870 69 73 2e 74 61 62 6c 65 73 20 3d 20 6e 65 77 20  is.tables = new 
2c880 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74  Dictionary<IntPt
2c890 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  r, SQLiteVirtual
2c8a0 54 61 62 6c 65 3e 28 29 3b 0d 0a 20 20 20 20 20  Table>();..     
2c8b0 20 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 73         this.curs
2c8c0 6f 72 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f  ors = new Dictio
2c8d0 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c  nary<IntPtr, SQL
2c8e0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
2c8f0 75 72 73 6f 72 3e 28 29 3b 0d 0a 20 20 20 20 20  ursor>();..     
2c900 20 20 20 20 20 20 20 74 68 69 73 2e 66 75 6e 63         this.func
2c910 74 69 6f 6e 73 20 3d 20 6e 65 77 20 44 69 63 74  tions = new Dict
2c920 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53  ionary<string, S
2c930 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e 28 29  QLiteFunction>()
2c940 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2c950 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2c960 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c9b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2c9c0 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
2c9d0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
2c9e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2c9f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c          /// Call
2ca00 73 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  s the native SQL
2ca10 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
2ca20 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 72 65   in order to cre
2ca30 61 74 65 20 61 20 6e 65 77 0d 0a 20 20 20 20 20  ate a new..     
2ca40 20 20 20 2f 2f 2f 20 64 69 73 70 6f 73 61 62 6c     /// disposabl
2ca50 65 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e  e module contain
2ca60 69 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  ing the implemen
2ca70 74 61 74 69 6f 6e 20 6f 66 20 61 20 76 69 72 74  tation of a virt
2ca80 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
2ca90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2caa0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2cab0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62  <param name="pDb
2cac0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2cad0 54 68 65 20 6e 61 74 69 76 65 20 64 61 74 61 62  The native datab
2cae0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70  ase connection p
2caf0 6f 69 6e 74 65 72 20 74 6f 20 75 73 65 2e 0d 0a  ointer to use...
2cb00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2cb10 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2cb20 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2cb30 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
2cb40 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
2cb50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
2cb60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2cb70 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 43   internal bool C
2cb80 72 65 61 74 65 44 69 73 70 6f 73 61 62 6c 65 4d  reateDisposableM
2cb90 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  odule(..        
2cba0 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 0d 0a      IntPtr pDb..
2cbb0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2cbc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2cbd0 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73        if (dispos
2cbe0 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e  ableModule != In
2cbf0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2cc00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2cc10 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20  rn true;....    
2cc20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2cc30 4e 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  Name = IntPtr.Ze
2cc40 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
2cc50 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2cc60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2cc70 20 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20 53         pName = S
2cc80 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38  QLiteString.Utf8
2cc90 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
2cca0 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  (name);....     
2ccb0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
2ccc0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
2ccd0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61  qlite3_module na
2cce0 74 69 76 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20  tiveModule =..  
2ccf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd00 20 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65    AllocateNative
2cd10 4d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20  Module();....   
2cd20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73               des
2cd30 74 72 6f 79 4d 6f 64 75 6c 65 20 3d 20 6e 65 77  troyModule = new
2cd40 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2cd50 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 4d 6f 64  hods.xDestroyMod
2cd60 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ule(..          
2cd70 20 20 20 20 20 20 20 20 20 20 78 44 65 73 74 72            xDestr
2cd80 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 23 69  oyModule);....#i
2cd90 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2cda0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2cdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
2cdc0 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d  sposableModule =
2cdd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cde0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
2cdf0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2ce00 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
2ce10 62 6c 65 5f 6d 6f 64 75 6c 65 28 0d 0a 20 20 20  ble_module(..   
2ce20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce30 20 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c       pDb, pName,
2ce40 20 72 65 66 20 6e 61 74 69 76 65 4d 6f 64 75 6c   ref nativeModul
2ce50 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20  e, IntPtr.Zero, 
2ce60 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d  destroyModule);.
2ce70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ce80 20 20 20 72 65 74 75 72 6e 20 28 64 69 73 70 6f     return (dispo
2ce90 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49  sableModule != I
2cea0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65  ntPtr.Zero);..#e
2ceb0 6c 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  lif !SQLITE_STAN
2cec0 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
2ced0 20 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65        disposable
2cee0 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20  Module =..      
2cef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
2cf00 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2cf10 73 2e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  s.sqlite3_create
2cf20 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
2cf30 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  le_interop(..   
2cf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf50 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20      pDb, pName, 
2cf60 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f  AllocateNativeMo
2cf70 64 75 6c 65 49 6e 74 65 72 6f 70 28 29 2c 0d 0a  duleInterop(),..
2cf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf90 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2cfa0 75 6c 65 2e 69 56 65 72 73 69 6f 6e 2c 20 6e 61  ule.iVersion, na
2cfb0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
2cfc0 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te,..           
2cfd0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2cfe0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
2cff0 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  t, nativeModule.
2d000 78 42 65 73 74 49 6e 64 65 78 2c 0d 0a 20 20 20  xBestIndex,..   
2d010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d020 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2d030 2e 78 44 69 73 63 6f 6e 6e 65 63 74 2c 20 6e 61  .xDisconnect, na
2d040 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
2d050 72 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  roy,..          
2d060 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2d070 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 2c  iveModule.xOpen,
2d080 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2d090 6c 6f 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  lose,..         
2d0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2d0b0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2d0c0 65 72 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  er, nativeModule
2d0d0 2e 78 4e 65 78 74 2c 0d 0a 20 20 20 20 20 20 20  .xNext,..       
2d0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d0f0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f  nativeModule.xEo
2d100 66 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  f, nativeModule.
2d110 78 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20  xColumn,..      
2d120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d130 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2d140 6f 77 49 64 2c 20 6e 61 74 69 76 65 4d 6f 64 75  owId, nativeModu
2d150 6c 65 2e 78 55 70 64 61 74 65 2c 0d 0a 20 20 20  le.xUpdate,..   
2d160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d170 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2d180 2e 78 42 65 67 69 6e 2c 20 6e 61 74 69 76 65 4d  .xBegin, nativeM
2d190 6f 64 75 6c 65 2e 78 53 79 6e 63 2c 0d 0a 20 20  odule.xSync,..  
2d1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d1b0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2d1c0 65 2e 78 43 6f 6d 6d 69 74 2c 20 6e 61 74 69 76  e.xCommit, nativ
2d1d0 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2d1e0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
2d1f0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2d200 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
2d210 63 74 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64  ction, nativeMod
2d220 75 6c 65 2e 78 52 65 6e 61 6d 65 2c 0d 0a 20 20  ule.xRename,..  
2d230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d240 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2d250 65 2e 78 53 61 76 65 70 6f 69 6e 74 2c 20 6e 61  e.xSavepoint, na
2d260 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
2d270 61 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ase,..          
2d280 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2d290 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
2d2a0 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 2e 5a 65  ackTo, IntPtr.Ze
2d2b0 72 6f 2c 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c  ro, destroyModul
2d2c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2d2d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64         return (d
2d2e0 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20  isposableModule 
2d2f0 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  != IntPtr.Zero);
2d300 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
2d310 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
2d320 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
2d330 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23  dException();..#
2d340 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2d350 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2d360 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
2d370 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d380 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e            if (pN
2d390 61 6d 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ame != IntPtr.Ze
2d3a0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2d3b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d3c0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2d3d0 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e  teMemory.Free(pN
2d3e0 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
2d3f0 20 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65             pName
2d400 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
2d410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d420 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2d430 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
2d440 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2d450 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2d460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2d4b0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
2d4c0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2d4d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2d4e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
2d4f0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
2d500 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
2d510 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e  ore library when
2d520 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
2d530 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20       /// module 
2d540 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
2d550 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
2d560 61 6e 63 65 20 69 73 20 62 65 69 6e 67 20 64 65  ance is being de
2d570 73 74 72 6f 79 65 64 20 64 75 65 0d 0a 20 20 20  stroyed due..   
2d580 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 74 73 20       /// to its 
2d590 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  parent connectio
2d5a0 6e 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20  n being closed. 
2d5b0 20 49 74 20 6d 61 79 20 61 6c 73 6f 20 62 65 20   It may also be 
2d5c0 63 61 6c 6c 65 64 20 62 79 0d 0a 20 20 20 20 20  called by..     
2d5d0 20 20 20 2f 2f 2f 20 74 68 65 20 22 76 74 73 68     /// the "vtsh
2d5e0 69 6d 22 20 6d 6f 64 75 6c 65 20 69 66 2f 77 68  im" module if/wh
2d5f0 65 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64  en the sqlite3_d
2d600 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20  ispose_module() 
2d610 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20  function..      
2d620 20 20 2f 2f 2f 20 69 73 20 63 61 6c 6c 65 64 2e    /// is called.
2d630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2d640 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2d650 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2d660 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e  e="pClientData">
2d670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2d680 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61  e native user-da
2d690 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63  ta pointer assoc
2d6a0 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
2d6b0 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61  module, as it wa
2d6c0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  s..        /// p
2d6d0 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53  rovided to the S
2d6e0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
2d6f0 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69  ry when the nati
2d700 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e  ve module instan
2d710 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
2d720 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20  was created...  
2d730 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2d740 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
2d750 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f  ate void xDestro
2d760 79 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  yModule(..      
2d770 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c        IntPtr pCl
2d780 69 65 6e 74 44 61 74 61 20 2f 2a 20 4e 4f 54 20  ientData /* NOT 
2d790 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
2d7a0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2d7b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
2d7c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
2d7d0 2f 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20  / NOTE: At this 
2d7e0 70 6f 69 6e 74 2c 20 6a 75 73 74 20 6d 61 6b 65  point, just make
2d7f0 20 73 75 72 65 20 74 68 61 74 20 74 68 69 73 20   sure that this 
2d800 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 0d 0a 20  native module.. 
2d810 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2d820 20 20 20 20 68 61 6e 64 6c 65 20 69 73 20 6e 6f      handle is no
2d830 74 20 72 65 75 73 65 64 2c 20 6e 6f 72 20 70 61  t reused, nor pa
2d840 73 73 65 64 20 69 6e 74 6f 20 74 68 65 20 6e 61  ssed into the na
2d850 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
2d860 20 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74    //       sqlit
2d870 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c  e3_dispose_modul
2d880 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 6c 61 74  e() function lat
2d890 65 72 20 28 69 2e 65 2e 20 69 66 2f 77 68 65 6e  er (i.e. if/when
2d8a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d8b0 20 20 20 20 20 20 20 74 68 65 20 44 69 73 70 6f         the Dispo
2d8c0 73 65 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 74  se() method of t
2d8d0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
2d8e0 6e 63 65 20 69 73 20 63 61 6c 6c 65 64 29 2e 0d  nce is called)..
2d8f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
2d900 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73  .            dis
2d910 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 20  posableModule = 
2d920 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
2d930 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2d940 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2d950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2d990 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2d9a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2d9b0 20 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74   Creates and ret
2d9c0 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20  urns the native 
2d9d0 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74  sqlite_module st
2d9e0 72 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68  ructure using th
2d9f0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
2da00 6f 6e 66 69 67 75 72 65 64 20 28 6f 72 20 64 65  onfigured (or de
2da10 66 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66  fault) <see cref
2da20 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2da30 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20  odule" />..     
2da40 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65     /// interface
2da50 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
2da60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2da70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2da80 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2da90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2daa0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d   native sqlite_m
2dab0 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
2dac0 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 66 69 67  using the config
2dad0 75 72 65 64 20 28 6f 72 0d 0a 20 20 20 20 20 20  ured (or..      
2dae0 20 20 2f 2f 2f 20 64 65 66 61 75 6c 74 29 20 3c    /// default) <
2daf0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2db00 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
2db10 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20  > interface..   
2db20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
2db30 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
2db40 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2db50 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2db60 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e UnsafeNativeMe
2db70 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2db80 64 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74  dule AllocateNat
2db90 69 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20  iveModule()..   
2dba0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2dbb0 20 20 20 20 72 65 74 75 72 6e 20 41 6c 6c 6f 63      return Alloc
2dbc0 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28  ateNativeModule(
2dbd0 47 65 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49  GetNativeModuleI
2dbe0 6d 70 6c 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  mpl());..       
2dbf0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2dc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc40 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
2dc50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2dc60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2dc70 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2dc80 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74         /// Creat
2dc90 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61  es and returns a
2dca0 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 6f 62   memory block ob
2dcb0 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20  tained from the 
2dcc0 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20  SQLite core..   
2dcd0 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
2dce0 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
2dcf0 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
2dd00 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  3_module structu
2dd10 72 65 20 66 6f 72 20 74 68 69 73 0d 0a 20 20 20  re for this..   
2dd20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20       /// object 
2dd30 69 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72 75  instance when ru
2dd40 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45  nning on the .NE
2dd50 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
2dd60 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ork...        //
2dd70 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2dd80 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2dd90 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
2dda0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
2ddb0 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76  ter to the nativ
2ddc0 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
2ddd0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
2dde0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2ddf0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
2de00 76 61 74 65 20 49 6e 74 50 74 72 20 41 6c 6c 6f  vate IntPtr Allo
2de10 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  cateNativeModule
2de20 49 6e 74 65 72 6f 70 28 29 0d 0a 20 20 20 20 20  Interop()..     
2de30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2de40 20 20 69 66 20 28 70 4e 61 74 69 76 65 4d 6f 64    if (pNativeMod
2de50 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ule == IntPtr.Ze
2de60 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2de70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2de80 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2de90 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a          // HACK:
2dea0 20 4e 6f 20 65 61 73 79 20 77 61 79 20 74 6f 20   No easy way to 
2deb0 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69  determine the si
2dec0 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  ze of the native
2ded0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dee0 20 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74    //       sqlit
2def0 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  e_module structu
2df00 72 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20  re when running 
2df10 6f 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20  on the .NET..   
2df20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2df30 20 20 20 20 20 20 43 6f 6d 70 61 63 74 20 46 72        Compact Fr
2df40 61 6d 65 77 6f 72 6b 3b 20 74 68 65 72 65 66 6f  amework; therefo
2df50 72 65 2c 20 6a 75 73 74 20 62 61 73 65 20 74 68  re, just base th
2df60 65 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20  e size..        
2df70 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2df80 20 6f 6e 20 77 68 61 74 20 77 65 20 6b 6e 6f 77   on what we know
2df90 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
2dfa0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2dfb0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2dfc0 54 68 65 72 65 20 69 73 20 6f 6e 65 20 69 6e 74  There is one int
2dfd0 65 67 65 72 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  eger member...  
2dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2dff0 20 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65         There are
2e000 20 32 32 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69   22 function poi
2e010 6e 74 65 72 20 6d 65 6d 62 65 72 73 2e 0d 0a 20  nter members... 
2e020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2e030 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2e040 20 20 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65     pNativeModule
2e050 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e   = SQLiteMemory.
2e060 41 6c 6c 6f 63 61 74 65 28 32 33 20 2a 20 49 6e  Allocate(23 * In
2e070 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
2e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2e090 66 20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65  f (pNativeModule
2e0a0 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
2e0b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e0c0 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2e0d0 4f 75 74 4f 66 4d 65 6d 6f 72 79 45 78 63 65 70  OutOfMemoryExcep
2e0e0 74 69 6f 6e 28 22 73 71 6c 69 74 65 33 5f 6d 6f  tion("sqlite3_mo
2e0f0 64 75 6c 65 22 29 3b 0d 0a 20 20 20 20 20 20 20  dule");..       
2e100 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2e110 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 4e 61        return pNa
2e120 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20  tiveModule;..   
2e130 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2e140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2e150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e190 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2e1a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2e1b0 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
2e1c0 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
2e1d0 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f  native sqlite_mo
2e1e0 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75  dule structure u
2e1f0 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
2e200 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20    /// specified 
2e210 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2e220 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
2e230 2f 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20  /> interface..  
2e240 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d        /// implem
2e250 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  entation...     
2e260 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2e270 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2e280 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
2e290 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
2e2a0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
2e2b0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2e2c0 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61  dule" /> interfa
2e2d0 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ce implementatio
2e2e0 6e 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n to..        //
2e2f0 2f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  / use...        
2e300 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2e310 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2e320 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
2e330 20 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   The native sqli
2e340 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  te_module struct
2e350 75 72 65 20 75 73 69 6e 67 20 74 68 65 20 73 70  ure using the sp
2e360 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20  ecified..       
2e370 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
2e380 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2e390 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
2e3a0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
2e3b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2e3c0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2e3d0 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66     private Unsaf
2e3e0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
2e3f0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c  qlite3_module Al
2e400 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75  locateNativeModu
2e410 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2e420 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
2e430 64 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20  dule module..   
2e440 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2e450 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e460 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20     nativeModule 
2e470 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e480 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2e490 33 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 20 20 20  3_module();..   
2e4a0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2e4b0 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d  odule.iVersion =
2e4c0 20 44 65 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65   DefaultModuleVe
2e4d0 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  rsion;....      
2e4e0 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2e4f0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2e500 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2e510 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e520 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d  Module.xCreate =
2e530 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2e540 65 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65  eMethods.xCreate
2e550 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e560 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 72        module.xCr
2e570 65 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  eate);....      
2e580 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e590 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20  Module.xConnect 
2e5a0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e5b0 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65  veMethods.xConne
2e5c0 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
2e5d0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2e5e0 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  xConnect);....  
2e5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e600 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74  tiveModule.xBest
2e610 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61  Index = new Unsa
2e620 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e630 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20  xBestIndex(..   
2e640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e650 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64   module.xBestInd
2e660 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ex);....        
2e670 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e680 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
2e690 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2e6a0 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63  iveMethods.xDisc
2e6b0 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
2e6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2e6d0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 29  ule.xDisconnect)
2e6e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e6f0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e700 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77  e.xDestroy = new
2e710 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e720 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a  hods.xDestroy(..
2e730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e740 20 20 20 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74      module.xDest
2e750 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  roy);....       
2e760 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2e770 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65  odule.xOpen = ne
2e780 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e790 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20  thods.xOpen(..  
2e7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e7b0 20 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 29 3b    module.xOpen);
2e7c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e7d0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e7e0 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e  .xClose = new Un
2e7f0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e800 73 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20  s.xClose(..     
2e810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2e820 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 29 3b 0d 0a  odule.xClose);..
2e830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e840 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2e850 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73  Filter = new Uns
2e860 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e870 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20  .xFilter(..     
2e880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2e890 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 29 3b 0d  odule.xFilter);.
2e8a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e8b0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2e8c0 78 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61  xNext = new Unsa
2e8d0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e8e0 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
2e8f0 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2e900 6c 65 2e 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20  le.xNext);....  
2e910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e920 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20  tiveModule.xEof 
2e930 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e940 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 6d  veMethods.xEof(m
2e950 6f 64 75 6c 65 2e 78 45 6f 66 29 3b 0d 0a 0d 0a  odule.xEof);....
2e960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e970 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
2e980 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  lumn = new Unsaf
2e990 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2e9a0 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
2e9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2e9c0 75 6c 65 2e 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d  ule.xColumn);...
2e9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e9e0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2e9f0 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66  owId = new Unsaf
2ea00 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2ea10 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20  RowId(..        
2ea20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2ea30 6c 65 2e 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20  le.xRowId);.... 
2ea40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2ea50 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64  ativeModule.xUpd
2ea60 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ate = new Unsafe
2ea70 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55  NativeMethods.xU
2ea80 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
2ea90 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2eaa0 6c 65 2e 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a  le.xUpdate);....
2eab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eac0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  nativeModule.xBe
2ead0 67 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  gin = new Unsafe
2eae0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42  NativeMethods.xB
2eaf0 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  egin(..         
2eb00 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2eb10 65 2e 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20  e.xBegin);....  
2eb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2eb30 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63  tiveModule.xSync
2eb40 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2eb50 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63  iveMethods.xSync
2eb60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2eb70 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53         module.xS
2eb80 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ync);....       
2eb90 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2eba0 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20  odule.xCommit = 
2ebb0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2ebc0 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28  Methods.xCommit(
2ebd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ebe0 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f        module.xCo
2ebf0 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mmit);....      
2ec00 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2ec10 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2ec20 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2ec30 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c  iveMethods.xRoll
2ec40 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
2ec50 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2ec60 65 2e 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d  e.xRollback);...
2ec70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ec80 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
2ec90 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65  indFunction = ne
2eca0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2ecb0 74 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74  thods.xFindFunct
2ecc0 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
2ecd0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2ece0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b  .xFindFunction);
2ecf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ed00 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2ed10 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55  .xRename = new U
2ed20 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2ed30 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  ds.xRename(..   
2ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed50 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 29   module.xRename)
2ed60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ed70 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2ed80 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e  e.xSavepoint = n
2ed90 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2eda0 65 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e  ethods.xSavepoin
2edb0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2edc0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2edd0 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20  Savepoint);.... 
2ede0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2edf0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c  ativeModule.xRel
2ee00 65 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  ease = new Unsaf
2ee10 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2ee20 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20  Release(..      
2ee30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2ee40 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 29 3b 0d  dule.xRelease);.
2ee50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ee60 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2ee70 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65  xRollbackTo = ne
2ee80 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2ee90 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54  thods.xRollbackT
2eea0 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o(..            
2eeb0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2eec0 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20  RollbackTo);..  
2eed0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2eee0 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
2eef0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2ef00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2ef10 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
2ef20 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  te = new UnsafeN
2ef30 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72  ativeMethods.xCr
2ef40 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  eate(..         
2ef50 20 20 20 20 20 20 20 20 20 20 20 78 43 72 65 61             xCrea
2ef60 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  te);....        
2ef70 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2ef80 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20  dule.xConnect = 
2ef90 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2efa0 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74  Methods.xConnect
2efb0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2efc0 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 29         xConnect)
2efd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2efe0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2eff0 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e  e.xBestIndex = n
2f000 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f010 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65  ethods.xBestInde
2f020 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x(..            
2f030 20 20 20 20 20 20 20 20 78 42 65 73 74 49 6e 64          xBestInd
2f040 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ex);....        
2f050 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2f060 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
2f070 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2f080 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63  iveMethods.xDisc
2f090 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
2f0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69               xDi
2f0b0 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  sconnect);....  
2f0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2f0d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
2f0e0 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  roy = new Unsafe
2f0f0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
2f100 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
2f110 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 65               xDe
2f120 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  stroy);....     
2f130 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2f140 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20  eModule.xOpen = 
2f150 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2f160 4d 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 78 4f  Methods.xOpen(xO
2f170 70 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  pen);..         
2f180 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2f190 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77  ule.xClose = new
2f1a0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f1b0 68 6f 64 73 2e 78 43 6c 6f 73 65 28 78 43 6c 6f  hods.xClose(xClo
2f1c0 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
2f1d0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2f1e0 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e  dule.xFilter = n
2f1f0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f200 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d  ethods.xFilter(.
2f210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f220 20 20 20 20 20 78 46 69 6c 74 65 72 29 3b 0d 0a       xFilter);..
2f230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f240 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2f250 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  Next = new Unsaf
2f260 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2f270 4e 65 78 74 28 78 4e 65 78 74 29 3b 0d 0a 20 20  Next(xNext);..  
2f280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2f290 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20  tiveModule.xEof 
2f2a0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f2b0 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 78  veMethods.xEof(x
2f2c0 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Eof);....       
2f2d0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2f2e0 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20  odule.xColumn = 
2f2f0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2f300 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28  Methods.xColumn(
2f310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f320 20 20 20 20 20 20 78 43 6f 6c 75 6d 6e 29 3b 0d        xColumn);.
2f330 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2f340 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2f350 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73  xRowId = new Uns
2f360 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2f370 2e 78 52 6f 77 49 64 28 78 52 6f 77 49 64 29 3b  .xRowId(xRowId);
2f380 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f390 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2f3a0 2e 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55  .xUpdate = new U
2f3b0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2f3c0 64 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20  ds.xUpdate(..   
2f3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f3e0 20 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20   xUpdate);....  
2f3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2f400 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69  tiveModule.xBegi
2f410 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  n = new UnsafeNa
2f420 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67  tiveMethods.xBeg
2f430 69 6e 28 78 42 65 67 69 6e 29 3b 0d 0a 20 20 20  in(xBegin);..   
2f440 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2f450 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20  iveModule.xSync 
2f460 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f470 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28  veMethods.xSync(
2f480 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20  xSync);....     
2f490 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2f4a0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20  eModule.xCommit 
2f4b0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f4c0 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69  veMethods.xCommi
2f4d0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2f4e0 20 20 20 20 20 20 20 20 78 43 6f 6d 6d 69 74 29          xCommit)
2f4f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f500 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2f510 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65  e.xRollback = ne
2f520 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2f530 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28  thods.xRollback(
2f540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f550 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 29        xRollback)
2f560 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f570 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2f580 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20  e.xFindFunction 
2f590 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f5a0 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46  veMethods.xFindF
2f5b0 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
2f5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46                xF
2f5d0 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d  indFunction);...
2f5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f5f0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2f600 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61  ename = new Unsa
2f610 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f620 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20  xRename(..      
2f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52                xR
2f640 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  ename);....     
2f650 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2f660 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
2f670 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  nt = new UnsafeN
2f680 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61  ativeMethods.xSa
2f690 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
2f6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 53                xS
2f6b0 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20  avepoint);....  
2f6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2f6d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
2f6e0 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ase = new Unsafe
2f6f0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2f700 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
2f710 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65               xRe
2f720 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  lease);....     
2f730 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2f740 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2f750 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  kTo = new Unsafe
2f760 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2f770 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
2f780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f790 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20  xRollbackTo);.. 
2f7a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2f7b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f7c0 72 6e 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b  rn nativeModule;
2f7d0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2f7e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2f7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2f830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2f840 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2f850 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 20 63   /// Creates a c
2f860 6f 70 79 20 6f 66 20 74 68 65 20 73 70 65 63 69  opy of the speci
2f870 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fied..        //
2f880 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73  / <see cref="Uns
2f890 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2f8a0 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22  .sqlite3_module"
2f8b0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
2f8c0 6e 63 65 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce,..        //
2f8d0 2f 20 75 73 69 6e 67 20 64 65 66 61 75 6c 74 20  / using default 
2f8e0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
2f8f0 66 6f 72 20 74 68 65 20 63 6f 6e 74 61 69 6e 65  for the containe
2f900 64 20 64 65 6c 65 67 61 74 65 73 20 77 68 65 6e  d delegates when
2f910 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65  ..        /// ne
2f920 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20  cessary...      
2f930 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2f940 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2f950 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
2f960 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
2f970 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
2f980 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2f990 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
2f9a0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  le" /> object.. 
2f9b0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
2f9c0 6e 63 65 20 74 6f 20 63 6f 70 79 2e 0d 0a 20 20  nce to copy...  
2f9d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2f9e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
2f9f0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2fa00 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c     /// The new <
2fa10 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65  see cref="Unsafe
2fa20 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2fa30 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e  lite3_module" />
2fa40 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
2fa50 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a   /// instance...
2fa60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2fa70 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2fa80 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61  private UnsafeNa
2fa90 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
2faa0 74 65 33 5f 6d 6f 64 75 6c 65 20 43 6f 70 79 4e  te3_module CopyN
2fab0 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20  ativeModule(..  
2fac0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2fad0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2fae0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64  lite3_module mod
2faf0 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ule..           
2fb00 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
2fb10 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
2fb20 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
2fb30 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 65  qlite3_module ne
2fb40 77 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20  wModule =..     
2fb50 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55             new U
2fb60 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2fb70 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
2fb80 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
2fb90 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 69 56      newModule.iV
2fba0 65 72 73 69 6f 6e 20 3d 20 6d 6f 64 75 6c 65 2e  ersion = module.
2fbb0 69 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20  iVersion;....   
2fbc0 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
2fbd0 6c 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77  le.xCreate = new
2fbe0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2fbf0 68 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20  hods.xCreate(.. 
2fc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2fc10 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 21  module.xCreate !
2fc20 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2fc30 2e 78 43 72 65 61 74 65 20 3a 20 78 43 72 65 61  .xCreate : xCrea
2fc40 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  te);....        
2fc50 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43      newModule.xC
2fc60 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
2fc70 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2fc80 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  .xConnect(..    
2fc90 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2fca0 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 21 3d 20  ule.xConnect != 
2fcb0 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2fcc0 43 6f 6e 6e 65 63 74 20 3a 20 78 43 6f 6e 6e 65  Connect : xConne
2fcd0 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ct);....        
2fce0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 42      newModule.xB
2fcf0 65 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55  estIndex = new U
2fd00 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2fd10 64 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  ds.xBestIndex(..
2fd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd30 28 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  (module.xBestInd
2fd40 65 78 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  ex != null) ? mo
2fd50 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20  dule.xBestIndex 
2fd60 3a 20 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a  : xBestIndex);..
2fd70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2fd80 77 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  wModule.xDisconn
2fd90 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ect = new Unsafe
2fda0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
2fdb0 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  isconnect(..    
2fdc0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2fdd0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
2fde0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
2fdf0 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3a 0d  e.xDisconnect :.
2fe00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fe10 20 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a   xDisconnect);..
2fe20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2fe30 77 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  wModule.xDestroy
2fe40 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2fe50 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74  iveMethods.xDest
2fe60 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  roy(..          
2fe70 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44        (module.xD
2fe80 65 73 74 72 6f 79 20 21 3d 20 6e 75 6c 6c 29 20  estroy != null) 
2fe90 3f 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f  ? module.xDestro
2fea0 79 20 3a 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a  y : xDestroy);..
2feb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2fec0 77 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20  wModule.xOpen = 
2fed0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2fee0 4d 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a  Methods.xOpen(..
2fef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff00 28 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 21 3d  (module.xOpen !=
2ff10 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2ff20 78 4f 70 65 6e 20 3a 20 78 4f 70 65 6e 29 3b 0d  xOpen : xOpen);.
2ff30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2ff40 65 77 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20  ewModule.xClose 
2ff50 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2ff60 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65  veMethods.xClose
2ff70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2ff80 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73     (module.xClos
2ff90 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  e != null) ? mod
2ffa0 75 6c 65 2e 78 43 6c 6f 73 65 20 3a 20 78 43 6c  ule.xClose : xCl
2ffb0 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ose);....       
2ffc0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2ffd0 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73  Filter = new Uns
2ffe0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2fff0 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20  .xFilter(..     
30000 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
30010 6c 65 2e 78 46 69 6c 74 65 72 20 21 3d 20 6e 75  le.xFilter != nu
30020 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69  ll) ? module.xFi
30030 6c 74 65 72 20 3a 20 78 46 69 6c 74 65 72 29 3b  lter : xFilter);
30040 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30050 6e 65 77 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20  newModule.xNext 
30060 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
30070 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28  veMethods.xNext(
30080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30090 20 20 28 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20    (module.xNext 
300a0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
300b0 65 2e 78 4e 65 78 74 20 3a 20 78 4e 65 78 74 29  e.xNext : xNext)
300c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
300d0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 45 6f 66 20   newModule.xEof 
300e0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
300f0 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 0d  veMethods.xEof(.
30100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30110 20 28 6d 6f 64 75 6c 65 2e 78 45 6f 66 20 21 3d   (module.xEof !=
30120 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
30130 78 45 6f 66 20 3a 20 78 45 6f 66 29 3b 0d 0a 0d  xEof : xEof);...
30140 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
30150 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d  Module.xColumn =
30160 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30170 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e  eMethods.xColumn
30180 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
30190 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75     (module.xColu
301a0 6d 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  mn != null) ? mo
301b0 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3a 20 78  dule.xColumn : x
301c0 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20  Column);....    
301d0 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
301e0 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55  e.xRowId = new U
301f0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
30200 64 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20 20 20  ds.xRowId(..    
30210 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
30220 75 6c 65 2e 78 52 6f 77 49 64 20 21 3d 20 6e 75  ule.xRowId != nu
30230 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f  ll) ? module.xRo
30240 77 49 64 20 3a 20 78 52 6f 77 49 64 29 3b 0d 0a  wId : xRowId);..
30250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
30260 77 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20  wModule.xUpdate 
30270 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
30280 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74  veMethods.xUpdat
30290 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
302a0 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 55 70 64      (module.xUpd
302b0 61 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ate != null) ? m
302c0 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3a 20  odule.xUpdate : 
302d0 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xUpdate);....   
302e0 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
302f0 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20  le.xBegin = new 
30300 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
30310 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20  ods.xBegin(..   
30320 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
30330 64 75 6c 65 2e 78 42 65 67 69 6e 20 21 3d 20 6e  dule.xBegin != n
30340 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42  ull) ? module.xB
30350 65 67 69 6e 20 3a 20 78 42 65 67 69 6e 29 3b 0d  egin : xBegin);.
30360 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
30370 65 77 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d  ewModule.xSync =
30380 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30390 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d  eMethods.xSync(.
303a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
303b0 20 28 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 21   (module.xSync !
303c0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
303d0 2e 78 53 79 6e 63 20 3a 20 78 53 79 6e 63 29 3b  .xSync : xSync);
303e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
303f0 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  newModule.xCommi
30400 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
30410 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d  tiveMethods.xCom
30420 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mit(..          
30430 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43        (module.xC
30440 6f 6d 6d 69 74 20 21 3d 20 6e 75 6c 6c 29 20 3f  ommit != null) ?
30450 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20   module.xCommit 
30460 3a 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20  : xCommit);.... 
30470 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
30480 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d  dule.xRollback =
30490 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
304a0 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61  eMethods.xRollba
304b0 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck(..           
304c0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f       (module.xRo
304d0 6c 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20  llback != null) 
304e0 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  ? module.xRollba
304f0 63 6b 20 3a 20 78 52 6f 6c 6c 62 61 63 6b 29 3b  ck : xRollback);
30500 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30510 6e 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  newModule.xFindF
30520 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e  unction = new Un
30530 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
30540 73 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  s.xFindFunction(
30550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30560 20 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46    (module.xFindF
30570 75 6e 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  unction != null)
30580 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46   ? module.xFindF
30590 75 6e 63 74 69 6f 6e 20 3a 0d 0a 20 20 20 20 20  unction :..     
305a0 20 20 20 20 20 20 20 20 20 20 20 78 46 69 6e 64             xFind
305b0 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20  Function);....  
305c0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
305d0 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65  ule.xRename = ne
305e0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
305f0 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a  thods.xRename(..
30600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30610 28 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20  (module.xRename 
30620 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
30630 65 2e 78 52 65 6e 61 6d 65 20 3a 20 78 52 65 6e  e.xRename : xRen
30640 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
30650 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
30660 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20  Savepoint = new 
30670 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
30680 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d  ods.xSavepoint(.
30690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
306a0 20 28 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f   (module.xSavepo
306b0 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  int != null) ? m
306c0 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
306d0 20 3a 20 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d   : xSavepoint);.
306e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
306f0 65 77 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  ewModule.xReleas
30700 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
30710 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c  tiveMethods.xRel
30720 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ease(..         
30730 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
30740 52 65 6c 65 61 73 65 20 21 3d 20 6e 75 6c 6c 29  Release != null)
30750 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61   ? module.xRelea
30760 73 65 20 3a 20 78 52 65 6c 65 61 73 65 29 3b 0d  se : xRelease);.
30770 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
30780 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  ewModule.xRollba
30790 63 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66  ckTo = new Unsaf
307a0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
307b0 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20  RollbackTo(..   
307c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
307d0 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
307e0 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
307f0 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3a  le.xRollbackTo :
30800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30810 20 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d    xRollbackTo);.
30820 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
30830 65 74 75 72 6e 20 6e 65 77 4d 6f 64 75 6c 65 3b  eturn newModule;
30840 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
30850 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
308a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
308b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
308c0 20 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e 65 20 6f   /// Calls one o
308d0 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  f the virtual ta
308e0 62 6c 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69  ble initializati
308f0 6f 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  on methods...   
30900 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
30910 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
30920 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 72   <param name="cr
30930 65 61 74 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  eate">..        
30940 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20  /// Non-zero to 
30950 63 61 6c 6c 20 74 68 65 20 3c 73 65 65 20 63 72  call the <see cr
30960 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
30970 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22  edModule.Create"
30980 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
30990 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69   method; otherwi
309a0 73 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  se, the <see cre
309b0 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
309c0 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22  dModule.Connect"
309d0 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
309e0 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20   method will be 
309f0 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20  called...       
30a00 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
30a10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
30a20 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20  m name="pDb">.. 
30a30 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
30a40 61 74 69 76 65 20 64 61 74 61 62 61 73 65 20 63  ative database c
30a50 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65  onnection handle
30a60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
30a70 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
30a80 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
30a90 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20  ="pAux">..      
30aa0 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
30ab0 61 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  al native pointe
30ac0 72 20 76 61 6c 75 65 20 74 68 61 74 20 77 61 73  r value that was
30ad0 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
30ae0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
30af0 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64  lite3_create_mod
30b00 75 6c 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 63  ule(), sqlite3_c
30b10 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28  reate_module_v2(
30b20 29 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ) or..        //
30b30 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  / sqlite3_create
30b40 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
30b50 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d  le() functions..
30b60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
30b70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
30b80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
30b90 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
30ba0 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
30bb0 66 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d  f arguments from
30bc0 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54   the CREATE VIRT
30bd0 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d  UAL TABLE statem
30be0 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ent...        //
30bf0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
30c00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
30c10 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20  ame="argv">..   
30c20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
30c30 61 79 20 6f 66 20 73 74 72 69 6e 67 20 61 72 67  ay of string arg
30c40 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20  uments from the 
30c50 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
30c60 41 42 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ABLE..        //
30c70 2f 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20  / statement...  
30c80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
30c90 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
30ca0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
30cb0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
30cc0 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
30cd0 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
30ce0 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
30cf0 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20  to point to the 
30d00 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f  newly..        /
30d10 2f 2f 20 63 72 65 61 74 65 64 20 6e 61 74 69 76  // created nativ
30d20 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
30d30 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
30d40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
30d50 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
30d60 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
30d70 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20  ="pError">..    
30d80 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69      /// Upon fai
30d90 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d  lure, this param
30da0 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
30db0 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74  ified to point t
30dc0 6f 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20  o the error..   
30dd0 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65       /// message
30de0 2c 20 77 69 74 68 20 74 68 65 20 75 6e 64 65 72  , with the under
30df0 6c 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76  lying memory hav
30e00 69 6e 67 20 62 65 65 6e 20 6f 62 74 61 69 6e 65  ing been obtaine
30e10 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
30e20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
30e30 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f  malloc() functio
30e40 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
30e50 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
30e60 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
30e70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
30e80 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
30e90 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
30ea0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
30eb0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
30ec0 76 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  vate SQLiteError
30ed0 43 6f 64 65 20 43 72 65 61 74 65 4f 72 43 6f 6e  Code CreateOrCon
30ee0 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nect(..         
30ef0 20 20 20 62 6f 6f 6c 20 63 72 65 61 74 65 2c 0d     bool create,.
30f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
30f10 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
30f20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75        IntPtr pAu
30f30 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
30f40 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
30f50 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
30f60 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gv,..           
30f70 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61   ref IntPtr pVta
30f80 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
30f90 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
30fa0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
30fb0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
30fc0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
30fd0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
30ff0 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 53  ing fileName = S
31000 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69  QLiteString.Stri
31010 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
31020 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
31030 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
31040 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
31050 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 70  e3_db_filename(p
31060 44 62 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  Db, IntPtr.Zero)
31070 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
31080 20 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c        using (SQL
31090 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
310a0 6e 6e 65 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53  nnection = new S
310b0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  QLiteConnection(
310c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
310d0 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 66            pDb, f
310e0 69 6c 65 4e 61 6d 65 2c 20 66 61 6c 73 65 29 29  ileName, false))
310f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31100 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31110 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
31120 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
31130 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  e = null;..     
31140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
31150 74 72 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75  tring error = nu
31160 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
31170 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
31180 63 72 65 61 74 65 20 26 26 20 43 72 65 61 74 65  create && Create
31190 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70 41 75  (connection, pAu
311a0 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
311b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
311c0 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72  SQLiteString.Str
311d0 69 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38  ingArrayFromUtf8
311e0 53 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 61 72  SizeAndIntPtr(ar
311f0 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
31200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31210 20 61 72 67 76 29 2c 20 72 65 66 20 74 61 62 6c   argv), ref tabl
31220 65 2c 20 72 65 66 20 65 72 72 6f 72 29 20 3d 3d  e, ref error) ==
31230 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
31240 2e 4f 6b 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  .Ok) ||..       
31250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31260 20 28 21 63 72 65 61 74 65 20 26 26 20 43 6f 6e   (!create && Con
31270 6e 65 63 74 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c  nect(connection,
31280 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20   pAux,..        
31290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
312a0 20 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67      SQLiteString
312b0 2e 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d  .StringArrayFrom
312c0 55 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74  Utf8SizeAndIntPt
312d0 72 28 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  r(argc,..       
312e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
312f0 20 20 20 20 20 61 72 67 76 29 2c 20 72 65 66 20       argv), ref 
31300 74 61 62 6c 65 2c 20 72 65 66 20 65 72 72 6f 72  table, ref error
31310 29 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  ) == SQLiteError
31320 43 6f 64 65 2e 4f 6b 29 29 0d 0a 20 20 20 20 20  Code.Ok))..     
31330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
31340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31350 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61            if (ta
31360 62 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ble != null)..  
31370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31380 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
313a0 20 20 20 20 20 70 56 74 61 62 20 3d 20 54 61 62       pVtab = Tab
313b0 6c 65 54 6f 49 6e 74 50 74 72 28 74 61 62 6c 65  leToIntPtr(table
313c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
313d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
313e0 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
313f0 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20  orCode.Ok;..    
31400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31410 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
31420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
31430 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
31440 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31460 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72              pErr
31470 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  or = SQLiteStrin
31480 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
31490 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  String(..       
314a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314b0 20 20 20 20 20 20 20 20 20 22 6e 6f 20 74 61 62           "no tab
314c0 6c 65 20 77 61 73 20 63 72 65 61 74 65 64 22 29  le was created")
314d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
314e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
314f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31500 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
31510 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
31520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31530 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45                pE
31550 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72  rror = SQLiteStr
31560 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72  ing.Utf8IntPtrFr
31570 6f 6d 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b  omString(error);
31580 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31590 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
315a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
315b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
315c0 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
315d0 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f  ception e) /* NO
315e0 54 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41  TE: Must catch A
315f0 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  LL. */..        
31600 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31610 20 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20         pError = 
31620 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66  SQLiteString.Utf
31630 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
31640 67 28 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b  g(e.ToString());
31650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31660 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
31670 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
31680 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20  rCode.Error;..  
31690 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
316a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
316b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
316f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
31700 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
31710 20 43 61 6c 6c 73 20 6f 6e 65 20 6f 66 20 74 68   Calls one of th
31720 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
31730 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 6d 65 74  finalization met
31740 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  hods...        /
31750 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
31760 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
31770 6d 20 6e 61 6d 65 3d 22 64 65 73 74 72 6f 79 22  m name="destroy"
31780 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
31790 6f 6e 2d 7a 65 72 6f 20 74 6f 20 63 61 6c 6c 20  on-zero to call 
317a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
317b0 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
317c0 75 6c 65 2e 44 65 73 74 72 6f 79 22 20 2f 3e 0d  ule.Destroy" />.
317d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
317e0 68 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  hod; otherwise, 
317f0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
31800 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
31810 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
31820 2e 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20  .Disconnect" /> 
31830 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 0d 0a  method will be..
31840 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c          /// call
31850 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
31860 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
31870 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
31880 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
31890 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
318a0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
318b0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
318c0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
318d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
318e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
318f0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
31900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
31910 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
31920 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
31930 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
31940 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
31950 76 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  vate SQLiteError
31960 43 6f 64 65 20 44 65 73 74 72 6f 79 4f 72 44 69  Code DestroyOrDi
31970 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
31980 20 20 20 20 20 20 20 62 6f 6f 6c 20 64 65 73 74         bool dest
31990 72 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  roy,..          
319a0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
319b0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
319c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
319d0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
319e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
319f0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
31a00 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
31a10 6c 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e  le = TableFromIn
31a20 74 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  tPtr(pVtab);....
31a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a40 69 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c  if (table != nul
31a50 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
31a60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31a70 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
31a80 64 65 73 74 72 6f 79 20 26 26 20 28 44 65 73 74  destroy && (Dest
31a90 72 6f 79 28 74 61 62 6c 65 29 20 3d 3d 20 53 51  roy(table) == SQ
31aa0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
31ab0 29 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  )) ||..         
31ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
31ad0 21 64 65 73 74 72 6f 79 20 26 26 20 28 44 69 73  !destroy && (Dis
31ae0 63 6f 6e 6e 65 63 74 28 74 61 62 6c 65 29 20 3d  connect(table) =
31af0 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  = SQLiteErrorCod
31b00 65 2e 4f 6b 29 29 29 0d 0a 20 20 20 20 20 20 20  e.Ok)))..       
31b10 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b30 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c          if (tabl
31b40 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es != null)..   
31b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b60 20 20 20 20 20 20 20 20 20 74 61 62 6c 65 73 2e           tables.
31b70 52 65 6d 6f 76 65 28 70 56 74 61 62 29 3b 0d 0a  Remove(pVtab);..
31b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31b90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
31ba0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
31bb0 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .Ok;..          
31bc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
31be0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31bf0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
31c00 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f   (Exception e) /
31c10 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74  * NOTE: Must cat
31c20 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20  ch ALL. */..    
31c30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31c40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
31c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
31c60 2f 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20  / NOTE: At this 
31c70 70 6f 69 6e 74 2c 20 74 68 65 72 65 20 69 73 20  point, there is 
31c80 6e 6f 20 77 61 79 20 74 6f 20 72 65 70 6f 72 74  no way to report
31c90 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20   the error..    
31ca0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
31cb0 20 20 20 20 20 63 6f 6e 64 69 74 69 6f 6e 20 62       condition b
31cc0 61 63 6b 20 74 6f 20 74 68 65 20 63 61 6c 6c 65  ack to the calle
31cd0 72 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 75 73  r; therefore, us
31ce0 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  e the..         
31cf0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
31d00 6c 6f 67 67 69 6e 67 20 66 61 63 69 6c 69 74 79  logging facility
31d10 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20   instead...     
31d20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
31d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
31d40 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
31d50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31d60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4c             if (L
31d70 6f 67 45 78 63 65 70 74 69 6f 6e 73 4e 6f 54 68  ogExceptionsNoTh
31d80 72 6f 77 29 0d 0a 20 20 20 20 20 20 20 20 20 20  row)..          
31d90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31db0 20 20 20 20 20 2f 2a 20 74 68 72 6f 77 20 2a 2f       /* throw */
31dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31dd0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
31de0 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53  Log.LogMessage(S
31df0 51 4c 69 74 65 42 61 73 65 2e 43 4f 52 5f 45 5f  QLiteBase.COR_E_
31e00 45 58 43 45 50 54 49 4f 4e 2c 0d 0a 20 20 20 20  EXCEPTION,..    
31e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65          HelperMe
31e30 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
31e40 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
31e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e60 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
31e70 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
31e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e90 20 20 20 20 20 20 20 20 20 20 22 43 61 75 67 68            "Caugh
31ea0 74 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c  t exception in \
31eb0 22 7b 30 7d 5c 22 20 6d 65 74 68 6f 64 3a 20 7b  "{0}\" method: {
31ec0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
31ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ee0 20 20 64 65 73 74 72 6f 79 20 3f 20 22 78 44 65    destroy ? "xDe
31ef0 73 74 72 6f 79 22 20 3a 20 22 78 44 69 73 63 6f  stroy" : "xDisco
31f00 6e 6e 65 63 74 22 2c 20 65 29 29 3b 0d 0a 20 20  nnect", e));..  
31f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
31f30 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
31f40 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
31f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
31f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31f70 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
31f80 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
31f90 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
31fa0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
31fb0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
31fc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31fd0 20 20 20 20 20 20 20 20 20 20 20 20 46 72 65 65              Free
31fe0 54 61 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20  Table(pVtab);.. 
31ff0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
32000 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
32010 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
32020 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
32030 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
32040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32080 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
32090 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74 69     #region Stati
320a0 63 20 45 72 72 6f 72 20 48 61 6e 64 6c 69 6e 67  c Error Handling
320b0 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
320c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
320d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
320e0 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72  /// Arranges for
320f0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 65   the specified e
32100 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20  rror message to 
32110 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74  be placed into t
32120 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
32130 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66  zErrMsg field of
32140 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20   a sqlite3_vtab 
32150 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
32160 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a  e, freeing the..
32170 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73          /// exis
32180 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61  ting error messa
32190 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  ge, if any...   
321a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
321b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
321c0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
321d0 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  dule">..        
321e0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
321f0 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
32200 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
32210 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d  nce to be used..
32220 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
32230 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
32240 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
32250 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
32260 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
32270 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
32280 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
32290 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
322a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
322b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
322c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
322d0 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20  ogErrors">..    
322e0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
322f0 20 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d   if this error m
32300 65 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c  essage should al
32310 73 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  so be logged usi
32320 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
32330 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
32340 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
32350 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
32360 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32370 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
32380 6d 65 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e  me="logException
32390 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
323a0 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75   Non-zero if cau
323b0 67 68 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73  ght exceptions s
323c0 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20  hould be logged 
323d0 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
323e0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
323f0 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
32400 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
32410 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
32420 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
32430 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
32440 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
32450 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
32460 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
32470 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
32480 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
32490 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
324a0 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
324b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
324c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
324d0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
324e0 62 6f 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72  bool SetTableErr
324f0 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
32500 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f   SQLiteModule mo
32510 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  dule,..         
32520 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
32530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
32540 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20  ol logErrors,.. 
32550 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
32560 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a  logExceptions,..
32570 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
32580 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
32590 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
325a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
325b0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
325c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
325d0 20 20 20 20 69 66 20 28 6c 6f 67 45 72 72 6f 72      if (logError
325e0 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
325f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32600 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
32610 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28  eLog.LogMessage(
32620 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
32630 45 72 72 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  Error,..        
32640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32650 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
32660 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
32670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32680 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
32690 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
326a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
326b0 20 20 20 20 20 20 20 20 20 20 22 56 69 72 74 75            "Virtu
326c0 61 6c 20 74 61 62 6c 65 20 65 72 72 6f 72 3a 20  al table error: 
326d0 7b 30 7d 22 2c 20 65 72 72 6f 72 29 29 3b 20 2f  {0}", error)); /
326e0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
326f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
32700 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
32710 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
32720 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
32730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32740 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
32750 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32760 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
32770 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c 73  l success = fals
32780 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
32790 49 6e 74 50 74 72 20 70 4e 65 77 45 72 72 6f 72  IntPtr pNewError
327a0 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
327b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
327c0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
327d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
327e0 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20     if (pVtab == 
327f0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
32800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32810 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
32820 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
32830 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20     int offset = 
32840 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
32850 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
32860 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
32870 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
32880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32890 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
328a0 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ize, sizeof(int)
328b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
328c0 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
328d0 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
328e0 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
328f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32900 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
32910 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  nt), IntPtr.Size
32920 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
32930 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 6c        IntPtr pOl
32940 64 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 4d  dError = SQLiteM
32950 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
32960 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 29  r(pVtab, offset)
32970 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32980 20 20 20 20 20 69 66 20 28 70 4f 6c 64 45 72 72       if (pOldErr
32990 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or != IntPtr.Zer
329a0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
329b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
329c0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
329d0 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 6c  eMemory.Free(pOl
329e0 64 45 72 72 6f 72 29 3b 20 70 4f 6c 64 45 72 72  dError); pOldErr
329f0 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  or = IntPtr.Zero
32a00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
32a10 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
32a20 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
32a30 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20  (pVtab, offset, 
32a40 70 4f 6c 64 45 72 72 6f 72 29 3b 0d 0a 20 20 20  pOldError);..   
32a50 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
32a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32a70 20 20 69 66 20 28 65 72 72 6f 72 20 3d 3d 20 6e    if (error == n
32a80 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
32a90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
32aa0 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
32ab0 20 20 20 20 20 20 20 20 20 20 70 4e 65 77 45 72            pNewEr
32ac0 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
32ad0 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
32ae0 6d 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d  mString(error);.
32af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32b00 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
32b10 72 69 74 65 49 6e 74 50 74 72 28 70 56 74 61 62  riteIntPtr(pVtab
32b20 2c 20 6f 66 66 73 65 74 2c 20 70 4e 65 77 45 72  , offset, pNewEr
32b30 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
32b40 20 20 20 20 20 20 20 73 75 63 63 65 73 73 20 3d         success =
32b50 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
32b60 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
32b70 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
32b80 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20  ion e) /* NOTE: 
32b90 4d 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20  Must catch ALL. 
32ba0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
32bb0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32bc0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
32bd0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
32bf0 66 20 28 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  f (logExceptions
32c00 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
32c10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c30 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d    SQLiteLog.LogM
32c40 65 73 73 61 67 65 28 53 51 4c 69 74 65 42 61 73  essage(SQLiteBas
32c50 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f  e.COR_E_EXCEPTIO
32c60 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  N,..            
32c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c80 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
32c90 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
32ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32cb0 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
32cc0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
32cd0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
32ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32cf0 20 20 22 43 61 75 67 68 74 20 65 78 63 65 70 74    "Caught except
32d00 69 6f 6e 20 69 6e 20 5c 22 53 65 74 54 61 62 6c  ion in \"SetTabl
32d10 65 45 72 72 6f 72 5c 22 20 6d 65 74 68 6f 64 3a  eError\" method:
32d20 20 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {0}",..        
32d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32d40 20 20 20 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f      e)); /* thro
32d50 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
32d60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
32d70 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
32d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32d90 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
32da0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
32dc0 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
32dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
32de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
32df0 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
32e00 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
32e10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32e20 20 20 20 20 69 66 20 28 21 73 75 63 63 65 73 73      if (!success
32e30 20 26 26 20 28 70 4e 65 77 45 72 72 6f 72 20 21   && (pNewError !
32e40 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 0d  = IntPtr.Zero)).
32e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32e60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32e70 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65          SQLiteMe
32e80 6d 6f 72 79 2e 46 72 65 65 28 70 4e 65 77 45 72  mory.Free(pNewEr
32e90 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
32ea0 20 20 20 20 20 20 20 20 20 20 20 70 4e 65 77 45             pNewE
32eb0 72 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65  rror = IntPtr.Ze
32ec0 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
32ed0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32ee0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32ef0 20 20 20 20 20 72 65 74 75 72 6e 20 73 75 63 63       return succ
32f00 65 73 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ess;..        }.
32f10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
32f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
32f70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
32f80 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65       /// Arrange
32f90 73 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  s for the specif
32fa0 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ied error messag
32fb0 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20 69  e to be placed i
32fc0 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20  nto the..       
32fd0 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69 65   /// zErrMsg fie
32fe0 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33 5f  ld of a sqlite3_
32ff0 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
33000 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67 20  ucture, freeing 
33010 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
33020 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72 20   existing error 
33030 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e  message, if any.
33040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
33050 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
33060 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
33070 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
33080 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
33090 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
330a0 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  dule" /> object 
330b0 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75  instance to be u
330c0 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
330d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
330e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
330f0 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
33100 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
33110 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
33120 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
33130 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
33140 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 20  used to..       
33150 20 2f 2f 2f 20 6c 6f 6f 6b 75 70 20 74 68 65 20   /// lookup the 
33160 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
33170 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
33180 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
33190 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
331a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
331b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
331c0 6e 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22  name="logErrors"
331d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
331e0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20  on-zero if this 
331f0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68  error message sh
33200 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67  ould also be log
33210 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ged using the.. 
33220 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
33230 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22  cref="SQLiteLog"
33240 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20   /> class...    
33250 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
33260 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
33270 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78  aram name="logEx
33280 63 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20  ceptions">..    
33290 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
332a0 20 69 66 20 63 61 75 67 68 74 20 65 78 63 65 70   if caught excep
332b0 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20  tions should be 
332c0 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65  logged using the
332d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
332e0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c  ee cref="SQLiteL
332f0 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  og" /> class... 
33300 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
33310 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
33320 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
33330 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
33340 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73  // The error mes
33350 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sage...        /
33360 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
33370 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
33380 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
33390 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75  Non-zero upon su
333a0 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
333b0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
333c0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
333d0 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 54  static bool SetT
333e0 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20  ableError(..    
333f0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f          SQLiteMo
33400 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20  dule module,..  
33410 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
33420 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
33430 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
33440 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c   bool logErrors,
33450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
33460 6f 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  ol logExceptions
33470 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ,..            s
33480 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20  tring error..   
33490 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
334a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
334b0 20 20 20 69 66 20 28 74 61 62 6c 65 20 3d 3d 20     if (table == 
334c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
334d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
334e0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
334f0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
33500 20 3d 20 74 61 62 6c 65 2e 4e 61 74 69 76 65 48   = table.NativeH
33510 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  andle;....      
33520 20 20 20 20 20 20 69 66 20 28 70 56 74 61 62 20        if (pVtab 
33530 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
33540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33550 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
33560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
33570 74 75 72 6e 20 53 65 74 54 61 62 6c 65 45 72 72  turn SetTableErr
33580 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
33590 20 20 20 20 20 6d 6f 64 75 6c 65 2c 20 70 56 74       module, pVt
335a0 61 62 2c 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c  ab, logErrors, l
335b0 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 65 72  ogExceptions, er
335c0 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ror);..        }
335d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
335e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33620 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
33630 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
33640 20 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67        /// Arrang
33650 65 73 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  es for the speci
33660 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61  fied error messa
33670 67 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20  ge to be placed 
33680 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  into the..      
33690 20 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69    /// zErrMsg fi
336a0 65 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33  eld of a sqlite3
336b0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
336c0 72 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67  ructure, freeing
336d0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
336e0 2f 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72  / existing error
336f0 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79   message, if any
33700 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33710 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
33720 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
33730 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
33740 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
33750 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
33760 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
33770 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20   instance to be 
33780 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
33790 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
337a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
337b0 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
337c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
337d0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
337e0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
337f0 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
33800 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20  ed structure..  
33810 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 20 74        /// used t
33820 6f 20 67 65 74 20 74 68 65 20 6e 61 74 69 76 65  o get the native
33830 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
33840 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
33850 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ived..        //
33860 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  / structure...  
33870 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
33880 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
33890 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67  <param name="log
338a0 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20  Errors">..      
338b0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
338c0 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73  f this error mes
338d0 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f  sage should also
338e0 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67   be logged using
338f0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
33900 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
33910 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73  iteLog" /> class
33920 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33930 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
33940 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
33950 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22  ="logExceptions"
33960 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
33970 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68  on-zero if caugh
33980 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f  t exceptions sho
33990 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73  uld be logged us
339a0 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
339b0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
339c0 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c  SQLiteLog" /> cl
339d0 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
339e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
339f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
33a00 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20  ame="error">..  
33a10 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72        /// The er
33a20 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20  ror message...  
33a30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
33a40 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
33a50 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
33a60 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
33a70 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20  upon success... 
33a80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
33a90 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
33aa0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
33ab0 6f 6c 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f  ol SetCursorErro
33ac0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
33ad0 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64  SQLiteModule mod
33ae0 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ule,..          
33af0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
33b00 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
33b10 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a  ool logErrors,..
33b20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
33b30 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d   logExceptions,.
33b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
33b50 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  ing error..     
33b60 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
33b70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33b80 20 69 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20   if (pCursor == 
33b90 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
33ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
33bb0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
33bc0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
33bd0 72 20 70 56 74 61 62 20 3d 20 54 61 62 6c 65 46  r pVtab = TableF
33be0 72 6f 6d 43 75 72 73 6f 72 28 6d 6f 64 75 6c 65  romCursor(module
33bf0 2c 20 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20  , pCursor);.... 
33c00 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
33c10 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  Vtab == IntPtr.Z
33c20 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
33c30 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
33c40 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
33c50 20 20 20 72 65 74 75 72 6e 20 53 65 74 54 61 62     return SetTab
33c60 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  leError(..      
33c70 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
33c80 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45 72 72 6f  , pVtab, logErro
33c90 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e  rs, logException
33ca0 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20  s, error);..    
33cb0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33cc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33d10 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
33d20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
33d30 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65 20  rranges for the 
33d40 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20  specified error 
33d50 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20 70 6c  message to be pl
33d60 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a 20  aced into the.. 
33d70 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72 4d         /// zErrM
33d80 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73 71  sg field of a sq
33d90 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
33da0 65 64 20 73 74 72 75 63 74 75 72 65 2c 20 66 72  ed structure, fr
33db0 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  eeing the..     
33dc0 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67 20     /// existing 
33dd0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69  error message, i
33de0 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20  f any...        
33df0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
33e00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
33e10 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22  am name="module"
33e20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
33e30 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
33e40 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f  LiteModule" /> o
33e50 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
33e60 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20  o be used...    
33e70 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
33e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
33e90 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
33ea0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
33eb0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
33ec0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
33ed0 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
33ee0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65  ect instance use
33ef0 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d to..        //
33f00 2f 20 6c 6f 6f 6b 75 70 20 74 68 65 20 6e 61 74  / lookup the nat
33f10 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
33f20 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
33f30 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
33f40 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
33f50 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
33f60 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
33f70 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a  e="logErrors">..
33f80 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
33f90 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65 72 72  zero if this err
33fa0 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75 6c  or message shoul
33fb0 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64  d also be logged
33fc0 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20   using the..    
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 4c 6f 67 22 20 2f 3e  f="SQLiteLog" />
33ff0 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
34000 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
34010 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
34020 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65 70  m name="logExcep
34030 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20 20  tions">..       
34040 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
34050 20 63 61 75 67 68 74 20 65 78 63 65 70 74 69 6f   caught exceptio
34060 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ns should be log
34070 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ged using the.. 
34080 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
34090 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22  cref="SQLiteLog"
340a0 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20   /> class...    
340b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
340c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
340d0 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72  aram name="error
340e0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
340f0 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  The error messag
34100 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
34110 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
34120 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
34130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
34140 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65  -zero upon succe
34150 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
34160 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
34170 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
34180 74 69 63 20 62 6f 6f 6c 20 53 65 74 43 75 72 73  tic bool SetCurs
34190 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  orError(..      
341a0 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
341b0 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20  le module,..    
341c0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
341d0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
341e0 20 63 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20   cursor,..      
341f0 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72        bool logEr
34200 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  rors,..         
34210 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70     bool logExcep
34220 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20  tions,..        
34230 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72      string error
34240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
34250 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
34260 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73          if (curs
34270 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  or == null)..   
34280 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
34290 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
342a0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
342b0 20 70 43 75 72 73 6f 72 20 3d 20 63 75 72 73 6f   pCursor = curso
342c0 72 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d  r.NativeHandle;.
342d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
342e0 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e  f (pCursor == In
342f0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
34300 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
34310 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
34320 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
34330 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28 0d  SetCursorError(.
34340 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34350 20 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f 72   module, pCursor
34360 2c 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f 67  , logErrors, log
34370 45 78 63 65 70 74 69 6f 6e 73 2c 20 65 72 72 6f  Exceptions, erro
34380 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  r);..        }..
34390 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
343a0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  on..        #end
343b0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
343c0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
343d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34400 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
34410 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 6f       #region Pro
34420 74 65 63 74 65 64 20 4d 65 6d 62 65 72 73 0d 0a  tected Members..
34430 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
34440 4d 6f 64 75 6c 65 20 48 65 6c 70 65 72 20 4d 65  Module Helper Me
34450 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
34460 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
34470 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61        /// Gets a
34480 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c  nd returns the <
34490 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
344a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
344b0 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20  > interface..   
344c0 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
344d0 6e 74 61 74 69 6f 6e 20 74 6f 20 62 65 20 75 73  ntation to be us
344e0 65 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67  ed when creating
344f0 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
34500 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
34510 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
34520 65 2e 20 20 44 65 72 69 76 65 64 20 63 6c 61 73  e.  Derived clas
34530 73 65 73 20 6d 61 79 20 6f 76 65 72 72 69 64 65  ses may override
34540 20 74 68 69 73 20 6d 65 74 68 6f 64 20 74 6f 20   this method to 
34550 73 75 70 70 6c 79 20 61 6e 0d 0a 20 20 20 20 20  supply an..     
34560 20 20 20 2f 2f 2f 20 61 6c 74 65 72 6e 61 74 65     /// alternate
34570 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
34580 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63 72 65  for the <see cre
34590 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
345a0 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20  Module" />..    
345b0 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63      /// interfac
345c0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
345d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
345e0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
345f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
34600 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
34610 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
34620 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20  e" /> interface 
34630 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74  implementation t
34640 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62  o..        /// b
34650 65 20 75 73 65 64 20 77 68 65 6e 20 70 6f 70 75  e used when popu
34660 6c 61 74 69 6e 67 20 74 68 65 20 6e 61 74 69 76  lating the nativ
34670 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
34680 20 73 74 72 75 63 74 75 72 65 2e 20 20 49 66 0d   structure.  If.
34690 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
346a0 20 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20   returned value 
346b0 69 73 20 6e 75 6c 6c 2c 20 74 68 65 20 70 72 69  is null, the pri
346c0 76 61 74 65 20 6d 65 74 68 6f 64 73 20 70 72 6f  vate methods pro
346d0 76 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20  vided by the..  
346e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
346f0 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
34700 65 22 20 2f 3e 20 63 6c 61 73 73 20 61 6e 64 20  e" /> class and 
34710 72 65 6c 61 74 69 6e 67 20 74 6f 20 74 68 65 0d  relating to the.
34720 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
34730 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
34740 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  ativeModule" /> 
34750 69 6e 74 65 72 66 61 63 65 20 20 77 69 6c 6c 20  interface  will 
34760 62 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20  be used to..    
34770 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 20 74      /// create t
34780 68 65 20 6e 65 63 65 73 73 61 72 79 20 64 65 6c  he necessary del
34790 65 67 61 74 65 73 2e 0d 0a 20 20 20 20 20 20 20  egates...       
347a0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
347b0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
347c0 65 64 20 76 69 72 74 75 61 6c 20 49 53 51 4c 69  ed virtual ISQLi
347d0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 47  teNativeModule G
347e0 65 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d  etNativeModuleIm
347f0 70 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  pl()..        {.
34800 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
34810 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20 4e 4f 54  urn null; /* NOT
34820 45 3a 20 55 73 65 20 74 68 65 20 62 75 69 6c 74  E: Use the built
34830 2d 69 6e 20 64 65 66 61 75 6c 74 20 64 65 6c 65  -in default dele
34840 67 61 74 65 73 2e 20 2a 2f 0d 0a 20 20 20 20 20  gates. */..     
34850 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
34860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
348b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
348c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72  ..        /// Cr
348d0 65 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eates and return
348e0 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
348f0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
34900 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  dule" />..      
34910 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 20    /// interface 
34920 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 63  implementation c
34930 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20  orresponding to 
34940 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20  the current..   
34950 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
34960 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
34970 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
34980 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
34990 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
349a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
349b0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
349c0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
349d0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
349e0 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61  dule" /> interfa
349f0 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ce implementatio
34a00 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  n..        /// c
34a10 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20  orresponding to 
34a20 74 68 65 20 63 75 72 72 65 6e 74 20 3c 73 65 65  the current <see
34a30 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
34a40 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a  ule" /> object..
34a50 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
34a60 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
34a70 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
34a80 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
34a90 20 76 69 72 74 75 61 6c 20 49 53 51 4c 69 74 65   virtual ISQLite
34aa0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 43 72 65  NativeModule Cre
34ab0 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49  ateNativeModuleI
34ac0 6d 70 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  mpl()..        {
34ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
34ae0 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 4e  turn new SQLiteN
34af0 61 74 69 76 65 4d 6f 64 75 6c 65 28 74 68 69 73  ativeModule(this
34b00 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
34b10 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
34b20 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
34b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b70 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
34b80 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 54  #region Native T
34b90 61 62 6c 65 20 48 65 6c 70 65 72 20 4d 65 74 68  able Helper Meth
34ba0 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
34bb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
34bc0 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65      /// Allocate
34bd0 73 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74  s a native sqlit
34be0 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
34bf0 73 74 72 75 63 74 75 72 65 20 61 6e 64 20 72 65  structure and re
34c00 74 75 72 6e 73 20 61 0d 0a 20 20 20 20 20 20 20  turns a..       
34c10 20 2f 2f 2f 20 6e 61 74 69 76 65 20 70 6f 69 6e   /// native poin
34c20 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20  ter to it...    
34c30 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
34c40 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
34c50 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
34c60 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76 65 20     /// A native 
34c70 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74  pointer to a nat
34c80 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  ive sqlite3_vtab
34c90 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
34ca0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
34cb0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
34cc0 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
34cd0 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 41 6c  irtual IntPtr Al
34ce0 6c 6f 63 61 74 65 54 61 62 6c 65 28 29 0d 0a 20  locateTable().. 
34cf0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34d00 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d        int size =
34d10 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28   Marshal.SizeOf(
34d20 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20  typeof(..       
34d30 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
34d40 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
34d50 69 74 65 33 5f 76 74 61 62 29 29 3b 0d 0a 0d 0a  ite3_vtab));....
34d60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
34d70 72 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e  rn SQLiteMemory.
34d80 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 29 3b 0d  Allocate(size);.
34d90 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
34da0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
34db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
34df0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
34e00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
34e10 2f 2f 2f 20 5a 65 72 6f 73 20 6f 75 74 20 74 68  /// Zeros out th
34e20 65 20 66 69 65 6c 64 73 20 6f 66 20 61 20 6e 61  e fields of a na
34e30 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
34e40 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
34e50 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
34e60 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
34e70 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
34e80 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
34e90 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
34ea0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
34eb0 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  o the native sql
34ec0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
34ed0 64 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d 0a  d structure to..
34ee0 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f          /// zero
34ef0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
34f00 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
34f10 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
34f20 61 6c 20 76 6f 69 64 20 5a 65 72 6f 54 61 62 6c  al void ZeroTabl
34f30 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
34f40 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
34f50 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
34f60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
34f70 20 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d      if (pVtab ==
34f80 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
34f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
34fa0 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
34fb0 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74        int offset
34fc0 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
34fd0 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
34fe0 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70  al.WriteIntPtr(p
34ff0 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 49 6e  Vtab, offset, In
35000 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
35010 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
35020 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
35030 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
35040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35050 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
35060 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74  Size, sizeof(int
35070 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
35080 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
35090 2e 57 72 69 74 65 49 6e 74 33 32 28 70 56 74 61  .WriteInt32(pVta
350a0 62 2c 20 6f 66 66 73 65 74 2c 20 30 29 3b 0d 0a  b, offset, 0);..
350b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
350c0 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
350d0 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
350e0 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
350f0 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
35100 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
35110 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
35120 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
35130 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
35140 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 49  pVtab, offset, I
35150 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
35160 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
35170 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
35180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
351a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
351b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
351c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
351d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
351e0 20 46 72 65 65 73 20 61 20 6e 61 74 69 76 65 20   Frees a native 
351f0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 73 74 72  sqlite3_vtab str
35200 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
35210 20 70 72 6f 76 69 64 65 64 20 6e 61 74 69 76 65   provided native
35220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f  ..        /// po
35230 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20  inter to it...  
35240 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
35250 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
35260 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
35270 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
35280 2f 2f 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69  /// A native poi
35290 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65  nter to a native
352a0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
352b0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
352c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
352d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
352e0 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
352f0 6c 20 76 6f 69 64 20 46 72 65 65 54 61 62 6c 65  l void FreeTable
35300 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
35310 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
35320 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
35330 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35340 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72     SetTableError
35350 28 70 56 74 61 62 2c 20 6e 75 6c 6c 29 3b 0d 0a  (pVtab, null);..
35360 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
35370 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 56  teMemory.Free(pV
35380 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  tab);..        }
35390 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
353a0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
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 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
35400 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
35410 65 20 43 75 72 73 6f 72 20 48 65 6c 70 65 72 20  e Cursor Helper 
35420 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
35430 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
35440 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f          /// Allo
35450 63 61 74 65 73 20 61 20 6e 61 74 69 76 65 20 73  cates a native s
35460 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
35470 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
35480 74 75 72 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  ture and..      
35490 20 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 61 20    /// returns a 
354a0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
354b0 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  o it...        /
354c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
354d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
354e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
354f0 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  / A native point
35500 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73  er to a native s
35510 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
35520 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
35530 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
35540 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
35550 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
35560 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20   virtual IntPtr 
35570 41 6c 6c 6f 63 61 74 65 43 75 72 73 6f 72 28 29  AllocateCursor()
35580 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
35590 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
355a0 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
355b0 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20  Of(typeof(..    
355c0 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
355d0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
355e0 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
355f0 73 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sor));....      
35600 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
35610 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
35620 74 65 28 73 69 7a 65 29 3b 0d 0a 20 20 20 20 20  te(size);..     
35630 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
35640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35680 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
35690 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
356a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72  ..        /// Fr
356b0 65 65 73 20 61 20 6e 61 74 69 76 65 20 73 71 6c  ees a native sql
356c0 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
356d0 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67   structure using
356e0 20 74 68 65 20 70 72 6f 76 69 64 65 64 0d 0a 20   the provided.. 
356f0 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76         /// nativ
35700 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e  e pointer to it.
35710 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35720 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
35730 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
35740 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
35750 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69        /// A nati
35760 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
35770 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
35780 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
35790 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
357a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
357b0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  am>..        pro
357c0 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
357d0 6f 69 64 20 46 72 65 65 43 75 72 73 6f 72 28 0d  oid FreeCursor(.
357e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
357f0 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
35800 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
35810 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35820 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
35830 46 72 65 65 28 70 43 75 72 73 6f 72 29 3b 0d 0a  Free(pCursor);..
35840 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
35850 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
35860 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
35870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
358a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
358b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
358c0 69 6f 6e 20 53 74 61 74 69 63 20 54 61 62 6c 65  ion Static Table
358d0 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64 73 0d   Lookup Methods.
358e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
358f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
35900 2f 2f 2f 20 52 65 61 64 73 20 61 6e 64 20 72 65  /// Reads and re
35910 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65  turns the native
35920 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
35930 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
35940 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ived..        //
35950 2f 20 73 74 72 75 63 74 75 72 65 20 62 61 73 65  / structure base
35960 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20  d on the native 
35970 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
35980 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
35990 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
359a0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
359b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
359c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
359d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
359e0 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20  ame="module">.. 
359f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
35a00 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
35a10 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
35a20 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65  t instance to be
35a30 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
35a40 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
35a50 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
35a60 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
35a70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
35a80 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
35a90 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
35aa0 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
35ab0 76 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a 20  ved structure.. 
35ac0 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20         /// from 
35ad0 77 68 69 63 68 20 74 6f 20 72 65 61 64 20 74 68  which to read th
35ae0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
35af0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
35b00 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
35b10 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
35b20 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
35b30 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
35b40 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
35b50 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
35b60 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
35b70 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
35b80 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
35b90 72 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a 20 20  ructure -OR-..  
35ba0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
35bb0 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f  ref="IntPtr.Zero
35bc0 22 20 2f 3e 20 69 66 20 69 74 20 63 61 6e 6e 6f  " /> if it canno
35bd0 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
35be0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35bf0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35c00 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
35c10 20 49 6e 74 50 74 72 20 54 61 62 6c 65 46 72 6f   IntPtr TableFro
35c20 6d 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20  mCursor(..      
35c30 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
35c40 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20  le module,..    
35c50 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
35c60 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
35c70 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
35c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
35c90 20 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74   (pCursor == Int
35ca0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
35cb0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
35cc0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
35cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
35ce0 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
35cf0 64 49 6e 74 50 74 72 28 70 43 75 72 73 6f 72 29  dIntPtr(pCursor)
35d00 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
35d10 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
35d20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
35d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d70 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
35d80 72 65 67 69 6f 6e 20 54 61 62 6c 65 20 4c 6f 6f  region Table Loo
35d90 6b 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  kup Methods..   
35da0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
35db0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
35dc0 52 65 61 64 73 20 61 6e 64 20 72 65 74 75 72 6e  Reads and return
35dd0 73 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69  s the native poi
35de0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
35df0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
35e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
35e10 72 75 63 74 75 72 65 20 62 61 73 65 64 20 6f 6e  ructure based on
35e20 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   the native poin
35e30 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
35e40 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a  e3_vtab_cursor..
35e50 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 72 69          /// deri
35e60 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
35e70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
35e80 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
35e90 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
35ea0 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
35eb0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
35ec0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
35ed0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  e sqlite3_vtab_c
35ee0 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74  ursor derived st
35ef0 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20  ructure..       
35f00 20 2f 2f 2f 20 66 72 6f 6d 20 77 68 69 63 68 20   /// from which 
35f10 74 6f 20 72 65 61 64 20 74 68 65 20 6e 61 74 69  to read the nati
35f20 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
35f30 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
35f40 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
35f50 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  /// structure...
35f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
35f70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
35f80 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
35f90 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
35fa0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
35fb0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
35fc0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
35fd0 65 20 2d 4f 52 2d 0d 0a 20 20 20 20 20 20 20 20  e -OR-..        
35fe0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
35ff0 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69  ntPtr.Zero" /> i
36000 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  f it cannot be d
36010 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
36020 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
36030 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  s>..        prot
36040 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e  ected virtual In
36050 74 50 74 72 20 54 61 62 6c 65 46 72 6f 6d 43 75  tPtr TableFromCu
36060 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rsor(..         
36070 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
36080 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
36090 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
360a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
360b0 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28  TableFromCursor(
360c0 74 68 69 73 2c 20 70 43 75 72 73 6f 72 29 3b 0d  this, pCursor);.
360d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
360e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
360f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
36130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
36140 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
36150 2f 2f 2f 20 4c 6f 6f 6b 73 20 75 70 20 61 6e 64  /// Looks up and
36160 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65   returns the <se
36170 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
36180 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
36190 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
361a0 2f 2f 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65  // instance base
361b0 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20  d on the native 
361c0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
361d0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
361e0 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ved..        ///
361f0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
36200 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
36210 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
36220 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
36230 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
36240 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
36250 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
36260 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
36270 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
36280 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
36290 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
362a0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
362b0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
362c0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
362d0 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
362e0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 6f 72 20  ect instance or 
362f0 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 20  null if..       
36300 20 2f 2f 2f 20 74 68 65 20 63 6f 72 72 65 73 70   /// the corresp
36310 6f 6e 64 69 6e 67 20 6f 6e 65 20 63 61 6e 6e 6f  onding one canno
36320 74 20 62 65 20 66 6f 75 6e 64 2e 0d 0a 20 20 20  t be found...   
36330 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
36340 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
36350 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 53  tected virtual S
36360 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
36370 65 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74 50 74  e TableFromIntPt
36380 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
36390 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
363a0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
363b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
363c0 20 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d      if (pVtab ==
363d0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
363e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
363f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
36400 74 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  tTableError(pVta
36410 62 2c 20 22 69 6e 76 61 6c 69 64 20 6e 61 74 69  b, "invalid nati
36420 76 65 20 74 61 62 6c 65 22 29 3b 0d 0a 20 20 20  ve table");..   
36430 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
36440 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
36450 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
36460 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
36470 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
36480 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
36490 20 69 66 20 28 28 74 61 62 6c 65 73 20 21 3d 20   if ((tables != 
364a0 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20  null) &&..      
364b0 20 20 20 20 20 20 20 20 20 20 74 61 62 6c 65 73            tables
364c0 2e 54 72 79 47 65 74 56 61 6c 75 65 28 70 56 74  .TryGetValue(pVt
364d0 61 62 2c 20 6f 75 74 20 74 61 62 6c 65 29 29 0d  ab, out table)).
364e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
364f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36500 72 65 74 75 72 6e 20 74 61 62 6c 65 3b 0d 0a 20  return table;.. 
36510 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
36520 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
36530 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c  ableError(pVtab,
36540 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
36550 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
36560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
36570 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
36580 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
36590 20 20 20 20 20 20 20 20 20 20 20 22 6d 61 6e 61             "mana
365a0 67 65 64 20 74 61 62 6c 65 20 66 6f 72 20 7b 30  ged table for {0
365b0 7d 20 6e 6f 74 20 66 6f 75 6e 64 22 2c 20 70 56  } not found", pV
365c0 74 61 62 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  tab));....      
365d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
365e0 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  l;..        }...
365f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
36600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36640 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
36650 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
36660 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73     /// Allocates
36670 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6e   and returns a n
36680 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
36690 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20   a sqlite3_vtab 
366a0 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20  derived..       
366b0 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 61   /// structure a
366c0 6e 64 20 63 72 65 61 74 65 73 20 61 6e 20 61 73  nd creates an as
366d0 73 6f 63 69 61 74 69 6f 6e 20 62 65 74 77 65 65  sociation betwee
366e0 6e 20 69 74 20 61 6e 64 20 74 68 65 20 73 70 65  n it and the spe
366f0 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20  cified..        
36700 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
36710 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
36720 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
36730 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
36740 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
36750 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
36760 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
36770 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
36780 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
36790 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
367a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
367b0 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 0d 0a  nce to be used..
367c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 6e          /// when
367d0 20 63 72 65 61 74 69 6e 67 20 74 68 65 20 61 73   creating the as
367e0 73 6f 63 69 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  sociation...    
367f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
36800 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
36810 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
36820 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
36830 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c  pointer to a sql
36840 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
36850 64 20 73 74 72 75 63 74 75 72 65 20 6f 72 0d 0a  d structure or..
36860 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
36870 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65   cref="IntPtr.Ze
36880 72 6f 22 20 2f 3e 20 69 66 20 74 68 65 20 6d 65  ro" /> if the me
36890 74 68 6f 64 20 66 61 69 6c 73 20 66 6f 72 20 61  thod fails for a
368a0 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20  ny reason...    
368b0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
368c0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  s>..        prot
368d0 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e  ected virtual In
368e0 74 50 74 72 20 54 61 62 6c 65 54 6f 49 6e 74 50  tPtr TableToIntP
368f0 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
36900 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
36910 62 6c 65 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ble table..     
36920 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
36930 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36940 20 69 66 20 28 28 74 61 62 6c 65 20 3d 3d 20 6e   if ((table == n
36950 75 6c 6c 29 20 7c 7c 20 28 74 61 62 6c 65 73 20  ull) || (tables 
36960 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  == null))..     
36970 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
36980 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
36990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
369a0 74 50 74 72 20 70 56 74 61 62 20 3d 20 49 6e 74  tPtr pVtab = Int
369b0 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
369c0 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 75 63 63         bool succ
369d0 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a  ess = false;....
369e0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
369f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
36a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36a10 70 56 74 61 62 20 3d 20 41 6c 6c 6f 63 61 74 65  pVtab = Allocate
36a20 54 61 62 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  Table();....    
36a30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
36a40 70 56 74 61 62 20 21 3d 20 49 6e 74 50 74 72 2e  pVtab != IntPtr.
36a50 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
36a60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5a 65                Ze
36a80 72 6f 54 61 62 6c 65 28 70 56 74 61 62 29 3b 0d  roTable(pVtab);.
36a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36aa0 20 20 20 20 20 74 61 62 6c 65 2e 4e 61 74 69 76       table.Nativ
36ab0 65 48 61 6e 64 6c 65 20 3d 20 70 56 74 61 62 3b  eHandle = pVtab;
36ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36ad0 20 20 20 20 20 20 74 61 62 6c 65 73 2e 41 64 64        tables.Add
36ae0 28 70 56 74 61 62 2c 20 74 61 62 6c 65 29 3b 0d  (pVtab, table);.
36af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36b00 20 20 20 20 20 73 75 63 63 65 73 73 20 3d 20 74       success = t
36b10 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
36b20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
36b30 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
36b40 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
36b50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
36b60 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
36b70 21 73 75 63 63 65 73 73 20 26 26 20 28 70 56 74  !success && (pVt
36b80 61 62 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ab != IntPtr.Zer
36b90 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o))..           
36ba0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
36bb0 20 20 20 20 20 20 20 20 20 20 20 20 46 72 65 65              Free
36bc0 54 61 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20  Table(pVtab);.. 
36bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36be0 20 20 20 70 56 74 61 62 20 3d 20 49 6e 74 50 74     pVtab = IntPt
36bf0 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
36c00 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
36c10 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
36c20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
36c30 70 56 74 61 62 3b 0d 0a 20 20 20 20 20 20 20 20  pVtab;..        
36c40 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
36c50 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
36c60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
36c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ca0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
36cb0 20 20 20 20 23 72 65 67 69 6f 6e 20 43 75 72 73      #region Curs
36cc0 6f 72 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64  or Lookup Method
36cd0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
36ce0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
36cf0 20 20 2f 2f 2f 20 4c 6f 6f 6b 73 20 75 70 20 61    /// Looks up a
36d00 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c  nd returns the <
36d10 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
36d20 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
36d30 6f 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  or" />..        
36d40 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  /// object insta
36d50 6e 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  nce based on the
36d60 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
36d70 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
36d80 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62  /// sqlite3_vtab
36d90 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
36da0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
36db0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
36dc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
36dd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
36de0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
36df0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
36e00 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
36e10 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
36e20 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
36e30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
36e40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
36e50 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
36e60 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
36e70 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
36e80 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
36e90 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
36ea0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
36eb0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
36ec0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
36ed0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
36ee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
36ef0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
36f00 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
36f10 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ursor" /> object
36f20 20 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75 6c   instance or nul
36f30 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  l..        /// i
36f40 66 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64  f the correspond
36f50 69 6e 67 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62  ing one cannot b
36f60 65 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20  e found...      
36f70 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
36f80 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
36f90 74 65 64 20 76 69 72 74 75 61 6c 20 53 51 4c 69  ted virtual SQLi
36fa0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
36fb0 72 73 6f 72 20 43 75 72 73 6f 72 46 72 6f 6d 49  rsor CursorFromI
36fc0 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
36fd0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
36fe0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
36ff0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
37000 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
37010 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
37020 20 20 20 20 20 69 66 20 28 70 43 75 72 73 6f 72       if (pCursor
37030 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
37040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
37050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37060 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 70   SetTableError(p
37070 56 74 61 62 2c 20 22 69 6e 76 61 6c 69 64 20 6e  Vtab, "invalid n
37080 61 74 69 76 65 20 63 75 72 73 6f 72 22 29 3b 0d  ative cursor");.
37090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
370a0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
370b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
370c0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
370d0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
370e0 72 73 6f 72 20 63 75 72 73 6f 72 3b 0d 0a 0d 0a  rsor cursor;....
370f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
37100 28 63 75 72 73 6f 72 73 20 21 3d 20 6e 75 6c 6c  (cursors != null
37110 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
37120 20 20 20 20 20 20 63 75 72 73 6f 72 73 2e 54 72        cursors.Tr
37130 79 47 65 74 56 61 6c 75 65 28 70 43 75 72 73 6f  yGetValue(pCurso
37140 72 2c 20 6f 75 74 20 63 75 72 73 6f 72 29 29 0d  r, out cursor)).
37150 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
37160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37170 72 65 74 75 72 6e 20 63 75 72 73 6f 72 3b 0d 0a  return cursor;..
37180 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
37190 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74  .            Set
371a0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
371b0 2c 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  , HelperMethods.
371c0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
371d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
371e0 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
371f0 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
37200 20 20 20 20 20 20 20 20 20 20 20 20 22 6d 61 6e              "man
37210 61 67 65 64 20 63 75 72 73 6f 72 20 66 6f 72 20  aged cursor for 
37220 7b 30 7d 20 6e 6f 74 20 66 6f 75 6e 64 22 2c 20  {0} not found", 
37230 70 43 75 72 73 6f 72 29 29 3b 0d 0a 0d 0a 20 20  pCursor));....  
37240 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
37250 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
37260 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
37270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
372c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
372d0 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63         /// Alloc
372e0 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ates and returns
372f0 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   a native pointe
37300 72 20 74 6f 20 61 20 73 71 6c 69 74 65 33 5f 76  r to a sqlite3_v
37310 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20  tab_cursor..    
37320 20 20 20 20 2f 2f 2f 20 64 65 72 69 76 65 64 20      /// derived 
37330 73 74 72 75 63 74 75 72 65 20 61 6e 64 20 63 72  structure and cr
37340 65 61 74 65 73 20 61 6e 20 61 73 73 6f 63 69 61  eates an associa
37350 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 74 20  tion between it 
37360 61 6e 64 20 74 68 65 0d 0a 20 20 20 20 20 20 20  and the..       
37370 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c   /// specified <
37380 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
37390 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
373a0 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
373b0 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
373c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
373d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
373e0 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72  ram name="cursor
373f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37400 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
37410 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
37420 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65  eCursor" /> obje
37430 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62  ct instance to b
37440 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  e..        /// u
37450 73 65 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e  sed when creatin
37460 67 20 74 68 65 20 61 73 73 6f 63 69 61 74 69 6f  g the associatio
37470 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
37480 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
37490 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
374a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
374b0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
374c0 74 6f 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61  to a sqlite3_vta
374d0 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
374e0 20 73 74 72 75 63 74 75 72 65 20 6f 72 0d 0a 20   structure or.. 
374f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
37500 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72  cref="IntPtr.Zer
37510 6f 22 20 2f 3e 20 69 66 20 74 68 65 20 6d 65 74  o" /> if the met
37520 68 6f 64 20 66 61 69 6c 73 20 66 6f 72 20 61 6e  hod fails for an
37530 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20  y reason...     
37540 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
37550 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
37560 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74  cted virtual Int
37570 50 74 72 20 43 75 72 73 6f 72 54 6f 49 6e 74 50  Ptr CursorToIntP
37580 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
37590 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
375a0 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
375b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
375c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
375d0 20 20 20 20 20 20 20 20 69 66 20 28 28 63 75 72          if ((cur
375e0 73 6f 72 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20  sor == null) || 
375f0 28 63 75 72 73 6f 72 73 20 3d 3d 20 6e 75 6c 6c  (cursors == null
37600 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
37610 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
37620 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
37630 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
37640 75 72 73 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a  ursor = IntPtr.Z
37650 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
37660 20 20 62 6f 6f 6c 20 73 75 63 63 65 73 73 20 3d    bool success =
37670 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
37680 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
37690 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
376a0 20 20 20 20 20 20 20 20 20 20 20 70 43 75 72 73             pCurs
376b0 6f 72 20 3d 20 41 6c 6c 6f 63 61 74 65 43 75 72  or = AllocateCur
376c0 73 6f 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sor();....      
376d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43            if (pC
376e0 75 72 73 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e  ursor != IntPtr.
376f0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
37700 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75                cu
37720 72 73 6f 72 2e 4e 61 74 69 76 65 48 61 6e 64 6c  rsor.NativeHandl
37730 65 20 3d 20 70 43 75 72 73 6f 72 3b 0d 0a 20 20  e = pCursor;..  
37740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37750 20 20 63 75 72 73 6f 72 73 2e 41 64 64 28 70 43    cursors.Add(pC
37760 75 72 73 6f 72 2c 20 63 75 72 73 6f 72 29 3b 0d  ursor, cursor);.
37770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37780 20 20 20 20 20 73 75 63 63 65 73 73 20 3d 20 74       success = t
37790 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
377a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
377b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
377c0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
377d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
377e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
377f0 21 73 75 63 63 65 73 73 20 26 26 20 28 70 43 75  !success && (pCu
37800 72 73 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a  rsor != IntPtr.Z
37810 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ero))..         
37820 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 72                Fr
37840 65 65 43 75 72 73 6f 72 28 70 43 75 72 73 6f 72  eeCursor(pCursor
37850 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
37860 20 20 20 20 20 20 20 20 70 43 75 72 73 6f 72 20          pCursor 
37870 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
37880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37890 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
378a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
378b0 72 65 74 75 72 6e 20 70 43 75 72 73 6f 72 3b 0d  return pCursor;.
378c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
378d0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
378e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
378f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37930 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
37940 67 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 20 4c 6f  gion Function Lo
37950 6f 6b 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20  okup Methods..  
37960 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
37970 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
37980 20 44 65 74 65 72 69 6d 69 6e 65 73 20 74 68 65   Deterimines the
37990 20 6b 65 79 20 74 68 61 74 20 73 68 6f 75 6c 64   key that should
379a0 20 62 65 20 75 73 65 64 20 74 6f 20 69 64 65 6e   be used to iden
379b0 74 69 66 79 20 61 6e 64 20 73 74 6f 72 65 20 74  tify and store t
379c0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
379d0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
379e0 65 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62  eFunction" /> ob
379f0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 66 6f  ject instance fo
37a00 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
37a10 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
37a20 20 28 69 2e 65 2e 20 74 6f 20 62 65 20 72 65 74   (i.e. to be ret
37a30 75 72 6e 65 64 20 76 69 61 20 74 68 65 0d 0a 20  urned via the.. 
37a40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
37a50 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
37a60 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
37a70 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
37a80 6f 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  od)...        //
37a90 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
37aa0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
37ab0 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43   name="argumentC
37ac0 6f 75 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  ount">..        
37ad0 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
37ae0 66 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74  f arguments to t
37af0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
37b00 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
37b10 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
37b20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
37b30 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
37b40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
37b50 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76  he name of the v
37b60 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66 75 6e  irtual table fun
37b70 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
37b80 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
37b90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
37ba0 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22   name="function"
37bb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
37bc0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
37bd0 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  LiteFunction" />
37be0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
37bf0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
37c00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
37c10 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
37c20 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
37c30 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
37c40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
37c50 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
37c60 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20   /// The string 
37c70 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75  that should be u
37c80 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20  sed to identify 
37c90 61 6e 64 20 73 74 6f 72 65 20 74 68 65 20 76 69  and store the vi
37ca0 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  rtual..        /
37cb0 2f 2f 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f  // table functio
37cc0 6e 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68 69  n instance.  Thi
37cd0 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20  s method cannot 
37ce0 72 65 74 75 72 6e 20 6e 75 6c 6c 2e 20 20 49 66  return null.  If
37cf0 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   null..        /
37d00 2f 2f 20 69 73 20 72 65 74 75 72 6e 65 64 20 66  // is returned f
37d10 72 6f 6d 20 74 68 69 73 20 6d 65 74 68 6f 64 2c  rom this method,
37d20 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 69 73   the behavior is
37d30 20 75 6e 64 65 66 69 6e 65 64 2e 0d 0a 20 20 20   undefined...   
37d40 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
37d50 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
37d60 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 73  tect