System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 511027a792d5129cc9a09767ac6648cba7a2c461:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 4a 6f   * Written by Jo
0080: 65 20 4d 69 73 74 61 63 68 6b 69 6e 20 28 6a 6f  e Mistachkin (jo
0090: 65 40 6d 69 73 74 61 63 68 6b 69 6e 2e 63 6f 6d  e@mistachkin.com
00a0: 29 0d 0a 20 2a 0d 0a 20 2a 20 52 65 6c 65 61 73  ).. *.. * Releas
00b0: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00c0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00d0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00e0: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 0d 0a 75 73  *********/....us
0120: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0130: 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d  ctions.Generic;.
0140: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c  .using System.Gl
0150: 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 0d 0a  obalization;....
0160: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0170: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0180: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e  using System.Run
0190: 74 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72  time.CompilerSer
01a0: 76 69 63 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  vices;..#endif..
01b0: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52  ..using System.R
01c0: 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65  untime.InteropSe
01d0: 72 76 69 63 65 73 3b 0d 0a 75 73 69 6e 67 20 53  rvices;..using S
01e0: 79 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 6e  ystem.Text;....n
01f0: 61 6d 65 73 70 61 63 65 20 53 79 73 74 65 6d 2e  amespace System.
0200: 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a  Data.SQLite..{..
0210: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
0220: 74 65 43 6f 6e 74 65 78 74 20 48 65 6c 70 65 72  teContext Helper
0230: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
0240: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0250: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
0260: 70 72 65 73 65 6e 74 73 20 61 20 63 6f 6e 74 65  presents a conte
0270: 78 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  xt from the SQLi
0280: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
0290: 74 68 61 74 20 63 61 6e 0d 0a 20 20 20 20 2f 2f  that can..    //
02a0: 2f 20 62 65 20 70 61 73 73 65 64 20 74 6f 20 74  / be passed to t
02b0: 68 65 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  he sqlite3_resul
02c0: 74 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69  t_*() and associ
02d0: 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d  ated functions..
02e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
02f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
0300: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
0310: 69 74 65 43 6f 6e 74 65 78 74 20 3a 20 49 53 51  iteContext : ISQ
0320: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
0330: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
0340: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0350: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   Data..        /
0360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0370: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
0380: 74 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e  tive context han
0390: 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle...        //
03a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
03b0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e        private In
03c0: 74 50 74 72 20 70 43 6f 6e 74 65 78 74 3b 0d 0a  tPtr pContext;..
03d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
03e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
03f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0430: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0440: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0450: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
0460: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
0470: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
0480: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
0490: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
04a0: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
04b0: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
04c0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
04d0: 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 2e 0d 0a  ontext handle...
04e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
04f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0500: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0510: 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20  "pContext">..   
0520: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
0530: 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e 64  ive context hand
0540: 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  le to use...    
0550: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
0560: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
0570: 61 6c 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74  al SQLiteContext
0580: 28 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74  (IntPtr pContext
0590: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
05a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70            this.p
05b0: 43 6f 6e 74 65 78 74 20 3d 20 70 43 6f 6e 74 65  Context = pConte
05c0: 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  xt;..        }..
05d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
05e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0630: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0640: 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
0650: 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d  NativeHandle Mem
0660: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
0670: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0680: 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
0690: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
06a0: 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
06b0: 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
06c0: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
06d0: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
06e0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
06f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0700: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0710: 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e  IntPtr NativeHan
0720: 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
0730: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
0740: 7b 20 72 65 74 75 72 6e 20 70 43 6f 6e 74 65 78  { return pContex
0750: 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  t; }..        }.
0760: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
0770: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
07d0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
07e0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
07f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0800: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0810: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0820: 73 75 6c 74 20 74 6f 20 4e 55 4c 4c 2e 0d 0a 20  sult to NULL... 
0830: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
0840: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
0850: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 4e 75  ublic void SetNu
0860: 6c 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ll()..        {.
0870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
0880: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
0890: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
08a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
08b0: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
08c0: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
08d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
08e0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
08f0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
0900: 75 6c 74 5f 6e 75 6c 6c 28 70 43 6f 6e 74 65 78  ult_null(pContex
0910: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
0920: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
0980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0990: 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
09a0: 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20   context result 
09b0: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
09c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
09d0: 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
09e0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
09f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0a00: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
0a10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
0a20: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
0a30: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
0a40: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
0a50: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
0a60: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
0a70: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0a80: 76 6f 69 64 20 53 65 74 44 6f 75 62 6c 65 28 64  void SetDouble(d
0a90: 6f 75 62 6c 65 20 76 61 6c 75 65 29 0d 0a 20 20  ouble value)..  
0aa0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ab0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
0ac0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
0ad0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
0ae0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
0af0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
0b00: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
0b10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0b20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
0b30: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
0b40: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
0b50: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
0b60: 6c 65 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c  le(pContext, val
0b70: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
0b80: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
0b90: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
0ba0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
0bb0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
0bc0: 62 6c 65 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e  ble_interop(pCon
0bd0: 74 65 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29  text, ref value)
0be0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
0bf0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
0c00: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
0c10: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
0c20: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
0c30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
0c90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0ca0: 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
0cb0: 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74  context result t
0cc0: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
0cd0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
0ce0: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
0cf0: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
0d00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0d10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
0d20: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
0d30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
0d40: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
0d50: 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
0d60: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
0d70: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
0d80: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
0d90: 64 20 53 65 74 49 6e 74 28 69 6e 74 20 76 61 6c  d SetInt(int val
0da0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0dc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
0dd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
0de0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
0df0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
0e00: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
0e10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
0e20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
0e30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
0e40: 6c 74 5f 69 6e 74 28 70 43 6f 6e 74 65 78 74 2c  lt_int(pContext,
0e50: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
0e60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0ec0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0ed0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0ee0: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0ef0: 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63  sult to the spec
0f00: 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
0f10: 22 49 6e 74 36 34 22 20 2f 3e 0d 0a 20 20 20 20  "Int64" />..    
0f20: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
0f30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
0f40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0f50: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0f60: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
0f70: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0f80: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
0f90: 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20  alue to use...  
0fa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
0fb0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
0fc0: 69 63 20 76 6f 69 64 20 53 65 74 49 6e 74 36 34  ic void SetInt64
0fd0: 28 6c 6f 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20  (long value)..  
0fe0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ff0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
1000: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
1010: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1020: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
1030: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
1040: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
1050: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1060: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1070: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
1080: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
1090: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
10a0: 34 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75  4(pContext, valu
10b0: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
10c0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
10d0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
10e0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
10f0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
1100: 34 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e 74 65  4_interop(pConte
1110: 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  xt, ref value);.
1120: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1130: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
1140: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
1150: 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69 66  ption();..#endif
1160: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1170: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11e0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
11f0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1200: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1210: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
1220: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
1230: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
1240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1260: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
1270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1280: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
1290: 72 69 6e 67 22 20 2f 3e 20 76 61 6c 75 65 20 74  ring" /> value t
12a0: 6f 20 75 73 65 2e 20 20 54 68 69 73 20 76 61 6c  o use.  This val
12b0: 75 65 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ue will be..    
12c0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65      /// converte
12d0: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
12e0: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
12f0: 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20   being used...  
1300: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1310: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
1320: 69 63 20 76 6f 69 64 20 53 65 74 53 74 72 69 6e  ic void SetStrin
1330: 67 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d  g(string value).
1340: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1350: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1360: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1370: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1380: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1390: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
13a0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
13c0: 5b 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74  [] bytes = SQLit
13d0: 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42  eString.GetUtf8B
13e0: 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76  ytesFromString(v
13f0: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
1400: 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
1410: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1420: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1430: 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
1440: 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65  Exception("value
1450: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
1460: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
1470: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1480: 65 73 75 6c 74 5f 74 65 78 74 28 0d 0a 20 20 20  esult_text(..   
1490: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
14a0: 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62 79  ntext, bytes, by
14b0: 74 65 73 2e 4c 65 6e 67 74 68 2c 20 28 49 6e 74  tes.Length, (Int
14c0: 50 74 72 29 28 2d 31 29 29 3b 0d 0a 20 20 20 20  Ptr)(-1));..    
14d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1520: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1530: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1540: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
1550: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
1560: 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70  result to the sp
1570: 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
1580: 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 0d 0a 20  f="String" />.. 
1590: 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65         /// value
15a0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6e 20 65   containing an e
15b0: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
15c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
15f0: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1600: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1610: 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 76  ef="String" /> v
1620: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  alue containing 
1630: 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
1640: 65 20 74 65 78 74 2e 0d 0a 20 20 20 20 20 20 20  e text...       
1650: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
1660: 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65  will be converte
1670: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
1680: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
1690: 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20 20   being..        
16a0: 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
16b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16d0: 76 6f 69 64 20 53 65 74 45 72 72 6f 72 28 73 74  void SetError(st
16e0: 72 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ring value)..   
16f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1700: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
1710: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1730: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1740: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1750: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1760: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
1770: 79 74 65 73 20 3d 20 53 51 4c 69 74 65 53 74 72  ytes = SQLiteStr
1780: 69 6e 67 2e 47 65 74 55 74 66 38 42 79 74 65 73  ing.GetUtf8Bytes
1790: 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
17a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17b0: 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
17c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
17d0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
17e0: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
17f0: 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
1800: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
1810: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1820: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
1830: 74 5f 65 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  t_error(..      
1840: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65            pConte
1850: 78 74 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73  xt, bytes, bytes
1860: 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20  .Length);..     
1870: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
18f0: 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72  ts the context r
1900: 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65  esult to the spe
1910: 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
1920: 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ="SQLiteErrorCod
1930: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
1940: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
1950: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1960: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1970: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
1980: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1990: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19a0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 22  SQLiteErrorCode"
19b0: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65   /> value to use
19c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19e0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
19f0: 45 72 72 6f 72 43 6f 64 65 28 53 51 4c 69 74 65  ErrorCode(SQLite
1a00: 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29  ErrorCode value)
1a10: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1a20: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
1a30: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
1a40: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1a50: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
1a60: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
1a70: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
1a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1a90: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1aa0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
1ab0: 65 72 72 6f 72 5f 63 6f 64 65 28 70 43 6f 6e 74  error_code(pCont
1ac0: 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ext, value);..  
1ad0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ae0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1b40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b50: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
1b60: 74 20 72 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74  t result to cont
1b70: 61 69 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f  ain the error co
1b80: 64 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47  de SQLITE_TOOBIG
1b90: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ba0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1bb0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
1bc0: 65 74 45 72 72 6f 72 54 6f 6f 42 69 67 28 29 0d  etErrorTooBig().
1bd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1be0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1bf0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1c00: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1c10: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1c20: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
1c30: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
1c50: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1c60: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1c70: 72 72 6f 72 5f 74 6f 6f 62 69 67 28 70 43 6f 6e  rror_toobig(pCon
1c80: 74 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  text);..        
1c90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1cf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d00: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
1d10: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
1d20: 6c 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  lt to contain th
1d30: 65 20 65 72 72 6f 72 20 63 6f 64 65 20 53 51 4c  e error code SQL
1d40: 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a 20 20 20 20  ITE_NOMEM...    
1d50: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
1d70: 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f 72  ic void SetError
1d80: 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a 20 20 20 20  NoMemory()..    
1d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1da0: 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20     if (pContext 
1db0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dd0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
1de0: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
1df0: 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tion();....     
1e00: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1e10: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1e20: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
1e30: 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65 78 74 29 3b  nomem(pContext);
1e40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e50: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ea0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1eb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ec0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
1ed0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1ee0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1ef0: 65 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f  ee cref="Byte" /
1f00: 3e 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20  > array..       
1f10: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
1f20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1f30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1f40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1f50: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1f60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1f70: 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79  ="Byte" /> array
1f80: 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a   value to use...
1f90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1fa0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
1fb0: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 42 6c 6f  blic void SetBlo
1fc0: 62 28 62 79 74 65 5b 5d 20 76 61 6c 75 65 29 0d  b(byte[] value).
1fd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1ff0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
2000: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2010: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2020: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
2030: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
2040: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2050: 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2070: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
2080: 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
2090: 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20  "value");....   
20a0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
20b0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
20c0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
20d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
20e0: 20 20 20 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c     pContext, val
20f0: 75 65 2c 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68  ue, value.Length
2100: 2c 20 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b  , (IntPtr)(-1));
2110: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2120: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2170: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2180: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2190: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
21a0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
21b0: 61 20 42 4c 4f 42 20 6f 66 20 7a 65 72 6f 73 20  a BLOB of zeros 
21c0: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
21d0: 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20 20   size...        
21e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2200: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
2210: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2220: 65 20 6e 75 6d 62 65 72 20 6f 66 20 7a 65 72 6f  e number of zero
2230: 20 62 79 74 65 73 20 74 6f 20 75 73 65 20 66 6f   bytes to use fo
2240: 72 20 74 68 65 20 42 4c 4f 42 20 63 6f 6e 74 65  r the BLOB conte
2250: 78 74 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20  xt result...    
2260: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2270: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2280: 20 76 6f 69 64 20 53 65 74 5a 65 72 6f 42 6c 6f   void SetZeroBlo
2290: 62 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20  b(int value)..  
22a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22b0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
22c0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
22d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22e0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
22f0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
2300: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  eption();....   
2310: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
2320: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2330: 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
2340: 62 6c 6f 62 28 70 43 6f 6e 74 65 78 74 2c 20 76  blob(pContext, v
2350: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
2360: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23d0: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
23e0: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
23f0: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
2400: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
2410: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 2e 0d  QLiteValue" />..
2420: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2440: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2450: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
2460: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2470: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2480: 65 22 20 2f 3e 20 74 6f 20 75 73 65 2e 0d 0a 20  e" /> to use... 
2490: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24a0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
24b0: 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75  lic void SetValu
24c0: 65 28 53 51 4c 69 74 65 56 61 6c 75 65 20 76 61  e(SQLiteValue va
24d0: 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lue)..        {.
24e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
24f0: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
2500: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2510: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
2520: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
2530: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
2540: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2550: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
2560: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2570: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
2580: 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
2590: 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a  tion("value");..
25a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
25b0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
25c0: 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  s.sqlite3_result
25d0: 5f 76 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  _value(..       
25e0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78           pContex
25f0: 74 2c 20 76 61 6c 75 65 2e 4e 61 74 69 76 65 48  t, value.NativeH
2600: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
2610: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2620: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
2630: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2640: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
26a0: 53 51 4c 69 74 65 56 61 6c 75 65 20 48 65 6c 70  SQLiteValue Help
26b0: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
26c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26d0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
26e0: 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 61 6c  represents a val
26f0: 75 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ue from the SQLi
2700: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2710: 74 68 61 74 20 63 61 6e 20 62 65 0d 0a 20 20 20  that can be..   
2720: 20 2f 2f 2f 20 70 61 73 73 65 64 20 74 6f 20 74   /// passed to t
2730: 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  he sqlite3_value
2740: 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69 61  _*() and associa
2750: 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  ted functions...
2760: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2770: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
2780: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2790: 74 65 56 61 6c 75 65 20 3a 20 49 53 51 4c 69 74  teValue : ISQLit
27a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20  eNativeHandle.. 
27b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
27c0: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
27d0: 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ta..        /// 
27e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27f0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2800: 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 2e 0d  e value handle..
2810: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2820: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2830: 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
2840: 70 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  pValue;..       
2850: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2860: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28b0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
28c0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
28d0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
28e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28f0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
2900: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
2910: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
2920: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
2930: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
2940: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 68 61      /// value ha
2950: 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndle...        /
2960: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2970: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2980: 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
2990: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
29a0: 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68  e native value h
29b0: 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20  andle to use... 
29c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  am>..        pri
29e0: 76 61 74 65 20 53 51 4c 69 74 65 56 61 6c 75 65  vate SQLiteValue
29f0: 28 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 0d  (IntPtr pValue).
2a00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2a10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 56 61          this.pVa
2a20: 6c 75 65 20 3d 20 70 56 61 6c 75 65 3b 0d 0a 20  lue = pValue;.. 
2a30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a40: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2a50: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2aa0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2ab0: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
2ac0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2ad0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ae0: 20 20 20 2f 2f 2f 20 49 6e 76 61 6c 69 64 61 74     /// Invalidat
2af0: 65 73 20 74 68 65 20 6e 61 74 69 76 65 20 76 61  es the native va
2b00: 6c 75 65 20 68 61 6e 64 6c 65 2c 20 74 68 65 72  lue handle, ther
2b10: 65 62 79 20 70 72 65 76 65 6e 74 69 6e 67 20 66  eby preventing f
2b20: 75 72 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  urther..        
2b30: 2f 2f 2f 20 61 63 63 65 73 73 20 74 6f 20 69 74  /// access to it
2b40: 20 66 72 6f 6d 20 74 68 69 73 20 6f 62 6a 65 63   from this objec
2b50: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2b60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b70: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2b80: 76 61 74 65 20 76 6f 69 64 20 50 72 65 76 65 6e  vate void Preven
2b90: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 0d  tNativeAccess().
2ba0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2bb0: 20 20 20 20 20 20 20 20 70 56 61 6c 75 65 20 3d          pValue =
2bc0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
2bd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2be0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2bf0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c40: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2c50: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72 73  on Internal Mars
2c60: 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  hal Helper Metho
2c70: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2c80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c90: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2ca0: 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
2cb0: 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c   to a native sql
2cc0: 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72 75 63  ite3_value struc
2cd0: 74 75 72 65 20 69 6e 74 6f 0d 0a 20 20 20 20 20  ture into..     
2ce0: 20 20 20 2f 2f 2f 20 61 20 6d 61 6e 61 67 65 64     /// a managed
2cf0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
2d00: 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
2d10: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2d30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2d40: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2d50: 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
2d60: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
2d70: 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74  pointer to a nat
2d80: 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ive sqlite3_valu
2d90: 65 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 63  e structure to c
2da0: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
2db0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2dc0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2dd0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
2de0: 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 3c 73  / The managed <s
2df0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
2e00: 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  alue" /> object 
2e10: 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75 6c 6c  instance or null
2e20: 20 75 70 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f   upon..        /
2e30: 2f 2f 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  // failure...   
2e40: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2e50: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ns>..        int
2e60: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 53 51 4c  ernal static SQL
2e70: 69 74 65 56 61 6c 75 65 20 46 72 6f 6d 49 6e 74  iteValue FromInt
2e80: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
2e90: 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d    IntPtr pValue.
2ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
2eb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ec0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
2ed0: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2ee0: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
2ef0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f00: 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 56 61 6c  rn new SQLiteVal
2f10: 75 65 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  ue(pValue);..   
2f20: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2f30: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2f80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2f90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2fa0: 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67 69 63  Converts a logic
2fb0: 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  al array of nati
2fc0: 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6e  ve pointers to n
2fd0: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61  ative sqlite3_va
2fe0: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lue..        ///
2ff0: 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 74 6f   structures into
3000: 20 61 20 6d 61 6e 61 67 65 64 20 61 72 72 61 79   a managed array
3010: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
3020: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 0d 0a  QLiteValue" />..
3030: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
3040: 63 74 20 69 6e 73 74 61 6e 63 65 73 2e 0d 0a 20  ct instances... 
3050: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
3060: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
3070: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
3080: 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
3090: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
30a0: 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68  f elements in th
30b0: 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
30c0: 6f 66 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  of native sqlite
30d0: 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  3_value..       
30e0: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 73 2e   /// structures.
30f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3100: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
3110: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3120: 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
3130: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
3140: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c  pointer to the l
3150: 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
3160: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
3170: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  alue..        //
3180: 2f 20 73 74 72 75 63 74 75 72 65 73 20 74 6f 20  / structures to 
3190: 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
31a0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
31b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
31c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
31d0: 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 61  // The managed a
31e0: 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
31f0: 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
3200: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
3210: 63 65 73 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  ces or..        
3220: 2f 2f 2f 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61  /// null upon fa
3230: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
3240: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3250: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
3260: 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 56 61   static SQLiteVa
3270: 6c 75 65 5b 5d 20 41 72 72 61 79 46 72 6f 6d 53  lue[] ArrayFromS
3280: 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20  izeAndIntPtr(.. 
3290: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
32a0: 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
32b0: 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20    IntPtr argv.. 
32c0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
32d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32e0: 20 20 20 20 20 69 66 20 28 61 72 67 63 20 3c 20       if (argc < 
32f0: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
3300: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
3310: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3320: 69 66 20 28 61 72 67 76 20 3d 3d 20 49 6e 74 50  if (argv == IntP
3330: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
3340: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3350: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
3360: 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
3370: 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  e[] result = new
3380: 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 61 72 67   SQLiteValue[arg
3390: 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  c];....         
33a0: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65     for (int inde
33b0: 78 20 3d 20 30 2c 20 6f 66 66 73 65 74 20 3d 20  x = 0, offset = 
33c0: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
33d0: 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3c 20          index < 
33e0: 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d 0a  result.Length;..
33f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3400: 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f 66 66      index++, off
3410: 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69  set += IntPtr.Si
3420: 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze)..           
3430: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3440: 20 20 20 20 49 6e 74 50 74 72 20 70 41 72 67 20      IntPtr pArg 
3450: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
3460: 52 65 61 64 49 6e 74 50 74 72 28 61 72 67 76 2c  ReadIntPtr(argv,
3470: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
3480: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
3490: 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28 70 41  ult[index] = (pA
34a0: 72 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  rg != IntPtr.Zer
34b0: 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  o) ?..          
34c0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
34d0: 4c 69 74 65 56 61 6c 75 65 28 70 41 72 67 29 20  LiteValue(pArg) 
34e0: 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
34f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3500: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
3510: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
3520: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
3530: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
3540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3580: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3590: 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
35a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65  eNativeHandle Me
35b0: 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
35c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
35d0: 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
35e0: 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
35f0: 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68   SQLite native h
3600: 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64  andle associated
3610: 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
3620: 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
3630: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
3640: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3650: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3660: 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61   IntPtr NativeHa
3670: 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
3680: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
3690: 20 7b 20 72 65 74 75 72 6e 20 70 56 61 6c 75 65   { return pValue
36a0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
36b0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
36c0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
36d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3710: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
3720: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
3730: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
3740: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
3750: 20 70 65 72 73 69 73 74 65 64 3b 0d 0a 20 20 20   persisted;..   
3760: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3770: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3780: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
3790: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
37a0: 51 4c 69 74 65 20 76 61 6c 75 65 20 68 61 73 20  QLite value has 
37b0: 62 65 65 6e 20 73 75 63 63 65 73 73 66 75 6c 6c  been successfull
37c0: 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  y..        /// p
37d0: 65 72 73 69 73 74 65 64 20 61 73 20 61 20 6d 61  ersisted as a ma
37e0: 6e 61 67 65 64 20 76 61 6c 75 65 20 77 69 74 68  naged value with
37f0: 69 6e 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  in this object i
3800: 6e 73 74 61 6e 63 65 20 28 69 2e 65 2e 20 74 68  nstance (i.e. th
3810: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
3820: 73 65 65 20 63 72 65 66 3d 22 56 61 6c 75 65 22  see cref="Value"
3830: 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 6d 61 79   /> property may
3840: 20 74 68 65 6e 20 62 65 20 72 65 61 64 20 73 75   then be read su
3850: 63 63 65 73 73 66 75 6c 6c 79 29 2e 0d 0a 20 20  ccessfully)...  
3860: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3870: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
3880: 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72 73 69 73  blic bool Persis
3890: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ted..        {..
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
38b0: 7b 20 72 65 74 75 72 6e 20 70 65 72 73 69 73 74  { return persist
38c0: 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ed; }..        }
38d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3920: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
3930: 72 69 76 61 74 65 20 6f 62 6a 65 63 74 20 76 61  rivate object va
3940: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue;..        //
3950: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3960: 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20       /// If the 
3970: 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 66 6f  managed value fo
3980: 72 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  r this object in
3990: 73 74 61 6e 63 65 20 69 73 20 61 76 61 69 6c 61  stance is availa
39a0: 62 6c 65 20 28 69 2e 65 2e 20 69 74 0d 0a 20 20  ble (i.e. it..  
39b0: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 62 65        /// has be
39c0: 65 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 70 65  en previously pe
39d0: 72 73 69 73 74 65 64 20 76 69 61 20 74 68 65 20  rsisted via the 
39e0: 3c 73 65 65 20 63 72 65 66 3d 22 50 65 72 73 69  <see cref="Persi
39f0: 73 74 22 20 2f 3e 29 20 6d 65 74 68 6f 64 2c 0d  st" />) method,.
3a00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61  .        /// tha
3a10: 74 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  t value is retur
3a20: 6e 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  ned; otherwise, 
3a30: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20  an exception is 
3a40: 74 68 72 6f 77 6e 2e 20 20 54 68 65 0d 0a 20 20  thrown.  The..  
3a50: 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
3a60: 65 64 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20  ed value may be 
3a70: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
3a80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3a90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62         public ob
3aa0: 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20 20 20 20  ject Value..    
3ab0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ac0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
3ad0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ae0: 20 20 20 20 20 20 20 69 66 20 28 21 70 65 72 73         if (!pers
3af0: 69 73 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20  isted)..        
3b00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3b20: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
3b30: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
3b40: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 61               "va
3b60: 6c 75 65 20 77 61 73 20 6e 6f 74 20 70 65 72 73  lue was not pers
3b70: 69 73 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20  isted");..      
3b80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3ba0: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
3bb0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3bc0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3bd0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3be0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3c30: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
3c40: 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
3c50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3c60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3c70: 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
3c80: 75 72 6e 73 20 74 68 65 20 74 79 70 65 20 61 66  urns the type af
3c90: 66 69 6e 69 74 79 20 61 73 73 6f 63 69 61 74 65  finity associate
3ca0: 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75  d with this valu
3cb0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
3cc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3cd0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
3ce0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
3cf0: 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79  he type affinity
3d00: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3d10: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
3d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
3d30: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
3d40: 62 6c 69 63 20 54 79 70 65 41 66 66 69 6e 69 74  blic TypeAffinit
3d50: 79 20 47 65 74 54 79 70 65 41 66 66 69 6e 69 74  y GetTypeAffinit
3d60: 79 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  y()..        {..
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3d80: 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
3d90: 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 54 79  .Zero) return Ty
3da0: 70 65 41 66 66 69 6e 69 74 79 2e 4e 6f 6e 65 3b  peAffinity.None;
3db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3dc0: 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
3dd0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
3de0: 5f 76 61 6c 75 65 5f 74 79 70 65 28 70 56 61 6c  _value_type(pVal
3df0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
3e00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e50: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
3e60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3e70: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
3e80: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  d returns the nu
3e90: 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61 73  mber of bytes as
3ea0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
3eb0: 69 73 20 76 61 6c 75 65 2c 20 69 66 0d 0a 20 20  is value, if..  
3ec0: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 72 65 66        /// it ref
3ed0: 65 72 73 20 74 6f 20 61 20 55 54 46 2d 38 20 65  ers to a UTF-8 e
3ee0: 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 2e 0d 0a  ncoded string...
3ef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
3f00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3f10: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3f20: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
3f30: 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61  umber of bytes a
3f40: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
3f50: 68 69 73 20 76 61 6c 75 65 2e 20 20 54 68 65 20  his value.  The 
3f60: 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 0d 0a  returned value..
3f70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79 20          /// may 
3f80: 62 65 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  be zero...      
3f90: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
3fa0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3fb0: 20 69 6e 74 20 47 65 74 42 79 74 65 73 28 29 0d   int GetBytes().
3fc0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3fd0: 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c          if (pVal
3fe0: 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ue == IntPtr.Zer
3ff0: 6f 29 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20  o) return 0;..  
4000: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4010: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
4020: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c  hods.sqlite3_val
4030: 75 65 5f 62 79 74 65 73 28 70 56 61 6c 75 65 29  ue_bytes(pValue)
4040: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
4050: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
4060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
40a0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
40b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
40c0: 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
40d0: 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
40e0: 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20  cref="Int32" /> 
40f0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
4100: 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
4110: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
4120: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4130: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
4140: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
4150: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
4160: 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 61 73  ef="Int32" /> as
4170: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
4180: 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  is value...     
4190: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
41a0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
41b0: 63 20 69 6e 74 20 47 65 74 49 6e 74 28 29 0d 0a  c int GetInt()..
41c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
41d0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
41e0: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
41f0: 29 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74  ) return default
4200: 28 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  (int);..        
4210: 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66      return Unsaf
4220: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4230: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
4240: 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  (pValue);..     
4250: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
4260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
42b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
42c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
42d0: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
42e0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
42f0: 74 36 34 22 20 2f 3e 20 61 73 73 6f 63 69 61 74  t64" /> associat
4300: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
4310: 20 2f 2f 2f 20 74 68 69 73 20 76 61 6c 75 65 2e   /// this value.
4320: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4330: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4340: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
4350: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
4360: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
4370: 34 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64  4" /> associated
4380: 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65   with this value
4390: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
43a0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
43b0: 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 47     public long G
43c0: 65 74 49 6e 74 36 34 28 29 0d 0a 20 20 20 20 20  etInt64()..     
43d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
43e0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
43f0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
4400: 75 72 6e 20 64 65 66 61 75 6c 74 28 6c 6f 6e 67  urn default(long
4410: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
4420: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4430: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4440: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
4450: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4460: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
4470: 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66  (pValue);..#elif
4480: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
4490: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  D..            l
44a0: 6f 6e 67 20 76 61 6c 75 65 20 3d 20 30 3b 0d 0a  ong value = 0;..
44b0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
44c0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
44d0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
44e0: 74 36 34 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c  t64_interop(pVal
44f0: 75 65 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  ue, ref value);.
4500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
4510: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73  urn value;..#els
4520: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  e..            t
4530: 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c  hrow new NotImpl
4540: 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e  ementedException
4550: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
4560: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4570: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
45c0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
45d0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
45e0: 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
45f0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
4600: 44 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63  Double" /> assoc
4610: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
4620: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
4630: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
4640: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4650: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
4660: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
4670: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  The <see cref="D
4680: 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63 69  ouble" /> associ
4690: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
46a0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
46b0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
46c0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f         public do
46d0: 75 62 6c 65 20 47 65 74 44 6f 75 62 6c 65 28 29  uble GetDouble()
46e0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
46f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
4700: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
4710: 72 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61 75  ro) return defau
4720: 6c 74 28 64 6f 75 62 6c 65 29 3b 0d 0a 0d 0a 23  lt(double);....#
4730: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
4740: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
4750: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4760: 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
4770: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
4780: 6c 75 65 5f 64 6f 75 62 6c 65 28 70 56 61 6c 75  lue_double(pValu
4790: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
47a0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
47b0: 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20           double 
47c0: 76 61 6c 75 65 20 3d 20 30 2e 30 3b 0d 0a 20 20  value = 0.0;..  
47d0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
47e0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
47f0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
4800: 6c 65 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c 75  le_interop(pValu
4810: 65 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d 0a  e, ref value);..
4820: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4830: 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73 65  rn value;..#else
4840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
4850: 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65  row new NotImple
4860: 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28  mentedException(
4870: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
4880: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4890: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
48a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
48e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
48f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
4900: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
4910: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
4920: 74 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69  tring" /> associ
4930: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a  ated with this..
4940: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
4950: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
4960: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4970: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4980: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
4990: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
49a0: 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69 61  ring" /> associa
49b0: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
49c0: 6c 75 65 2e 20 20 54 68 65 20 76 61 6c 75 65 20  lue.  The value 
49d0: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
49e0: 63 6f 6e 76 65 72 74 65 64 20 66 72 6f 6d 20 74  converted from t
49f0: 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
4a00: 67 20 70 72 69 6f 72 20 74 6f 20 62 65 69 6e 67  g prior to being
4a10: 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
4a20: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
4a30: 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
4a40: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 74 72  ic string GetStr
4a50: 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
4a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
4a70: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
4a80: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
4a90: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
4aa0: 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 3b       int length;
4ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
4ac0: 74 50 74 72 20 70 53 74 72 69 6e 67 3b 0d 0a 0d  tPtr pString;...
4ad0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
4ae0: 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
4af0: 20 20 6c 65 6e 67 74 68 20 3d 20 55 6e 73 61 66    length = Unsaf
4b00: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4b10: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
4b20: 65 73 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  es(pValue);..   
4b30: 20 20 20 20 20 20 20 20 20 70 53 74 72 69 6e 67           pString
4b40: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
4b50: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
4b60: 61 6c 75 65 5f 74 65 78 74 28 70 56 61 6c 75 65  alue_text(pValue
4b70: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
4b80: 20 20 20 20 20 20 20 6c 65 6e 67 74 68 20 3d 20         length = 
4b90: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
4ba0: 20 20 70 53 74 72 69 6e 67 20 3d 20 55 6e 73 61    pString = Unsa
4bb0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
4bc0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
4bd0: 78 74 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  xt_interop(..   
4be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 56 61               pVa
4bf0: 6c 75 65 2c 20 72 65 66 20 6c 65 6e 67 74 68 29  lue, ref length)
4c00: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
4c10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4c20: 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72  SQLiteString.Str
4c30: 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
4c40: 72 28 70 53 74 72 69 6e 67 2c 20 6c 65 6e 67 74  r(pString, lengt
4c50: 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  h);..        }..
4c60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
4c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cb0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
4cc0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4cd0: 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64      /// Gets and
4ce0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65   returns the <se
4cf0: 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e  e cref="Byte" />
4d00: 20 61 72 72 61 79 20 61 73 73 6f 63 69 61 74 65   array associate
4d10: 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
4d20: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
4d30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
4d40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
4d50: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
4d60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
4d70: 3c 73 65 65 20 63 72 65 66 3d 22 42 79 74 65 22  <see cref="Byte"
4d80: 20 2f 3e 20 61 72 72 61 79 20 61 73 73 6f 63 69   /> array associ
4d90: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
4da0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
4db0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4dc0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
4dd0: 74 65 5b 5d 20 47 65 74 42 6c 6f 62 28 29 0d 0a  te[] GetBlob()..
4de0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4df0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
4e00: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
4e10: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
4e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
4e30: 74 75 72 6e 20 53 51 4c 69 74 65 42 79 74 65 73  turn SQLiteBytes
4e40: 2e 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20  .FromIntPtr(..  
4e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
4e60: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
4e70: 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  s.sqlite3_value_
4e80: 62 6c 6f 62 28 70 56 61 6c 75 65 29 2c 20 47 65  blob(pValue), Ge
4e90: 74 42 79 74 65 73 28 29 29 3b 0d 0a 20 20 20 20  tBytes());..    
4ea0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4eb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ef0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4f00: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4f10: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
4f20: 73 65 73 20 74 68 65 20 6e 61 74 69 76 65 20 76  ses the native v
4f30: 61 6c 75 65 20 68 61 6e 64 6c 65 20 74 6f 20 6f  alue handle to o
4f40: 62 74 61 69 6e 20 61 6e 64 20 73 74 6f 72 65 20  btain and store 
4f50: 74 68 65 20 6d 61 6e 61 67 65 64 20 76 61 6c 75  the managed valu
4f60: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  e..        /// f
4f70: 6f 72 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  or this object i
4f80: 6e 73 74 61 6e 63 65 2c 20 74 68 75 73 20 73 61  nstance, thus sa
4f90: 76 69 6e 67 20 69 74 20 66 6f 72 20 6c 61 74 65  ving it for late
4fa0: 72 20 75 73 65 2e 20 20 54 68 65 20 74 79 70 65  r use.  The type
4fb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66  ..        /// of
4fc0: 20 74 68 65 20 6d 61 6e 61 67 65 64 20 76 61 6c   the managed val
4fd0: 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64  ue is determined
4fe0: 20 62 79 20 74 68 65 20 74 79 70 65 20 61 66 66   by the type aff
4ff0: 69 6e 69 74 79 20 6f 66 20 74 68 65 0d 0a 20 20  inity of the..  
5000: 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
5010: 20 76 61 6c 75 65 2e 20 20 49 66 20 74 68 65 20   value.  If the 
5020: 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 69 73  type affinity is
5030: 20 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65 64 20   not recognized 
5040: 62 79 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20  by this..       
5050: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2c 20 6e 6f 20   /// method, no 
5060: 77 6f 72 6b 20 69 73 20 64 6f 6e 65 20 61 6e 64  work is done and
5070: 20 66 61 6c 73 65 20 69 73 20 72 65 74 75 72 6e   false is return
5080: 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
5090: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
50a0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
50b0: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
50c0: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
50d0: 6e 61 74 69 76 65 20 76 61 6c 75 65 20 77 61 73  native value was
50e0: 20 70 65 72 73 69 73 74 65 64 20 73 75 63 63 65   persisted succe
50f0: 73 73 66 75 6c 6c 79 2e 0d 0a 20 20 20 20 20 20  ssfully...      
5100: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
5110: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
5120: 20 62 6f 6f 6c 20 50 65 72 73 69 73 74 28 29 0d   bool Persist().
5130: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
5140: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28          switch (
5150: 47 65 74 54 79 70 65 41 66 66 69 6e 69 74 79 28  GetTypeAffinity(
5160: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
5170: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5180: 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69     case TypeAffi
5190: 6e 69 74 79 2e 55 6e 69 6e 69 74 69 61 6c 69 7a  nity.Uninitializ
51a0: 65 64 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed:..           
51b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
51c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51d0: 20 20 20 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c      value = null
51e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
51f0: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65             Preve
5200: 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29  ntNativeAccess()
5210: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5220: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
5230: 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74  n (persisted = t
5240: 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
5250: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
5270: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
5280: 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20 20 20  Int64:..        
5290: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
52a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52b0: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 47         value = G
52c0: 65 74 49 6e 74 36 34 28 29 3b 0d 0a 20 20 20 20  etInt64();..    
52d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52e0: 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76      PreventNativ
52f0: 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20  eAccess();..    
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5310: 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73      return (pers
5320: 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a  isted = true);..
5330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5340: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5350: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
5360: 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 3a  Affinity.Double:
5370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5380: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53a0: 20 76 61 6c 75 65 20 3d 20 47 65 74 44 6f 75 62   value = GetDoub
53b0: 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  le();..         
53c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
53d0: 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65  reventNativeAcce
53e0: 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ss();..         
53f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5400: 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64  eturn (persisted
5410: 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20   = true);..     
5420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5440: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5450: 69 74 79 2e 54 65 78 74 3a 0d 0a 20 20 20 20 20  ity.Text:..     
5460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5480: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
5490: 3d 20 47 65 74 53 74 72 69 6e 67 28 29 3b 0d 0a  = GetString();..
54a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54b0: 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e          PreventN
54c0: 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a  ativeAccess();..
54d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
54f0: 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65  persisted = true
5500: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5510: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5520: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
5530: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f  TypeAffinity.Blo
5540: 62 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b:..            
5550: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5570: 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74 42 79     value = GetBy
5580: 74 65 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  tes();..        
5590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55a0: 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63  PreventNativeAcc
55b0: 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ess();..        
55c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55d0: 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65  return (persiste
55e0: 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20  d = true);..    
55f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5600: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
5610: 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69     case TypeAffi
5620: 6e 69 74 79 2e 4e 75 6c 6c 3a 0d 0a 20 20 20 20  nity.Null:..    
5630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5640: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5650: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
5660: 20 3d 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 3b   = DBNull.Value;
5670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5680: 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e            Preven
5690: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b  tNativeAccess();
56a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
56b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
56c0: 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72   (persisted = tr
56d0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
56e0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
56f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66               def
5700: 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20  ault:..         
5710: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5730: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
5740: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
5750: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5760: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5770: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
5780: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
5790: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
57a0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
57b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57f0: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
5800: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  n SQLiteIndexCon
5810: 73 74 72 61 69 6e 74 4f 70 20 45 6e 75 6d 65 72  straintOp Enumer
5820: 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ation..    /// <
5830: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
5840: 2f 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20  / These are the 
5850: 61 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73 20 66  allowed values f
5860: 6f 72 20 74 68 65 20 6f 70 65 72 61 74 6f 72 73  or the operators
5870: 20 74 68 61 74 20 61 72 65 20 70 61 72 74 20 6f   that are part o
5880: 66 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e  f a..    /// con
5890: 73 74 72 61 69 6e 74 20 74 65 72 6d 20 69 6e 20  straint term in 
58a0: 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65  the WHERE clause
58b0: 20 6f 66 20 61 20 71 75 65 72 79 20 74 68 61 74   of a query that
58c0: 20 75 73 65 73 20 61 20 76 69 72 74 75 61 6c 0d   uses a virtual.
58d0: 0a 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 2e 0d  .    /// table..
58e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
58f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
5900: 65 6e 75 6d 20 53 51 4c 69 74 65 49 6e 64 65 78  enum SQLiteIndex
5910: 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 3a 20 62  ConstraintOp : b
5920: 79 74 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  yte..    {..    
5930: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5940: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
5950: 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73  his value repres
5960: 65 6e 74 73 20 74 68 65 20 65 71 75 61 6c 69 74  ents the equalit
5970: 79 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  y operator...   
5980: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5990: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 45 71 75  ry>..        Equ
59a0: 61 6c 54 6f 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20  alTo = 2,....   
59b0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
59c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
59d0: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
59e0: 73 65 6e 74 73 20 74 68 65 20 67 72 65 61 74 65  sents the greate
59f0: 72 20 74 68 61 6e 20 6f 70 65 72 61 74 6f 72 2e  r than operator.
5a00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
5a10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5a20: 20 20 47 72 65 61 74 65 72 54 68 61 6e 20 3d 20    GreaterThan = 
5a30: 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  4,....        //
5a40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5a50: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
5a60: 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74  lue represents t
5a70: 68 65 20 6c 65 73 73 20 74 68 61 6e 20 6f 72 20  he less than or 
5a80: 65 71 75 61 6c 20 74 6f 20 6f 70 65 72 61 74 6f  equal to operato
5a90: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
5aa0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5ab0: 20 20 20 20 4c 65 73 73 54 68 61 6e 4f 72 45 71      LessThanOrEq
5ac0: 75 61 6c 54 6f 20 3d 20 38 2c 0d 0a 0d 0a 20 20  ualTo = 8,....  
5ad0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5ae0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5af0: 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72   This value repr
5b00: 65 73 65 6e 74 73 20 74 68 65 20 6c 65 73 73 20  esents the less 
5b10: 74 68 61 6e 20 6f 70 65 72 61 74 6f 72 2e 0d 0a  than operator...
5b20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
5b30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5b40: 4c 65 73 73 54 68 61 6e 20 3d 20 31 36 2c 0d 0a  LessThan = 16,..
5b50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
5b60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
5b70: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
5b80: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 67  represents the g
5b90: 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65  reater than or e
5ba0: 71 75 61 6c 20 74 6f 20 6f 70 65 72 61 74 6f 72  qual to operator
5bb0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5bc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5bd0: 20 20 20 47 72 65 61 74 65 72 54 68 61 6e 4f 72     GreaterThanOr
5be0: 45 71 75 61 6c 54 6f 20 3d 20 33 32 2c 0d 0a 0d  EqualTo = 32,...
5bf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
5c00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5c10: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72  /// This value r
5c20: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 4d 41  epresents the MA
5c30: 54 43 48 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20  TCH operator... 
5c40: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
5c50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4d  mary>..        M
5c60: 61 74 63 68 20 3d 20 36 34 2c 0d 0a 0d 0a 20 20  atch = 64,....  
5c70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5c80: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5c90: 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72   This value repr
5ca0: 65 73 65 6e 74 73 20 74 68 65 20 4c 49 4b 45 20  esents the LIKE 
5cb0: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
5cc0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5cd0: 3e 0d 0a 20 20 20 20 20 20 20 20 4c 69 6b 65 20  >..        Like 
5ce0: 3d 20 36 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  = 65,....       
5cf0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5d00: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
5d10: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
5d20: 73 20 74 68 65 20 47 4c 4f 42 20 6f 70 65 72 61  s the GLOB opera
5d30: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
5d40: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5d50: 20 20 20 20 20 20 47 6c 6f 62 20 3d 20 36 36 2c        Glob = 66,
5d60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
5d70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5d80: 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75     /// This valu
5d90: 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  e represents the
5da0: 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f 72   REGEXP operator
5db0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5dc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5dd0: 20 20 20 52 65 67 65 78 70 20 3d 20 36 37 0d 0a     Regexp = 67..
5de0: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
5df0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
5e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e40: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
5e50: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e  #region SQLiteIn
5e60: 64 65 78 46 6c 61 67 73 20 45 6e 75 6d 65 72 61  dexFlags Enumera
5e70: 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  tion..    /// <s
5e80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
5e90: 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20 61   These are the a
5ea0: 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73 20 66 6f  llowed values fo
5eb0: 72 20 74 68 65 20 69 6e 64 65 78 20 66 6c 61 67  r the index flag
5ec0: 73 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  s from the..    
5ed0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
5ee0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
5ef0: 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f  ule.BestIndex" /
5f00: 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f  > method...    /
5f10: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5f20: 20 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20     [Flags()]..  
5f30: 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
5f40: 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 0d 0a  LiteIndexFlags..
5f50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
5f60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5f70: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 73 70 65        /// No spe
5f80: 63 69 61 6c 20 68 61 6e 64 6c 69 6e 67 2e 20 20  cial handling.  
5f90: 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61  This is the defa
5fa0: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ult...        //
5fb0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5fc0: 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20 30 78 30        None = 0x0
5fd0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ,....        ///
5fe0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5ff0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
6000: 75 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  ue indicates tha
6010: 74 20 74 68 65 20 73 63 61 6e 20 6f 66 20 74 68  t the scan of th
6020: 65 20 69 6e 64 65 78 20 77 69 6c 6c 20 76 69 73  e index will vis
6030: 69 74 20 61 74 0d 0a 20 20 20 20 20 20 20 20 2f  it at..        /
6040: 2f 2f 20 6d 6f 73 74 20 6f 6e 65 20 72 6f 77 2e  // most one row.
6050: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6060: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6070: 20 20 53 63 61 6e 55 6e 69 71 75 65 20 3d 20 30    ScanUnique = 0
6080: 78 31 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  x1..    }..    #
6090: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
60a0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
60b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
60f0: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
6100: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
6110: 74 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a  t Helper Class..
6120: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6130: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
6140: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
6150: 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
6160: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
6170: 61 69 6e 74 20 73 74 72 75 63 74 75 72 65 0d 0a  aint structure..
6180: 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65      /// from the
6190: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
61a0: 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rary...    /// <
61b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
61c0: 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61  ublic sealed cla
61d0: 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ss SQLiteIndexCo
61e0: 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d  nstraint..    {.
61f0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
6200: 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72   Internal Constr
6210: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
6220: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6230: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
6240: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
6250: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
6260: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
6270: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
6280: 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
6290: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
62a0: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
62b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
62c0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
62d0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
62e0: 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20  nstraint">..    
62f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
6300: 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ve sqlite3_index
6310: 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72 75  _constraint stru
6320: 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d 0a 20  cture to use... 
6330: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
6340: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
6350: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
6360: 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20  xConstraint(..  
6370: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
6380: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
6390: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
63a0: 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e  traint constrain
63b0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
63c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
63d0: 74 68 69 73 28 63 6f 6e 73 74 72 61 69 6e 74 2e  this(constraint.
63e0: 69 43 6f 6c 75 6d 6e 2c 20 63 6f 6e 73 74 72 61  iColumn, constra
63f0: 69 6e 74 2e 6f 70 2c 20 63 6f 6e 73 74 72 61 69  int.op, constrai
6400: 6e 74 2e 75 73 61 62 6c 65 2c 0d 0a 20 20 20 20  nt.usable,..    
6410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
6420: 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f  onstraint.iTermO
6430: 66 66 73 65 74 29 0d 0a 20 20 20 20 20 20 20 20  ffset)..        
6440: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
6450: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
6460: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
6470: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6480: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
64d0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
64e0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
64f0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
6500: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6510: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
6520: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
6530: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
6540: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
6550: 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20 20 20  ied field..     
6560: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a     /// values...
6570: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
6580: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6590: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
65a0: 22 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20 20 20  "iColumn">..    
65b0: 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6f      /// Column o
65c0: 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65  n left-hand side
65d0: 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d   of constraint..
65e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
65f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
6600: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6610: 6f 70 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  op">..        //
6620: 2f 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f 70 65  / Constraint ope
6630: 72 61 74 6f 72 20 28 3c 73 65 65 20 63 72 65 66  rator (<see cref
6640: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  ="SQLiteIndexCon
6650: 73 74 72 61 69 6e 74 4f 70 22 20 2f 3e 29 2e 0d  straintOp" />)..
6660: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
6670: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
6680: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6690: 75 73 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  usable">..      
66a0: 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 74 68    /// True if th
66b0: 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73  is constraint is
66c0: 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20   usable...      
66d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
66e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
66f0: 61 6d 20 6e 61 6d 65 3d 22 69 54 65 72 6d 4f 66  am name="iTermOf
6700: 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
6710: 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e 61  /// Used interna
6720: 6c 6c 79 20 2d 20 3c 73 65 65 20 63 72 65 66 3d  lly - <see cref=
6730: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
6740: 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22  odule.BestIndex"
6750: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
6760: 20 73 68 6f 75 6c 64 20 69 67 6e 6f 72 65 2e 0d   should ignore..
6770: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
6780: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
6790: 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64  rivate SQLiteInd
67a0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20  exConstraint(.. 
67b0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
67c0: 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20  Column,..       
67d0: 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
67e0: 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 2c  ConstraintOp op,
67f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
6800: 74 65 20 75 73 61 62 6c 65 2c 0d 0a 20 20 20 20  te usable,..    
6810: 20 20 20 20 20 20 20 20 69 6e 74 20 69 54 65 72          int iTer
6820: 6d 4f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20  mOffset..       
6830: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
6840: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
6850: 68 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d 20 69 43  his.iColumn = iC
6860: 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
6870: 20 20 20 20 74 68 69 73 2e 6f 70 20 3d 20 6f 70      this.op = op
6880: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
6890: 68 69 73 2e 75 73 61 62 6c 65 20 3d 20 75 73 61  his.usable = usa
68a0: 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ble;..          
68b0: 20 20 74 68 69 73 2e 69 54 65 72 6d 4f 66 66 73    this.iTermOffs
68c0: 65 74 20 3d 20 69 54 65 72 6d 4f 66 66 73 65 74  et = iTermOffset
68d0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
68e0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
68f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
6900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6940: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
6950: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 46 69 65  egion Public Fie
6960: 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lds..        ///
6970: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6980: 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6f      /// Column o
6990: 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65  n left-hand side
69a0: 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d   of constraint..
69b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
69c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
69d0: 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c   public int iCol
69e0: 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  umn;....        
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a30: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
6a40: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6a50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
6a60: 73 74 72 61 69 6e 74 20 6f 70 65 72 61 74 6f 72  straint operator
6a70: 20 28 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c   (<see cref="SQL
6a80: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
6a90: 6e 74 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20 20 20  ntOp" />)...    
6aa0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6ab0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
6ac0: 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
6ad0: 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a  nstraintOp op;..
6ae0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
6af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
6b40: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6b50: 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 74     /// True if t
6b60: 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  his constraint i
6b70: 73 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20 20 20  s usable...     
6b80: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6b90: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
6ba0: 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a  c byte usable;..
6bb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
6bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
6c10: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6c20: 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65     /// Used inte
6c30: 72 6e 61 6c 6c 79 20 2d 20 3c 73 65 65 20 63 72  rnally - <see cr
6c40: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
6c50: 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
6c60: 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  ex" />..        
6c70: 2f 2f 2f 20 73 68 6f 75 6c 64 20 69 67 6e 6f 72  /// should ignor
6c80: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
6c90: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6ca0: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
6cb0: 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20  TermOffset;..   
6cc0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
6cd0: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
6ce0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
6cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6d40: 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49   #region SQLiteI
6d50: 6e 64 65 78 4f 72 64 65 72 42 79 20 48 65 6c 70  ndexOrderBy Help
6d60: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
6d70: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6d80: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
6d90: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e  represents the n
6da0: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e  ative sqlite3_in
6db0: 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74 72 75  dex_orderby stru
6dc0: 63 74 75 72 65 20 66 72 6f 6d 0d 0a 20 20 20 20  cture from..    
6dd0: 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20 63  /// the SQLite c
6de0: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
6df0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
6e00: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61  ..    public sea
6e10: 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
6e20: 49 6e 64 65 78 4f 72 64 65 72 42 79 0d 0a 20 20  IndexOrderBy..  
6e30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
6e40: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f  gion Internal Co
6e50: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
6e60: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6e70: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
6e80: 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
6e90: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
6ea0: 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70  ass using the sp
6eb0: 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a  ecified native..
6ec0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
6ed0: 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
6ee0: 79 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  y structure...  
6ef0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6f00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
6f10: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
6f20: 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20 20 20  rderBy">..      
6f30: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
6f40: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f   sqlite3_index_o
6f50: 72 64 65 72 62 79 20 73 74 72 75 63 74 75 72 65  rderby structure
6f60: 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   to use...      
6f70: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6f80: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
6f90: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
6fa0: 72 42 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rBy(..          
6fb0: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
6fc0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
6fd0: 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72 64 65  dex_orderby orde
6fe0: 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rBy..           
6ff0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
7000: 3a 20 74 68 69 73 28 6f 72 64 65 72 42 79 2e 69  : this(orderBy.i
7010: 43 6f 6c 75 6d 6e 2c 20 6f 72 64 65 72 42 79 2e  Column, orderBy.
7020: 64 65 73 63 29 0d 0a 20 20 20 20 20 20 20 20 7b  desc)..        {
7030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
7040: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
7050: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
7060: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
7070: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
70c0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
70d0: 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75   Private Constru
70e0: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
70f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7100: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
7110: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
7120: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 75   of this class u
7130: 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  sing the specifi
7140: 65 64 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20  ed field..      
7150: 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a 20    /// values... 
7160: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
7170: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7180: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7190: 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20 20 20 20  iColumn">..     
71a0: 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6e 75     /// Column nu
71b0: 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
71c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
71d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
71e0: 6e 61 6d 65 3d 22 64 65 73 63 22 3e 0d 0a 20 20  name="desc">..  
71f0: 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 66        /// True f
7200: 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20  or DESC.  False 
7210: 66 6f 72 20 41 53 43 2e 0d 0a 20 20 20 20 20 20  for ASC...      
7220: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
7230: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
7240: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
7250: 42 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  By(..           
7260: 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c 0d 0a 20   int iColumn,.. 
7270: 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 20             byte 
7280: 64 65 73 63 0d 0a 20 20 20 20 20 20 20 20 20 20  desc..          
7290: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
72a0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
72b0: 2e 69 43 6f 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75  .iColumn = iColu
72c0: 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn;..           
72d0: 20 74 68 69 73 2e 64 65 73 63 20 3d 20 64 65 73   this.desc = des
72e0: 63 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  c;..        }.. 
72f0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
7300: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
7310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7350: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
7360: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 46 69  region Public Fi
7370: 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  elds..        //
7380: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7390: 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20       /// Column 
73a0: 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20  number...       
73b0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
73c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
73d0: 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a  int iColumn;....
73e0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
73f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7430: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7440: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7450: 20 2f 2f 2f 20 54 72 75 65 20 66 6f 72 20 44 45   /// True for DE
7460: 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41  SC.  False for A
7470: 53 43 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  SC...        ///
7480: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7490: 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
74a0: 20 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20   desc;..        
74b0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
74c0: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
74d0: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
74e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7520: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
7530: 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ion SQLiteIndexC
7540: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 48  onstraintUsage H
7550: 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20  elper Class..   
7560: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7570: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
7580: 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ss represents th
7590: 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
75a0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
75b0: 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 2f 2f 2f  t_usage..    ///
75c0: 20 73 74 72 75 63 74 75 72 65 20 66 72 6f 6d 20   structure from 
75d0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
75e0: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
75f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7600: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
7610: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
7620: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
7630: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
7640: 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61   #region Interna
7650: 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  l Constructors..
7660: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
7670: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7680: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 20  // Constructs a 
7690: 64 65 66 61 75 6c 74 20 69 6e 73 74 61 6e 63 65  default instance
76a0: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
76b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
76c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
76d0: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
76e0: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
76f0: 73 61 67 65 28 29 0d 0a 20 20 20 20 20 20 20 20  sage()..        
7700: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
7710: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
7720: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7730: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7780: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7790: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
77a0: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
77b0: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
77c0: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
77d0: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
77e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
77f0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
7800: 74 72 61 69 6e 74 5f 75 73 61 67 65 20 73 74 72  traint_usage str
7810: 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
7820: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7830: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
7840: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 73 74 72  ram name="constr
7850: 61 69 6e 74 55 73 61 67 65 22 3e 0d 0a 20 20 20  aintUsage">..   
7860: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
7870: 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ive sqlite3_inde
7880: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
7890: 67 65 20 73 74 72 75 63 74 75 72 65 20 74 6f 20  ge structure to 
78a0: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
78b0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
78c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
78d0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
78e0: 6e 74 55 73 61 67 65 28 0d 0a 20 20 20 20 20 20  ntUsage(..      
78f0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
7900: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
7910: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
7920: 6e 74 5f 75 73 61 67 65 20 63 6f 6e 73 74 72 61  nt_usage constra
7930: 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20 20  intUsage..      
7940: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
7950: 20 20 20 20 20 3a 20 74 68 69 73 28 63 6f 6e 73       : this(cons
7960: 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76  traintUsage.argv
7970: 49 6e 64 65 78 2c 20 63 6f 6e 73 74 72 61 69 6e  Index, constrain
7980: 74 55 73 61 67 65 2e 6f 6d 69 74 29 0d 0a 20 20  tUsage.omit)..  
7990: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
79a0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
79b0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
79c0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
79d0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
79e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a20: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
7a30: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
7a40: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
7a50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7a60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
7a70: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
7a80: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
7a90: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
7aa0: 73 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 0d  specified field.
7ab0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
7ac0: 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ues...        //
7ad0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7ae0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
7af0: 20 6e 61 6d 65 3d 22 61 72 67 76 49 6e 64 65 78   name="argvIndex
7b00: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
7b10: 49 66 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  If greater than 
7b20: 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73  0, constraint is
7b30: 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f   part of argv to
7b40: 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20 20   xFilter...     
7b50: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
7b60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
7b70: 72 61 6d 20 6e 61 6d 65 3d 22 6f 6d 69 74 22 3e  ram name="omit">
7b80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 6f  ..        /// Do
7b90: 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74   not code a test
7ba0: 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72   for this constr
7bb0: 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aint...        /
7bc0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
7bd0: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
7be0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
7bf0: 6e 74 55 73 61 67 65 28 0d 0a 20 20 20 20 20 20  ntUsage(..      
7c00: 20 20 20 20 20 20 69 6e 74 20 61 72 67 76 49 6e        int argvIn
7c10: 64 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  dex,..          
7c20: 20 20 62 79 74 65 20 6f 6d 69 74 0d 0a 20 20 20    byte omit..   
7c30: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
7c40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7c50: 20 20 20 74 68 69 73 2e 61 72 67 76 49 6e 64 65     this.argvInde
7c60: 78 20 3d 20 61 72 67 76 49 6e 64 65 78 3b 0d 0a  x = argvIndex;..
7c70: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
7c80: 2e 6f 6d 69 74 20 3d 20 6f 6d 69 74 3b 0d 0a 20  .omit = omit;.. 
7c90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7ca0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7cb0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7d00: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
7d10: 6f 6e 20 50 75 62 6c 69 63 20 46 69 65 6c 64 73  on Public Fields
7d20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7d30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7d40: 20 2f 2f 2f 20 49 66 20 67 72 65 61 74 65 72 20   /// If greater 
7d50: 74 68 61 6e 20 30 2c 20 63 6f 6e 73 74 72 61 69  than 0, constrai
7d60: 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72  nt is part of ar
7d70: 67 76 20 74 6f 20 78 46 69 6c 74 65 72 2e 0d 0a  gv to xFilter...
7d80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
7d90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7da0: 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76 49  public int argvI
7db0: 6e 64 65 78 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ndex;....       
7dc0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e00: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
7e10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7e20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
7e30: 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73  o not code a tes
7e40: 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74  t for this const
7e50: 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  raint...        
7e60: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7e70: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
7e80: 79 74 65 20 6f 6d 69 74 3b 0d 0a 20 20 20 20 20  yte omit;..     
7e90: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
7ea0: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
7eb0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
7ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f00: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
7f10: 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64  region SQLiteInd
7f20: 65 78 49 6e 70 75 74 73 20 48 65 6c 70 65 72 20  exInputs Helper 
7f30: 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
7f40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
7f50: 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70  / This class rep
7f60: 72 65 73 65 6e 74 73 20 74 68 65 20 76 61 72 69  resents the vari
7f70: 6f 75 73 20 69 6e 70 75 74 73 20 70 72 6f 76 69  ous inputs provi
7f80: 64 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74  ded by the SQLit
7f90: 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f 20  e core..    /// 
7fa0: 6c 69 62 72 61 72 79 20 74 6f 20 74 68 65 20 3c  library to the <
7fb0: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
7fc0: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42  eManagedModule.B
7fd0: 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74  estIndex" /> met
7fe0: 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  hod...    /// </
7ff0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
8000: 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73  blic sealed clas
8010: 73 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  s SQLiteIndexInp
8020: 75 74 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  uts..    {..    
8030: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
8040: 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72  rnal Constructor
8050: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
8060: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8070: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
8080: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
8090: 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
80a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
80b0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
80c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43   <param name="nC
80d0: 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20  onstraint">..   
80e0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
80f0: 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ber of <see cref
8100: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  ="SQLiteIndexCon
8110: 73 74 72 61 69 6e 74 22 20 2f 3e 20 69 6e 73 74  straint" /> inst
8120: 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20  ances to..      
8130: 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61    /// pre-alloca
8140: 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20  te space for... 
8150: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
8160: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
8170: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f   <param name="nO
8180: 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20 20 20  rderBy">..      
8190: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
81a0: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
81b0: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
81c0: 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20  y" /> instances 
81d0: 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
81e0: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61  pre-allocate spa
81f0: 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20  ce for...       
8200: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8210: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
8220: 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74  SQLiteIndexInput
8230: 73 28 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e  s(int nConstrain
8240: 74 2c 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 29  t, int nOrderBy)
8250: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
8260: 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61           constra
8270: 69 6e 74 73 20 3d 20 6e 65 77 20 53 51 4c 69 74  ints = new SQLit
8280: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
8290: 5b 6e 43 6f 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a  [nConstraint];..
82a0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 64 65              orde
82b0: 72 42 79 73 20 3d 20 6e 65 77 20 53 51 4c 69 74  rBys = new SQLit
82c0: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 6e 4f  eIndexOrderBy[nO
82d0: 72 64 65 72 42 79 5d 3b 0d 0a 20 20 20 20 20 20  rderBy];..      
82e0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
82f0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
8300: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8350: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
8360: 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d  blic Properties.
8370: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
8380: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
8390: 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61  traint[] constra
83a0: 69 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ints;..        /
83b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
83c0: 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72        /// An arr
83d0: 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ay of <see cref=
83e0: 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73  "SQLiteIndexCons
83f0: 74 72 61 69 6e 74 22 20 2f 3e 20 6f 62 6a 65 63  traint" /> objec
8400: 74 20 69 6e 73 74 61 6e 63 65 73 2c 0d 0a 20 20  t instances,..  
8410: 20 20 20 20 20 20 2f 2f 2f 20 65 61 63 68 20 63        /// each c
8420: 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d  ontaining inform
8430: 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 64 20 62  ation supplied b
8440: 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  y the SQLite cor
8450: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
8460: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8470: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
8480: 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
8490: 6e 73 74 72 61 69 6e 74 5b 5d 20 43 6f 6e 73 74  nstraint[] Const
84a0: 72 61 69 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  raints..        
84b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
84c0: 65 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e 73  et { return cons
84d0: 74 72 61 69 6e 74 73 3b 20 7d 0d 0a 20 20 20 20  traints; }..    
84e0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
84f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8530: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8540: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
8550: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d  teIndexOrderBy[]
8560: 20 6f 72 64 65 72 42 79 73 3b 0d 0a 20 20 20 20   orderBys;..    
8570: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8580: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
8590: 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20  n array of <see 
85a0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
85b0: 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 6f 62 6a  xOrderBy" /> obj
85c0: 65 63 74 20 69 6e 73 74 61 6e 63 65 73 2c 0d 0a  ect instances,..
85d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 61 63 68          /// each
85e0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f   containing info
85f0: 72 6d 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 64  rmation supplied
8600: 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
8610: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
8620: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
8630: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
8640: 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
8650: 4f 72 64 65 72 42 79 5b 5d 20 4f 72 64 65 72 42  OrderBy[] OrderB
8660: 79 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ys..        {.. 
8670: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
8680: 20 72 65 74 75 72 6e 20 6f 72 64 65 72 42 79 73   return orderBys
8690: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
86a0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
86b0: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
86c0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
86d0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
86e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8720: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
8730: 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 48  teIndexOutputs H
8740: 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20  elper Class..   
8750: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8760: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
8770: 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ss represents th
8780: 65 20 76 61 72 69 6f 75 73 20 6f 75 74 70 75 74  e various output
8790: 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
87a0: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20  e SQLite core.. 
87b0: 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 62     /// library b
87c0: 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  y the <see cref=
87d0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
87e0: 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22  odule.BestIndex"
87f0: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
8800: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8810: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c  .    public seal
8820: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49  ed class SQLiteI
8830: 6e 64 65 78 4f 75 74 70 75 74 73 0d 0a 20 20 20  ndexOutputs..   
8840: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
8850: 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e  ion Internal Con
8860: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
8870: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8880: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
8890: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
88a0: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
88b0: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
88c0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
88d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
88e0: 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e  name="nConstrain
88f0: 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
8900: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
8910: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
8920: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
8930: 73 61 67 65 22 20 2f 3e 20 69 6e 73 74 61 6e 63  sage" /> instanc
8940: 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  es..        /// 
8950: 74 6f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20  to pre-allocate 
8960: 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20  space for...    
8970: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
8980: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
8990: 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75  al SQLiteIndexOu
89a0: 74 70 75 74 73 28 69 6e 74 20 6e 43 6f 6e 73 74  tputs(int nConst
89b0: 72 61 69 6e 74 29 0d 0a 20 20 20 20 20 20 20 20  raint)..        
89c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
89d0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 20  onstraintUsages 
89e0: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
89f0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
8a00: 5b 6e 43 6f 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a  [nConstraint];..
8a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
8a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
8a30: 20 42 55 47 46 49 58 3a 20 43 72 65 61 74 65 20   BUGFIX: Create 
8a40: 74 68 65 20 5b 65 6d 70 74 79 5d 20 63 6f 6e 73  the [empty] cons
8a50: 74 72 61 69 6e 74 20 75 73 61 67 65 73 20 6e 6f  traint usages no
8a60: 77 20 73 6f 20 74 68 65 79 20 63 61 6e 20 62 65  w so they can be
8a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
8a80: 20 20 20 20 20 20 20 20 20 75 73 65 64 20 62 79           used by
8a90: 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   the xBestIndex 
8aa0: 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20 20 20  callback...     
8ab0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
8ac0: 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
8ad0: 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b  iConstraint = 0;
8ae0: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e   iConstraint < n
8af0: 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e  Constraint; iCon
8b00: 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20  straint++)..    
8b10: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
8b20: 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69 43 6f  traintUsages[iCo
8b30: 6e 73 74 72 61 69 6e 74 5d 20 3d 20 6e 65 77 20  nstraint] = new 
8b40: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
8b50: 72 61 69 6e 74 55 73 61 67 65 28 29 3b 0d 0a 20  raintUsage();.. 
8b60: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8b70: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
8b80: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
8b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8bd0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8be0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8bf0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
8c00: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 65   if the native e
8c10: 73 74 69 6d 61 74 65 64 52 6f 77 73 20 66 69 65  stimatedRows fie
8c20: 6c 64 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20  ld can be used, 
8c30: 62 61 73 65 64 20 6f 6e 0d 0a 20 20 20 20 20 20  based on..      
8c40: 20 20 2f 2f 2f 20 74 68 65 20 61 76 61 69 6c 61    /// the availa
8c50: 62 6c 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74  ble version of t
8c60: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
8c70: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
8c80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8c90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
8ca0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
8cb0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
8cc0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 45  the <see cref="E
8cd0: 73 74 69 6d 61 74 65 64 52 6f 77 73 22 20 2f 3e  stimatedRows" />
8ce0: 20 70 72 6f 70 65 72 74 79 20 69 73 20 73 75 70   property is sup
8cf0: 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ported..        
8d00: 2f 2f 2f 20 62 79 20 74 68 65 20 53 51 4c 69 74  /// by the SQLit
8d10: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
8d20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
8d30: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
8d40: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 61 6e   public bool Can
8d50: 55 73 65 45 73 74 69 6d 61 74 65 64 52 6f 77 73  UseEstimatedRows
8d60: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
8d70: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 55             if (U
8d80: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
8d90: 64 73 2e 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  ds.sqlite3_libve
8da0: 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 20 3e  rsion_number() >
8db0: 3d 20 33 30 30 38 30 30 32 29 0d 0a 20 20 20 20  = 3008002)..    
8dc0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8dd0: 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20  rn true;....    
8de0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
8df0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
8e00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
8e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e50: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
8e60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8e70: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
8e80: 69 6e 65 73 20 69 66 20 74 68 65 20 6e 61 74 69  ines if the nati
8e90: 76 65 20 66 6c 61 67 73 20 66 69 65 6c 64 20 63  ve flags field c
8ea0: 61 6e 20 62 65 20 75 73 65 64 2c 20 62 61 73 65  an be used, base
8eb0: 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  d on the..      
8ec0: 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 20    /// available 
8ed0: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53  version of the S
8ee0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
8ef0: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
8f00: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8f10: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
8f20: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
8f30: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
8f40: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 64 65 78  <see cref="Index
8f50: 46 6c 61 67 73 22 20 2f 3e 20 70 72 6f 70 65 72  Flags" /> proper
8f60: 74 79 20 69 73 20 73 75 70 70 6f 72 74 65 64 20  ty is supported 
8f70: 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  by..        /// 
8f80: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
8f90: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
8fa0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
8fb0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
8fc0: 20 62 6f 6f 6c 20 43 61 6e 55 73 65 49 6e 64 65   bool CanUseInde
8fd0: 78 46 6c 61 67 73 28 29 0d 0a 20 20 20 20 20 20  xFlags()..      
8fe0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8ff0: 20 69 66 20 28 55 6e 73 61 66 65 4e 61 74 69 76   if (UnsafeNativ
9000: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
9010: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
9020: 65 72 28 29 20 3e 3d 20 33 30 30 39 30 30 30 29  er() >= 3009000)
9030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9040: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
9050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
9060: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
9070: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9080: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
90d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
90e0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
90f0: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
9100: 65 20 6e 61 74 69 76 65 20 66 6c 61 67 73 20 66  e native flags f
9110: 69 65 6c 64 20 63 61 6e 20 62 65 20 75 73 65 64  ield can be used
9120: 2c 20 62 61 73 65 64 20 6f 6e 20 74 68 65 0d 0a  , based on the..
9130: 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 76 61 69          /// avai
9140: 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 6f 66  lable version of
9150: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
9160: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
9170: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9180: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
9190: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
91a0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
91b0: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
91c0: 22 43 6f 6c 75 6d 6e 73 55 73 65 64 22 20 2f 3e  "ColumnsUsed" />
91d0: 20 70 72 6f 70 65 72 74 79 20 69 73 20 73 75 70   property is sup
91e0: 70 6f 72 74 65 64 20 62 79 0d 0a 20 20 20 20 20  ported by..     
91f0: 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74     /// the SQLit
9200: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
9210: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
9220: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
9230: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 61 6e   public bool Can
9240: 55 73 65 43 6f 6c 75 6d 6e 73 55 73 65 64 28 29  UseColumnsUsed()
9250: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9260: 20 20 20 20 20 20 20 20 20 69 66 20 28 55 6e 73           if (Uns
9270: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
9280: 2e 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73  .sqlite3_libvers
9290: 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 20 3e 3d 20  ion_number() >= 
92a0: 33 30 31 30 30 30 30 29 0d 0a 20 20 20 20 20 20  3010000)..      
92b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
92c0: 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
92d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
92e0: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  se;..        }..
92f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
9300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9340: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
9350: 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70  gion Public Prop
9360: 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
9370: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
9380: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
9390: 67 65 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 55  ge[] constraintU
93a0: 73 61 67 65 73 3b 0d 0a 20 20 20 20 20 20 20 20  sages;..        
93b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
93c0: 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72         /// An ar
93d0: 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ray of <see cref
93e0: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  ="SQLiteIndexCon
93f0: 73 74 72 61 69 6e 74 55 73 61 67 65 22 20 2f 3e  straintUsage" />
9400: 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
9410: 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 73 2c 20   /// instances, 
9420: 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20  each containing 
9430: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 62  information to b
9440: 65 20 73 75 70 70 6c 69 65 64 20 74 6f 20 74 68  e supplied to th
9450: 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20  e SQLite..      
9460: 20 20 2f 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61    /// core libra
9470: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
9480: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9490: 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
94a0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
94b0: 74 55 73 61 67 65 5b 5d 20 43 6f 6e 73 74 72 61  tUsage[] Constra
94c0: 69 6e 74 55 73 61 67 65 73 0d 0a 20 20 20 20 20  intUsages..     
94d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
94e0: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 63    get { return c
94f0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 3b  onstraintUsages;
9500: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9510: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
9520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9560: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
9570: 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d  ate int indexNum
9580: 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber;..        //
9590: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
95a0: 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20       /// Number 
95b0: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
95c0: 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
95d0: 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20  ed index.  This 
95e0: 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20  value will..    
95f0: 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72 20 62 65      /// later be
9600: 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
9610: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
9620: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
9630: 2e 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20  .Filter" />..   
9640: 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e       /// method.
9650: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
9660: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9670: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 49 6e 64    public int Ind
9680: 65 78 4e 75 6d 62 65 72 0d 0a 20 20 20 20 20 20  exNumber..      
9690: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
96a0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e   get { return in
96b0: 64 65 78 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20  dexNumber; }..  
96c0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
96d0: 69 6e 64 65 78 4e 75 6d 62 65 72 20 3d 20 76 61  indexNumber = va
96e0: 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
96f0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
9700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9740: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
9750: 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 69  private string i
9760: 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20  ndexString;..   
9770: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9780: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
9790: 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20 68  String used to h
97a0: 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65  elp identify the
97b0: 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
97c0: 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c    This value wil
97d0: 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  l..        /// l
97e0: 61 74 65 72 20 62 65 20 70 72 6f 76 69 64 65 64  ater be provided
97f0: 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65   to the <see cre
9800: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
9810: 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20  dModule.Filter" 
9820: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
9830: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
9840: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9850: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
9860: 73 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69  string IndexStri
9870: 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ng..        {.. 
9880: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
9890: 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53 74 72   return indexStr
98a0: 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ing; }..        
98b0: 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65 78 53      set { indexS
98c0: 74 72 69 6e 67 20 3d 20 76 61 6c 75 65 3b 20 7d  tring = value; }
98d0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
98e0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
98f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9930: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
9940: 65 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65  e int needToFree
9950: 49 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20  IndexString;..  
9960: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
9970: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
9980: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
9990: 20 69 6e 64 65 78 20 73 74 72 69 6e 67 20 6d 75   index string mu
99a0: 73 74 20 62 65 20 66 72 65 65 64 20 62 79 20 74  st be freed by t
99b0: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a  he SQLite core..
99c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72          /// libr
99d0: 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
99e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
99f0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
9a00: 20 4e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78   NeedToFreeIndex
9a10: 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  String..        
9a20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
9a30: 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 65 65 64  et { return need
9a40: 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
9a50: 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  g; }..          
9a60: 20 20 73 65 74 20 7b 20 6e 65 65 64 54 6f 46 72    set { needToFr
9a70: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20 3d 20  eeIndexString = 
9a80: 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
9a90: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
9aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ae0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9af0: 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 6f 72    private int or
9b00: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 0d 0a  derByConsumed;..
9b10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
9b20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
9b30: 2f 2f 20 54 72 75 65 20 69 66 20 6f 75 74 70 75  // True if outpu
9b40: 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64  t is already ord
9b50: 65 72 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ered...        /
9b60: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9b70: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
9b80: 74 20 4f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65  t OrderByConsume
9b90: 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
9ba0: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
9bb0: 72 65 74 75 72 6e 20 6f 72 64 65 72 42 79 43 6f  return orderByCo
9bc0: 6e 73 75 6d 65 64 3b 20 7d 0d 0a 20 20 20 20 20  nsumed; }..     
9bd0: 20 20 20 20 20 20 20 73 65 74 20 7b 20 6f 72 64         set { ord
9be0: 65 72 42 79 43 6f 6e 73 75 6d 65 64 20 3d 20 76  erByConsumed = v
9bf0: 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
9c00: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
9c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c50: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9c60: 20 70 72 69 76 61 74 65 20 64 6f 75 62 6c 65 3f   private double?
9c70: 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 0d   estimatedCost;.
9c80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
9c90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9ca0: 2f 2f 2f 20 45 73 74 69 6d 61 74 65 64 20 63 6f  /// Estimated co
9cb0: 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73  st of using this
9cc0: 20 69 6e 64 65 78 2e 20 20 55 73 69 6e 67 20 61   index.  Using a
9cd0: 20 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65 72 65   null value here
9ce0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
9cf0: 64 69 63 61 74 65 73 20 74 68 61 74 20 61 20 64  dicates that a d
9d00: 65 66 61 75 6c 74 20 65 73 74 69 6d 61 74 65 64  efault estimated
9d10: 20 63 6f 73 74 20 76 61 6c 75 65 20 73 68 6f 75   cost value shou
9d20: 6c 64 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  ld be used...   
9d30: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9d40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
9d50: 6c 69 63 20 64 6f 75 62 6c 65 3f 20 45 73 74 69  lic double? Esti
9d60: 6d 61 74 65 64 43 6f 73 74 0d 0a 20 20 20 20 20  matedCost..     
9d70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9d80: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 65    get { return e
9d90: 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 7d 0d  stimatedCost; }.
9da0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
9db0: 20 7b 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74   { estimatedCost
9dc0: 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
9dd0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9de0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9e30: 20 20 20 20 20 70 72 69 76 61 74 65 20 6c 6f 6e       private lon
9e40: 67 3f 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73  g? estimatedRows
9e50: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
9e60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9e70: 20 20 2f 2f 2f 20 45 73 74 69 6d 61 74 65 64 20    /// Estimated 
9e80: 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72  number of rows r
9e90: 65 74 75 72 6e 65 64 2e 20 20 55 73 69 6e 67 20  eturned.  Using 
9ea0: 61 20 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65 72  a null value her
9eb0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
9ec0: 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61 20  ndicates that a 
9ed0: 64 65 66 61 75 6c 74 20 65 73 74 69 6d 61 74 65  default estimate
9ee0: 64 20 72 6f 77 73 20 76 61 6c 75 65 20 73 68 6f  d rows value sho
9ef0: 75 6c 64 20 62 65 20 75 73 65 64 2e 0d 0a 20 20  uld be used...  
9f00: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 70        /// This p
9f10: 72 6f 70 65 72 74 79 20 68 61 73 20 6e 6f 20 65  roperty has no e
9f20: 66 66 65 63 74 20 69 66 20 74 68 65 20 53 51 4c  ffect if the SQL
9f30: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
9f40: 20 69 73 20 6e 6f 74 20 61 74 0d 0a 20 20 20 20   is not at..    
9f50: 20 20 20 20 2f 2f 2f 20 6c 65 61 73 74 20 76 65      /// least ve
9f60: 72 73 69 6f 6e 20 33 2e 38 2e 32 2e 0d 0a 20 20  rsion 3.8.2...  
9f70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9f80: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
9f90: 62 6c 69 63 20 6c 6f 6e 67 3f 20 45 73 74 69 6d  blic long? Estim
9fa0: 61 74 65 64 52 6f 77 73 0d 0a 20 20 20 20 20 20  atedRows..      
9fb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9fc0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 65 73   get { return es
9fd0: 74 69 6d 61 74 65 64 52 6f 77 73 3b 20 7d 0d 0a  timatedRows; }..
9fe0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
9ff0: 7b 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 20  { estimatedRows 
a000: 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
a010: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a020: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a060: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
a070: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
a080: 74 65 49 6e 64 65 78 46 6c 61 67 73 3f 20 69 6e  teIndexFlags? in
a090: 64 65 78 46 6c 61 67 73 3b 0d 0a 20 20 20 20 20  dexFlags;..     
a0a0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a0b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
a0c0: 65 20 66 6c 61 67 73 20 74 68 61 74 20 73 68 6f  e flags that sho
a0d0: 75 6c 64 20 62 65 20 75 73 65 64 20 77 69 74 68  uld be used with
a0e0: 20 74 68 69 73 20 69 6e 64 65 78 2e 20 20 55 73   this index.  Us
a0f0: 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  ing a null value
a100: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 68 65  ..        /// he
a110: 72 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  re indicates tha
a120: 74 20 61 20 64 65 66 61 75 6c 74 20 66 6c 61 67  t a default flag
a130: 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62  s value should b
a140: 65 20 75 73 65 64 2e 20 20 54 68 69 73 0d 0a 20  e used.  This.. 
a150: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 70 65         /// prope
a160: 72 74 79 20 68 61 73 20 6e 6f 20 65 66 66 65 63  rty has no effec
a170: 74 20 69 66 20 74 68 65 20 53 51 4c 69 74 65 20  t if the SQLite 
a180: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 73 20  core library is 
a190: 6e 6f 74 20 61 74 20 6c 65 61 73 74 0d 0a 20 20  not at least..  
a1a0: 20 20 20 20 20 20 2f 2f 2f 20 76 65 72 73 69 6f        /// versio
a1b0: 6e 20 33 2e 39 2e 30 2e 0d 0a 20 20 20 20 20 20  n 3.9.0...      
a1c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a1d0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
a1e0: 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67   SQLiteIndexFlag
a1f0: 73 3f 20 49 6e 64 65 78 46 6c 61 67 73 0d 0a 20  s? IndexFlags.. 
a200: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a210: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
a220: 72 6e 20 69 6e 64 65 78 46 6c 61 67 73 3b 20 7d  rn indexFlags; }
a230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
a240: 74 20 7b 20 69 6e 64 65 78 46 6c 61 67 73 20 3d  t { indexFlags =
a250: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
a260: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
a270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
a2c0: 20 20 20 70 72 69 76 61 74 65 20 6c 6f 6e 67 3f     private long?
a2d0: 20 63 6f 6c 75 6d 6e 73 55 73 65 64 3b 0d 0a 20   columnsUsed;.. 
a2e0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
a2f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
a300: 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
a310: 20 20 2f 2f 2f 20 49 6e 64 69 63 61 74 65 73 20    /// Indicates 
a320: 77 68 69 63 68 20 63 6f 6c 75 6d 6e 73 20 6f 66  which columns of
a330: 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
a340: 6c 65 20 6d 61 79 20 62 65 20 72 65 71 75 69 72  le may be requir
a350: 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20  ed by the..     
a360: 20 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74 20 73     /// current s
a370: 63 61 6e 2e 20 20 56 69 72 74 75 61 6c 20 74 61  can.  Virtual ta
a380: 62 6c 65 20 63 6f 6c 75 6d 6e 73 20 61 72 65 20  ble columns are 
a390: 6e 75 6d 62 65 72 65 64 20 66 72 6f 6d 20 7a 65  numbered from ze
a3a0: 72 6f 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ro in the..     
a3b0: 20 20 20 2f 2f 2f 20 6f 72 64 65 72 20 69 6e 20     /// order in 
a3c0: 77 68 69 63 68 20 74 68 65 79 20 61 70 70 65 61  which they appea
a3d0: 72 20 77 69 74 68 69 6e 20 74 68 65 20 43 52 45  r within the CRE
a3e0: 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ATE TABLE statem
a3f0: 65 6e 74 20 70 61 73 73 65 64 0d 0a 20 20 20 20  ent passed..    
a400: 20 20 20 20 2f 2f 2f 20 74 6f 20 73 71 6c 69 74      /// to sqlit
a410: 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28  e3_declare_vtab(
a420: 29 2e 20 20 46 6f 72 20 74 68 65 20 66 69 72 73  ).  For the firs
a430: 74 20 36 33 20 63 6f 6c 75 6d 6e 73 20 28 63 6f  t 63 columns (co
a440: 6c 75 6d 6e 73 20 30 2d 36 32 29 2c 0d 0a 20 20  lumns 0-62),..  
a450: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 6f        /// the co
a460: 72 72 65 73 70 6f 6e 64 69 6e 67 20 62 69 74 20  rresponding bit 
a470: 69 73 20 73 65 74 20 77 69 74 68 69 6e 20 74 68  is set within th
a480: 65 20 62 69 74 20 6d 61 73 6b 20 69 66 20 74 68  e bit mask if th
a490: 65 20 63 6f 6c 75 6d 6e 20 6d 61 79 0d 0a 20 20  e column may..  
a4a0: 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 72 65 71        /// be req
a4b0: 75 69 72 65 64 20 62 79 20 53 51 4c 69 74 65 2e  uired by SQLite.
a4c0: 20 20 49 66 20 74 68 65 20 74 61 62 6c 65 20 68    If the table h
a4d0: 61 73 20 61 74 20 6c 65 61 73 74 20 36 34 20 63  as at least 64 c
a4e0: 6f 6c 75 6d 6e 73 20 61 6e 64 0d 0a 20 20 20 20  olumns and..    
a4f0: 20 20 20 20 2f 2f 2f 20 61 6e 79 20 63 6f 6c 75      /// any colu
a500: 6d 6e 20 74 6f 20 74 68 65 20 72 69 67 68 74 20  mn to the right 
a510: 6f 66 20 74 68 65 20 66 69 72 73 74 20 36 33 20  of the first 63 
a520: 69 73 20 72 65 71 75 69 72 65 64 2c 20 74 68 65  is required, the
a530: 6e 20 62 69 74 20 36 33 20 6f 66 0d 0a 20 20 20  n bit 63 of..   
a540: 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 55 73 65 64       /// colUsed
a550: 20 69 73 20 61 6c 73 6f 20 73 65 74 2e 20 20 49   is also set.  I
a560: 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 63  n other words, c
a570: 6f 6c 75 6d 6e 20 69 43 6f 6c 20 6d 61 79 20 62  olumn iCol may b
a580: 65 20 72 65 71 75 69 72 65 64 0d 0a 20 20 20 20  e required..    
a590: 20 20 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 65      /// if the e
a5a0: 78 70 72 65 73 73 69 6f 6e 0d 0a 20 20 20 20 20  xpression..     
a5b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
a5c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
a5d0: 61 3e 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20  a><code>..      
a5e0: 20 20 2f 2f 2f 20 28 63 6f 6c 55 73 65 64 20 26    /// (colUsed &
a5f0: 61 6d 70 3b 20 28 28 73 71 6c 69 74 65 33 5f 75  amp; ((sqlite3_u
a600: 69 6e 74 36 34 29 31 20 26 6c 74 3b 26 6c 74 3b  int64)1 &lt;&lt;
a610: 20 28 69 43 6f 6c 26 67 74 3b 3d 36 33 20 3f 20   (iCol&gt;=63 ? 
a620: 36 33 20 3a 20 69 43 6f 6c 29 29 29 0d 0a 20 20  63 : iCol)))..  
a630: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65        /// </code
a640: 3e 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  ></para>..      
a650: 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
a660: 20 20 20 20 20 20 2f 2f 2f 20 65 76 61 6c 75 61        /// evalua
a670: 74 65 73 20 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 2e  tes to non-zero.
a680: 20 20 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20 76    Using a null v
a690: 61 6c 75 65 20 68 65 72 65 20 69 6e 64 69 63 61  alue here indica
a6a0: 74 65 73 20 74 68 61 74 20 61 0d 0a 20 20 20 20  tes that a..    
a6b0: 20 20 20 20 2f 2f 2f 20 64 65 66 61 75 6c 74 20      /// default 
a6c0: 66 6c 61 67 73 20 76 61 6c 75 65 20 73 68 6f 75  flags value shou
a6d0: 6c 64 20 62 65 20 75 73 65 64 2e 20 20 54 68 69  ld be used.  Thi
a6e0: 73 20 70 72 6f 70 65 72 74 79 20 68 61 73 20 6e  s property has n
a6f0: 6f 20 65 66 66 65 63 74 20 69 66 0d 0a 20 20 20  o effect if..   
a700: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
a710: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
a720: 20 69 73 20 6e 6f 74 20 61 74 20 6c 65 61 73 74   is not at least
a730: 20 76 65 72 73 69 6f 6e 20 33 2e 31 30 2e 30 2e   version 3.10.0.
a740: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
a750: 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
a760: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
a770: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f         public lo
a780: 6e 67 3f 20 43 6f 6c 75 6d 6e 73 55 73 65 64 0d  ng? ColumnsUsed.
a790: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
a7a0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
a7b0: 74 75 72 6e 20 63 6f 6c 75 6d 6e 73 55 73 65 64  turn columnsUsed
a7c0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
a7d0: 20 73 65 74 20 7b 20 63 6f 6c 75 6d 6e 73 55 73   set { columnsUs
a7e0: 65 64 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  ed = value; }.. 
a7f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
a800: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
a810: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
a820: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
a830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a870: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
a880: 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65  egion SQLiteInde
a890: 78 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a  x Helper Class..
a8a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a8b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
a8c0: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
a8d0: 20 74 68 65 20 76 61 72 69 6f 75 73 20 69 6e 70   the various inp
a8e0: 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20  uts and outputs 
a8f0: 75 73 65 64 20 77 69 74 68 20 74 68 65 0d 0a 20  used with the.. 
a900: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
a910: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
a920: 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78  Module.BestIndex
a930: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
a940: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a950: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61  ..    public sea
a960: 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
a970: 49 6e 64 65 78 0d 0a 20 20 20 20 7b 0d 0a 20 20  Index..    {..  
a980: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
a990: 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74  ternal Construct
a9a0: 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
a9b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
a9c0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
a9d0: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
a9e0: 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
a9f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
aa00: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
aa10: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
aa20: 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20  nConstraint">.. 
aa30: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
aa40: 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72  umber of <see cr
aa50: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
aa60: 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 28 61  onstraint" /> (a
aa70: 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nd..        /// 
aa80: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
aa90: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
aaa0: 55 73 61 67 65 22 20 2f 3e 29 20 69 6e 73 74 61  Usage" />) insta
aab0: 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20  nces to..       
aac0: 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74   /// pre-allocat
aad0: 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20  e space for...  
aae0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
aaf0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
ab00: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72  <param name="nOr
ab10: 64 65 72 42 79 22 3e 0d 0a 20 20 20 20 20 20 20  derBy">..       
ab20: 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
ab30: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
ab40: 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79  LiteIndexOrderBy
ab50: 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74  " /> instances t
ab60: 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  o..        /// p
ab70: 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63  re-allocate spac
ab80: 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  e for...        
ab90: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
aba0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
abb0: 51 4c 69 74 65 49 6e 64 65 78 28 0d 0a 20 20 20  QLiteIndex(..   
abc0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f           int nCo
abd0: 6e 73 74 72 61 69 6e 74 2c 0d 0a 20 20 20 20 20  nstraint,..     
abe0: 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65         int nOrde
abf0: 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rBy..           
ac00: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
ac10: 20 20 20 20 20 20 20 20 20 20 20 69 6e 70 75 74             input
ac20: 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  s = new SQLiteIn
ac30: 64 65 78 49 6e 70 75 74 73 28 6e 43 6f 6e 73 74  dexInputs(nConst
ac40: 72 61 69 6e 74 2c 20 6e 4f 72 64 65 72 42 79 29  raint, nOrderBy)
ac50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ;..            o
ac60: 75 74 70 75 74 73 20 3d 20 6e 65 77 20 53 51 4c  utputs = new SQL
ac70: 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 28  iteIndexOutputs(
ac80: 6e 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20  nConstraint);.. 
ac90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
aca0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
acb0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
acc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ace0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ad00: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
ad10: 6f 6e 20 50 72 69 76 61 74 65 20 4d 61 72 73 68  on Private Marsh
ad20: 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  al Helper Method
ad30: 73 20 28 46 6f 72 20 54 65 73 74 20 55 73 65 20  s (For Test Use 
ad40: 4f 6e 6c 79 29 0d 0a 20 20 20 20 20 20 20 20 2f  Only)..        /
ad50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ad60: 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
ad70: 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ts to determine 
ad80: 74 68 65 20 73 74 72 75 63 74 75 72 65 20 73 69  the structure si
ad90: 7a 65 73 20 6e 65 65 64 65 64 20 74 6f 20 63 72  zes needed to cr
ada0: 65 61 74 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  eate and..      
adb0: 20 20 2f 2f 2f 20 70 6f 70 75 6c 61 74 65 20 61    /// populate a
adc0: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
add0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
ade0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
adf0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
ae00: 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20  x_info" />..    
ae10: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
ae20: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
ae30: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ae40: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
ae50: 61 6d 65 3d 22 73 69 7a 65 4f 66 49 6e 66 6f 54  ame="sizeOfInfoT
ae60: 79 70 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ype">..        /
ae70: 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74  // The size of t
ae80: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
ae90: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
aea0: 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  ="UnsafeNativeMe
aeb0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
aec0: 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20  dex_info" />..  
aed0: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
aee0: 75 72 65 20 69 73 20 73 74 6f 72 65 64 20 68 65  ure is stored he
aef0: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
af00: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
af10: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
af20: 6d 65 3d 22 73 69 7a 65 4f 66 43 6f 6e 73 74 72  me="sizeOfConstr
af30: 61 69 6e 74 54 79 70 65 22 3e 0d 0a 20 20 20 20  aintType">..    
af40: 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65      /// The size
af50: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a   of the native..
af60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
af70: 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
af80: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
af90: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
afa0: 69 6e 74 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  int" />..       
afb0: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 69   /// structure i
afc0: 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0d 0a  s stored here...
afd0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
afe0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
aff0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
b000: 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
b010: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
b020: 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  The size of the 
b030: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
b040: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55  /// <see cref="U
b050: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
b060: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
b070: 5f 6f 72 64 65 72 62 79 22 20 2f 3e 0d 0a 20 20  _orderby" />..  
b080: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
b090: 75 72 65 20 69 73 20 73 74 6f 72 65 64 20 68 65  ure is stored he
b0a0: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
b0b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
b0c0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
b0d0: 6d 65 3d 22 73 69 7a 65 4f 66 43 6f 6e 73 74 72  me="sizeOfConstr
b0e0: 61 69 6e 74 55 73 61 67 65 54 79 70 65 22 3e 0d  aintUsageType">.
b0f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
b100: 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6e 61 74   size of the nat
b110: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
b120: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
b130: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
b140: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
b150: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 22 20  nstraint_usage" 
b160: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
b170: 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74 6f  structure is sto
b180: 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20 20  red here...     
b190: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
b1a0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
b1b0: 20 73 74 61 74 69 63 20 76 6f 69 64 20 53 69 7a   static void Siz
b1c0: 65 4f 66 4e 61 74 69 76 65 28 0d 0a 20 20 20 20  eOfNative(..    
b1d0: 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74 20          out int 
b1e0: 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 2c 0d  sizeOfInfoType,.
b1f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74  .            out
b200: 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74   int sizeOfConst
b210: 72 61 69 6e 74 54 79 70 65 2c 0d 0a 20 20 20 20  raintType,..    
b220: 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74 20          out int 
b230: 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70  sizeOfOrderByTyp
b240: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
b250: 6f 75 74 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f  out int sizeOfCo
b260: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
b270: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
b280: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
b290: 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 49           sizeOfI
b2a0: 6e 66 6f 54 79 70 65 20 3d 20 4d 61 72 73 68 61  nfoType = Marsha
b2b0: 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28  l.SizeOf(typeof(
b2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b2d0: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
b2e0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
b2f0: 64 65 78 5f 69 6e 66 6f 29 29 3b 0d 0a 0d 0a 20  dex_info));.... 
b300: 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f             sizeO
b310: 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20  fConstraintType 
b320: 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66  = Marshal.SizeOf
b330: 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20  (typeof(..      
b340: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
b350: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
b360: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
b370: 74 72 61 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  traint));....   
b380: 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 4f           sizeOfO
b390: 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d 61 72  rderByType = Mar
b3a0: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65  shal.SizeOf(type
b3b0: 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
b3c0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
b3d0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
b3e0: 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 29  _index_orderby))
b3f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b400: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
b410: 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72  tUsageType = Mar
b420: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65  shal.SizeOf(type
b430: 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
b440: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
b450: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
b460: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
b470: 74 5f 75 73 61 67 65 29 29 3b 0d 0a 20 20 20 20  t_usage));..    
b480: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
b490: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
b4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b4e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
b4f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
b500: 74 74 65 6d 70 74 73 20 74 6f 20 61 6c 6c 6f 63  ttempts to alloc
b510: 61 74 65 20 61 6e 64 20 69 6e 69 74 69 61 6c 69  ate and initiali
b520: 7a 65 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20  ze a native..   
b530: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
b540: 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65  ef="UnsafeNative
b550: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
b560: 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a  index_info" />..
b570: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
b580: 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
b590: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b5a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b5b0: 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72  am name="nConstr
b5c0: 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  aint">..        
b5d0: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
b5e0: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
b5f0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
b600: 6e 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73  nt" /> instances
b610: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
b620: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70   pre-allocate sp
b630: 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20  ace for...      
b640: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
b650: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b660: 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42  am name="nOrderB
b670: 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
b680: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
b690: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b6a0: 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e  IndexOrderBy" />
b6b0: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20   instances to.. 
b6c0: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61         /// pre-a
b6d0: 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
b6e0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
b6f0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b700: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
b710: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
b720: 20 6e 65 77 6c 79 20 61 6c 6c 6f 63 61 74 65 64   newly allocated
b730: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
b740: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
b750: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
b760: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
b770: 78 5f 69 6e 66 6f 22 20 2f 3e 20 73 74 72 75 63  x_info" /> struc
b780: 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ture..        //
b790: 2f 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65 66  / -OR- <see cref
b7a0: 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f  ="IntPtr.Zero" /
b7b0: 3e 20 69 66 20 69 74 20 63 6f 75 6c 64 20 6e 6f  > if it could no
b7c0: 74 20 62 65 20 66 75 6c 6c 79 20 61 6c 6c 6f 63  t be fully alloc
b7d0: 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
b7e0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
b7f0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
b800: 74 61 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c  tatic IntPtr All
b810: 6f 63 61 74 65 41 6e 64 49 6e 69 74 69 61 6c 69  ocateAndInitiali
b820: 7a 65 4e 61 74 69 76 65 28 0d 0a 20 20 20 20 20  zeNative(..     
b830: 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73         int nCons
b840: 74 72 61 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20  traint,..       
b850: 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42       int nOrderB
b860: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
b870: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
b880: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
b890: 70 49 6e 64 65 78 20 3d 20 49 6e 74 50 74 72 2e  pIndex = IntPtr.
b8a0: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
b8b0: 20 20 20 49 6e 74 50 74 72 20 70 49 6e 66 6f 20     IntPtr pInfo 
b8c0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
b8d0: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
b8e0: 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d  tr pConstraint =
b8f0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
b900: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
b910: 72 20 70 4f 72 64 65 72 42 79 20 3d 20 49 6e 74  r pOrderBy = Int
b920: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
b930: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
b940: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d  onstraintUsage =
b950: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
b960: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
b970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
b980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b990: 20 69 6e 74 20 73 69 7a 65 4f 66 49 6e 66 6f 54   int sizeOfInfoT
b9a0: 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ype;..          
b9b0: 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66        int sizeOf
b9c0: 4f 72 64 65 72 42 79 54 79 70 65 3b 0d 0a 20 20  OrderByType;..  
b9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
b9e0: 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
b9f0: 6e 74 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20  ntType;..       
ba00: 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
ba10: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
ba20: 67 65 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20  geType;....     
ba30: 20 20 20 20 20 20 20 20 20 20 20 53 69 7a 65 4f             SizeO
ba40: 66 4e 61 74 69 76 65 28 6f 75 74 20 73 69 7a 65  fNative(out size
ba50: 4f 66 49 6e 66 6f 54 79 70 65 2c 20 6f 75 74 20  OfInfoType, out 
ba60: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
ba70: 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Type,..         
ba80: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 20 73             out s
ba90: 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
baa0: 2c 20 6f 75 74 20 73 69 7a 65 4f 66 43 6f 6e 73  , out sizeOfCons
bab0: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 29  traintUsageType)
bac0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
bad0: 20 20 20 20 20 69 66 20 28 28 73 69 7a 65 4f 66       if ((sizeOf
bae0: 49 6e 66 6f 54 79 70 65 20 3e 20 30 29 20 26 26  InfoType > 0) &&
baf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bb00: 20 20 20 20 20 20 28 73 69 7a 65 4f 66 43 6f 6e        (sizeOfCon
bb10: 73 74 72 61 69 6e 74 54 79 70 65 20 3e 20 30 29  straintType > 0)
bb20: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
bb30: 20 20 20 20 20 20 20 20 20 28 73 69 7a 65 4f 66           (sizeOf
bb40: 4f 72 64 65 72 42 79 54 79 70 65 20 3e 20 30 29  OrderByType > 0)
bb50: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
bb60: 20 20 20 20 20 20 20 20 20 28 73 69 7a 65 4f 66           (sizeOf
bb70: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54  ConstraintUsageT
bb80: 79 70 65 20 3e 20 30 29 29 0d 0a 20 20 20 20 20  ype > 0))..     
bb90: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbb0: 20 20 70 49 6e 66 6f 20 3d 20 53 51 4c 69 74 65    pInfo = SQLite
bbc0: 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28  Memory.Allocate(
bbd0: 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 29 3b  sizeOfInfoType);
bbe0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
bbf0: 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61          pConstra
bc00: 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  int = SQLiteMemo
bc10: 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a 20 20  ry.Allocate(..  
bc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc30: 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f 6e 73        sizeOfCons
bc40: 74 72 61 69 6e 74 54 79 70 65 20 2a 20 6e 43 6f  traintType * nCo
bc50: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
bc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc70: 20 20 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c    pOrderBy = SQL
bc80: 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
bc90: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
bca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a               siz
bcb0: 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20 2a  eOfOrderByType *
bcc0: 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 0d 0a 20   nOrderBy);.... 
bcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bce0: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73     pConstraintUs
bcf0: 61 67 65 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  age = SQLiteMemo
bd00: 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a 20 20  ry.Allocate(..  
bd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd20: 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f 6e 73        sizeOfCons
bd30: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 20  traintUsageType 
bd40: 2a 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d  * nConstraint);.
bd50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
bd60: 20 20 20 20 20 20 20 69 66 20 28 28 70 49 6e 66         if ((pInf
bd70: 6f 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  o != IntPtr.Zero
bd80: 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
bd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
bda0: 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 49 6e  Constraint != In
bdb0: 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d 0a 20  tPtr.Zero) &&.. 
bdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdd0: 20 20 20 20 20 20 20 28 70 4f 72 64 65 72 42 79         (pOrderBy
bde0: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
bdf0: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
be00: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 43               (pC
be10: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21  onstraintUsage !
be20: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 0d  = IntPtr.Zero)).
be30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
be40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
be50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be60: 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d  int offset = 0;.
be70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
be80: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
be90: 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
bea0: 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t32(..          
beb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bec0: 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c    pInfo, offset,
bed0: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a   nConstraint);..
bee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bef0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
bf00: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
bf10: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
bf20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf30: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
bf40: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
bf50: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
bf60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bf70: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
bf80: 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
bf90: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
bfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfb0: 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c    pInfo, offset,
bfc0: 20 70 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a   pConstraint);..
bfd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bfe0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
bff0: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
c000: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
c010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c020: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
c030: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
c040: 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
c050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c060: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
c070: 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
c080: 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
c090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0a0: 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20   pInfo, offset, 
c0b0: 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20  nOrderBy);....  
c0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0d0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c0e0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c0f0: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c110: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
c120: 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
c130: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c150: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
c160: 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
c170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c190: 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20 70 4f 72  nfo, offset, pOr
c1a0: 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  derBy);....     
c1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1c0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
c1d0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
c1e0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
c1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c200: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74       offset, Int
c210: 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72  Ptr.Size, IntPtr
c220: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
c230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c240: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
c250: 2e 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20  .WriteIntPtr(.. 
c260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c270: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f             pInfo
c280: 2c 20 6f 66 66 73 65 74 2c 20 70 43 6f 6e 73 74  , offset, pConst
c290: 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 0d 0a  raintUsage);....
c2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2b0: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 20 3d          pIndex =
c2c0: 20 70 49 6e 66 6f 3b 20 2f 2a 20 4e 4f 54 45 3a   pInfo; /* NOTE:
c2d0: 20 53 75 63 63 65 73 73 2e 20 2a 2f 0d 0a 20 20   Success. */..  
c2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
c300: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
c310: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
c320: 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
c330: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c340: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
c350: 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e  Index == IntPtr.
c360: 5a 65 72 6f 29 20 2f 2a 20 4e 4f 54 45 3a 20 46  Zero) /* NOTE: F
c370: 61 69 6c 75 72 65 3f 20 2a 2f 0d 0a 20 20 20 20  ailure? */..    
c380: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3a0: 20 20 20 69 66 20 28 70 43 6f 6e 73 74 72 61 69     if (pConstrai
c3b0: 6e 74 55 73 61 67 65 20 21 3d 20 49 6e 74 50 74  ntUsage != IntPt
c3c0: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
c3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3f0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65          SQLiteMe
c400: 6d 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e 73 74  mory.Free(pConst
c410: 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20  raintUsage);..  
c420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c430: 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e        pConstrain
c440: 74 55 73 61 67 65 20 3d 20 49 6e 74 50 74 72 2e  tUsage = IntPtr.
c450: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
c460: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
c470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c480: 20 20 20 20 69 66 20 28 70 4f 72 64 65 72 42 79      if (pOrderBy
c490: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
c4a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c4b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4d0: 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72   SQLiteMemory.Fr
c4e0: 65 65 28 70 4f 72 64 65 72 42 79 29 3b 0d 0a 20  ee(pOrderBy);.. 
c4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c500: 20 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 20         pOrderBy 
c510: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
c520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c530: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
c540: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
c550: 28 70 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20  (pConstraint != 
c560: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
c570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c580: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c590: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
c5a0: 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
c5b0: 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20  Constraint);..  
c5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5d0: 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e        pConstrain
c5e0: 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  t = IntPtr.Zero;
c5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c600: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
c620: 66 20 28 70 49 6e 66 6f 20 21 3d 20 49 6e 74 50  f (pInfo != IntP
c630: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
c640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
c650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c660: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
c670: 65 6d 6f 72 79 2e 46 72 65 65 28 70 49 6e 66 6f  emory.Free(pInfo
c680: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
c690: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 66              pInf
c6a0: 6f 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  o = IntPtr.Zero;
c6b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c6c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
c6d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
c6e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
c6f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c700: 70 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  pIndex;..       
c710: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
c720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c760: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
c770: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
c780: 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72 65 65          /// Free
c790: 73 20 61 6c 6c 20 74 68 65 20 6d 65 6d 6f 72 79  s all the memory
c7a0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
c7b0: 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20   a native..     
c7c0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
c7d0: 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  ="UnsafeNativeMe
c7e0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
c7f0: 64 65 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20  dex_info" />..  
c800: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
c810: 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
c820: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
c830: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
c840: 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d   name="pIndex">.
c850: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
c860: 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
c870: 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  to the native sq
c880: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
c890: 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d 0a 20   structure to.. 
c8a0: 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 65 65 2e         /// free.
c8b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
c8c0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
c8d0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76  private static v
c8e0: 6f 69 64 20 46 72 65 65 4e 61 74 69 76 65 28 0d  oid FreeNative(.
c8f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
c900: 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20  Ptr pIndex..    
c910: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
c920: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c930: 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d 3d 20    if (pIndex == 
c940: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
c950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c960: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
c970: 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20       int offset 
c980: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
c990: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
c9a0: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
c9b0: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
c9c0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
c9d0: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49  , sizeof(int), I
c9e0: 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a  ntPtr.Size);....
c9f0: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
ca00: 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d  tr pConstraint =
ca10: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
ca20: 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  eadIntPtr(..    
ca30: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
ca40: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
ca50: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
ca60: 63 6f 6e 73 74 72 61 69 6e 74 4f 66 66 73 65 74  constraintOffset
ca70: 20 3d 20 6f 66 66 73 65 74 3b 0d 0a 0d 0a 20 20   = offset;....  
ca80: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
ca90: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
caa0: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
cab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cac0: 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
cad0: 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ize, sizeof(int)
cae0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
caf0: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
cb00: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
cb10: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
cb20: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
cb30: 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
cb40: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
cb50: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
cb60: 20 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69   pOrderBy = SQLi
cb70: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
cb80: 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
cb90: 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f         pIndex, o
cba0: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
cbb0: 20 20 20 20 20 20 20 69 6e 74 20 6f 72 64 65 72         int order
cbc0: 42 79 4f 66 66 73 65 74 20 3d 20 6f 66 66 73 65  ByOffset = offse
cbd0: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
cbe0: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
cbf0: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
cc00: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
cc10: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
cc20: 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74  IntPtr.Size, Int
cc30: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
cc40: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
cc50: 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   pConstraintUsag
cc60: 65 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  e = SQLiteMarsha
cc70: 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20  l.ReadIntPtr(.. 
cc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
cc90: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
cca0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
ccb0: 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  nt constraintUsa
ccc0: 67 65 4f 66 66 73 65 74 20 3d 20 6f 66 66 73 65  geOffset = offse
ccd0: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
cce0: 20 20 69 66 20 28 70 43 6f 6e 73 74 72 61 69 6e    if (pConstrain
ccf0: 74 55 73 61 67 65 20 21 3d 20 49 6e 74 50 74 72  tUsage != IntPtr
cd00: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
cd10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
cd20: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
cd30: 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e 73 74 72  ory.Free(pConstr
cd40: 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20 20  aintUsage);..   
cd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
cd60: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
cd70: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
cd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd90: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
cda0: 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  iteIntPtr(..    
cdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdc0: 70 49 6e 64 65 78 2c 20 63 6f 6e 73 74 72 61 69  pIndex, constrai
cdd0: 6e 74 55 73 61 67 65 4f 66 66 73 65 74 2c 20 70  ntUsageOffset, p
cde0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 29  ConstraintUsage)
cdf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
ce00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ce10: 69 66 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20  if (pOrderBy != 
ce20: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
ce30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ce40: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
ce50: 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
ce60: 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20  OrderBy);..     
ce70: 20 20 20 20 20 20 20 20 20 20 20 70 4f 72 64 65             pOrde
ce80: 72 42 79 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  rBy = IntPtr.Zer
ce90: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
cea0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
ceb0: 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
cec0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ced0: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 72        pIndex, or
cee0: 64 65 72 42 79 4f 66 66 73 65 74 2c 20 70 4f 72  derByOffset, pOr
cef0: 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20  derBy);..       
cf00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
cf10: 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 73 74        if (pConst
cf20: 72 61 69 6e 74 20 21 3d 20 49 6e 74 50 74 72 2e  raint != IntPtr.
cf30: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
cf40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cf50: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
cf60: 72 79 2e 46 72 65 65 28 70 43 6f 6e 73 74 72 61  ry.Free(pConstra
cf70: 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  int);..         
cf80: 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69         pConstrai
cf90: 6e 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  nt = IntPtr.Zero
cfa0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
cfb0: 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
cfc0: 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 0d  al.WriteIntPtr(.
cfd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cfe0: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 63 6f 6e       pIndex, con
cff0: 73 74 72 61 69 6e 74 4f 66 66 73 65 74 2c 20 70  straintOffset, p
d000: 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20  Constraint);..  
d010: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
d020: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
d030: 49 6e 64 65 78 20 21 3d 20 49 6e 74 50 74 72 2e  Index != IntPtr.
d040: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
d050: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d060: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
d070: 72 79 2e 46 72 65 65 28 70 49 6e 64 65 78 29 3b  ry.Free(pIndex);
d080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d090: 20 20 70 49 6e 64 65 78 20 3d 20 49 6e 74 50 74    pIndex = IntPt
d0a0: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
d0b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d0c0: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
d0d0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
d0e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
d0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d120: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
d130: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
d140: 72 6e 61 6c 20 4d 61 72 73 68 61 6c 20 48 65 6c  rnal Marshal Hel
d150: 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
d160: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
d170: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
d180: 43 6f 6e 76 65 72 74 73 20 61 20 6e 61 74 69 76  Converts a nativ
d190: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e  e pointer to a n
d1a0: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e  ative sqlite3_in
d1b0: 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75  dex_info structu
d1c0: 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
d1d0: 69 6e 74 6f 20 61 20 6e 65 77 20 3c 73 65 65 20  into a new <see 
d1e0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
d1f0: 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
d200: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
d210: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d220: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
d230: 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22  am name="pIndex"
d240: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
d250: 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
d260: 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20  r to the native 
d270: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
d280: 66 6f 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d  fo structure to.
d290: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  .        /// con
d2a0: 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
d2b0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
d2c0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
d2d0: 6e 61 6d 65 3d 22 69 6e 63 6c 75 64 65 4f 75 74  name="includeOut
d2e0: 70 75 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  put">..        /
d2f0: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 69  // Non-zero to i
d300: 6e 63 6c 75 64 65 20 66 69 65 6c 64 73 20 66 72  nclude fields fr
d310: 6f 6d 20 74 68 65 20 6f 75 74 70 75 74 73 20 70  om the outputs p
d320: 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 61  ortion of the na
d330: 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tive..        //
d340: 2f 20 73 74 72 75 63 74 75 72 65 3b 20 6f 74 68  / structure; oth
d350: 65 72 77 69 73 65 2c 20 74 68 65 20 22 6f 75 74  erwise, the "out
d360: 70 75 74 22 20 66 69 65 6c 64 73 20 77 69 6c 6c  put" fields will
d370: 20 6e 6f 74 20 62 65 20 72 65 61 64 2e 0d 0a 20   not be read... 
d380: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
d390: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
d3a0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e   <param name="in
d3b0: 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  dex">..        /
d3c0: 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
d3d0: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
d3e0: 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
d3f0: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20   to contain the 
d400: 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f  newly..        /
d410: 2f 2f 20 63 72 65 61 74 65 64 20 3c 73 65 65 20  // created <see 
d420: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
d430: 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
d440: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
d450: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
d460: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
d470: 74 61 74 69 63 20 76 6f 69 64 20 46 72 6f 6d 49  tatic void FromI
d480: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
d490: 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
d4a0: 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
d4b0: 62 6f 6f 6c 20 69 6e 63 6c 75 64 65 4f 75 74 70  bool includeOutp
d4c0: 75 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ut,..           
d4d0: 20 72 65 66 20 53 51 4c 69 74 65 49 6e 64 65 78   ref SQLiteIndex
d4e0: 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20   index..        
d4f0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
d500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
d510: 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50   (pIndex == IntP
d520: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
d530: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d540: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d550: 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
d560: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d570: 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20  int nConstraint 
d580: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
d590: 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20  ReadInt32(..    
d5a0: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
d5b0: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
d5c0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
d5d0: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
d5e0: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
d5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d600: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
d610: 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69  (int), IntPtr.Si
d620: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
d630: 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73      IntPtr pCons
d640: 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d  traint = SQLiteM
d650: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
d660: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
d670: 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73      pIndex, offs
d680: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
d690: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
d6a0: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
d6b0: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
d6c0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
d6d0: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73  , IntPtr.Size, s
d6e0: 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
d6f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
d700: 6e 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74  nOrderBy = SQLit
d710: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
d720: 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
d730: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
d740: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
d750: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
d760: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
d770: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
d780: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
d790: 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20  t, sizeof(int), 
d7a0: 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
d7b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
d7c0: 50 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20 53  Ptr pOrderBy = S
d7d0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
d7e0: 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
d7f0: 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78            pIndex
d800: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
d810: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
d820: 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   pConstraintUsag
d830: 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e = IntPtr.Zero;
d840: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d850: 69 66 20 28 69 6e 63 6c 75 64 65 4f 75 74 70 75  if (includeOutpu
d860: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
d870: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d880: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
d890: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
d8a0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
d8c0: 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  set, IntPtr.Size
d8d0: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d  , IntPtr.Size);.
d8e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d8f0: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73     pConstraintUs
d900: 61 67 65 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  age = SQLiteMars
d910: 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d  hal.ReadIntPtr(.
d920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d930: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
d940: 73 65 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  set);..         
d950: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d960: 20 20 20 20 69 6e 64 65 78 20 3d 20 6e 65 77 20      index = new 
d970: 53 51 4c 69 74 65 49 6e 64 65 78 28 6e 43 6f 6e  SQLiteIndex(nCon
d980: 73 74 72 61 69 6e 74 2c 20 6e 4f 72 64 65 72 42  straint, nOrderB
d990: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
d9a0: 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75   SQLiteIndexInpu
d9b0: 74 73 20 69 6e 70 75 74 73 20 3d 20 69 6e 64 65  ts inputs = inde
d9c0: 78 2e 49 6e 70 75 74 73 3b 0d 0a 0d 0a 20 20 20  x.Inputs;....   
d9d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 70           if (inp
d9e0: 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  uts == null)..  
d9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
da00: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
da10: 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
da20: 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 63 6f 6e  Constraint[] con
da30: 73 74 72 61 69 6e 74 73 20 3d 20 69 6e 70 75 74  straints = input
da40: 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a  s.Constraints;..
da50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
da60: 20 28 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d 3d   (constraints ==
da70: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
da80: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
da90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
daa0: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
dab0: 79 5b 5d 20 6f 72 64 65 72 42 79 73 20 3d 20 69  y[] orderBys = i
dac0: 6e 70 75 74 73 2e 4f 72 64 65 72 42 79 73 3b 0d  nputs.OrderBys;.
dad0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
dae0: 66 20 28 6f 72 64 65 72 42 79 73 20 3d 3d 20 6e  f (orderBys == n
daf0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
db00: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
db10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70  .            Typ
db20: 65 20 63 6f 6e 73 74 72 61 69 6e 74 54 79 70 65  e constraintType
db30: 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20 20   = typeof(..    
db40: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
db50: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
db60: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
db70: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
db80: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
db90: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79  zeOfConstraintTy
dba0: 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a  pe = Marshal.Siz
dbb0: 65 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eOf(..          
dbc0: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
dbd0: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
dbe0: 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
dbf0: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20  Constraint = 0; 
dc00: 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43  iConstraint < nC
dc10: 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73  onstraint; iCons
dc20: 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20  traint++)..     
dc30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
dc40: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
dc50: 20 70 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74   pOffset = SQLit
dc60: 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46  eMarshal.IntPtrF
dc70: 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20  orOffset(..     
dc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
dc90: 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69 43 6f 6e  Constraint, iCon
dca0: 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66  straint * sizeOf
dcb0: 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29 3b  ConstraintType);
dcc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dcd0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
dce0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
dcf0: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
dd00: 20 63 6f 6e 73 74 72 61 69 6e 74 20 3d 0d 0a 20   constraint =.. 
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd20: 20 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65     (UnsafeNative
dd30: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
dd40: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
dd50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dd60: 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
dd70: 61 6c 2e 50 74 72 54 6f 53 74 72 75 63 74 75 72  al.PtrToStructur
dd80: 65 28 70 4f 66 66 73 65 74 2c 20 63 6f 6e 73 74  e(pOffset, const
dd90: 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20  raintType);.... 
dda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
ddb0: 6f 6e 73 74 72 61 69 6e 74 73 5b 69 43 6f 6e 73  onstraints[iCons
ddc0: 74 72 61 69 6e 74 5d 20 3d 20 6e 65 77 20 53 51  traint] = new SQ
ddd0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
dde0: 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
ddf0: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
de00: 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  aint);..        
de10: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
de20: 20 20 20 20 20 54 79 70 65 20 6f 72 64 65 72 42       Type orderB
de30: 79 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28 0d  yType = typeof(.
de40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
de50: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
de60: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
de70: 65 78 5f 6f 72 64 65 72 62 79 29 3b 0d 0a 0d 0a  ex_orderby);....
de80: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
de90: 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70  sizeOfOrderByTyp
dea0: 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
deb0: 4f 66 28 6f 72 64 65 72 42 79 54 79 70 65 29 3b  Of(orderByType);
dec0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ded0: 66 6f 72 20 28 69 6e 74 20 69 4f 72 64 65 72 42  for (int iOrderB
dee0: 79 20 3d 20 30 3b 20 69 4f 72 64 65 72 42 79 20  y = 0; iOrderBy 
def0: 3c 20 6e 4f 72 64 65 72 42 79 3b 20 69 4f 72 64  < nOrderBy; iOrd
df00: 65 72 42 79 2b 2b 29 0d 0a 20 20 20 20 20 20 20  erBy++)..       
df10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
df20: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
df30: 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  Offset = SQLiteM
df40: 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72  arshal.IntPtrFor
df50: 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20  Offset(..       
df60: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f 72               pOr
df70: 64 65 72 42 79 2c 20 69 4f 72 64 65 72 42 79 20  derBy, iOrderBy 
df80: 2a 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54  * sizeOfOrderByT
df90: 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ype);....       
dfa0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
dfb0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
dfc0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
dfd0: 62 79 20 6f 72 64 65 72 42 79 20 3d 0d 0a 20 20  by orderBy =..  
dfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dff0: 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d    (UnsafeNativeM
e000: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
e010: 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 0d 0a 20  ndex_orderby).. 
e020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e030: 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50         Marshal.P
e040: 74 72 54 6f 53 74 72 75 63 74 75 72 65 28 70 4f  trToStructure(pO
e050: 66 66 73 65 74 2c 20 6f 72 64 65 72 42 79 54 79  ffset, orderByTy
e060: 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  pe);....        
e070: 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79 73          orderBys
e080: 5b 69 4f 72 64 65 72 42 79 5d 20 3d 20 6e 65 77  [iOrderBy] = new
e090: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
e0a0: 72 42 79 28 6f 72 64 65 72 42 79 29 3b 0d 0a 20  rBy(orderBy);.. 
e0b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
e0c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e0d0: 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 29 0d 0a  includeOutput)..
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
e100: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
e110: 73 20 6f 75 74 70 75 74 73 20 3d 20 69 6e 64 65  s outputs = inde
e120: 78 2e 4f 75 74 70 75 74 73 3b 0d 0a 0d 0a 20 20  x.Outputs;....  
e130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
e140: 20 28 6f 75 74 70 75 74 73 20 3d 3d 20 6e 75 6c   (outputs == nul
e150: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
e160: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
e170: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e180: 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f     SQLiteIndexCo
e190: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20  nstraintUsage[] 
e1a0: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  constraintUsages
e1b0: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
e1c0: 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
e1d0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  ConstraintUsages
e1e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e1f0: 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
e200: 69 6e 74 55 73 61 67 65 73 20 3d 3d 20 6e 75 6c  intUsages == nul
e210: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
e220: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
e230: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e240: 20 20 20 54 79 70 65 20 63 6f 6e 73 74 72 61 69     Type constrai
e250: 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 74 79  ntUsageType = ty
e260: 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  peof(..         
e270: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
e280: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
e290: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
e2a0: 73 74 72 61 69 6e 74 5f 75 73 61 67 65 29 3b 0d  straint_usage);.
e2b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e2c0: 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e     int sizeOfCon
e2d0: 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65  straintUsageType
e2e0: 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
e2f0: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
e300: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
e310: 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d  ntUsageType);...
e320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e330: 20 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74   for (int iConst
e340: 72 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73  raint = 0; iCons
e350: 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72  traint < nConstr
e360: 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e  aint; iConstrain
e370: 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20  t++)..          
e380: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e390: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
e3a0: 50 74 72 20 70 4f 66 66 73 65 74 20 3d 20 53 51  Ptr pOffset = SQ
e3b0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50  LiteMarshal.IntP
e3c0: 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20  trForOffset(..  
e3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3e0: 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e        pConstrain
e3f0: 74 55 73 61 67 65 2c 20 69 43 6f 6e 73 74 72 61  tUsage, iConstra
e400: 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73  int * sizeOfCons
e410: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 29  traintUsageType)
e420: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e430: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
e440: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
e450: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
e460: 72 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e 73  raint_usage cons
e470: 74 72 61 69 6e 74 55 73 61 67 65 20 3d 0d 0a 20  traintUsage =.. 
e480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e490: 20 20 20 20 20 20 20 28 55 6e 73 61 66 65 4e 61         (UnsafeNa
e4a0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
e4b0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
e4c0: 61 69 6e 74 5f 75 73 61 67 65 29 0d 0a 20 20 20  aint_usage)..   
e4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4e0: 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
e4f0: 2e 50 74 72 54 6f 53 74 72 75 63 74 75 72 65 28  .PtrToStructure(
e500: 70 4f 66 66 73 65 74 2c 20 63 6f 6e 73 74 72 61  pOffset, constra
e510: 69 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a  intUsageType);..
e520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e530: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
e540: 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72 61 69  Usages[iConstrai
e550: 6e 74 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  nt] = new SQLite
e560: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
e570: 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  sage(..         
e580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
e590: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 29 3b  onstraintUsage);
e5a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e5b0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
e5c0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
e5d0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
e5e0: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
e5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e600: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
e610: 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74  Size, sizeof(int
e620: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
e630: 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49         outputs.I
e640: 6e 64 65 78 4e 75 6d 62 65 72 20 3d 20 53 51 4c  ndexNumber = SQL
e650: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
e660: 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20  nt32(..         
e670: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
e680: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
e690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e6a0: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
e6b0: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
e6c0: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
e6d0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
e6e0: 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e   sizeof(int), In
e6f0: 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
e700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e710: 75 74 70 75 74 73 2e 49 6e 64 65 78 53 74 72 69  utputs.IndexStri
e720: 6e 67 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  ng = SQLiteStrin
e730: 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  g.StringFromUtf8
e740: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
e750: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
e760: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
e770: 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f 66  ntPtr(pIndex, of
e780: 66 73 65 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  fset));....     
e790: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
e7a0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
e7b0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
e7c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e7d0: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74       offset, Int
e7e0: 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66  Ptr.Size, sizeof
e7f0: 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  (int));....     
e800: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
e810: 74 73 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e 64  ts.NeedToFreeInd
e820: 65 78 53 74 72 69 6e 67 20 3d 20 53 51 4c 69 74  exString = SQLit
e830: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
e840: 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
e850: 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c           pIndex,
e860: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
e870: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
e880: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
e890: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
e8a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e8b0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
e8c0: 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65  izeof(int), size
e8d0: 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
e8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
e8f0: 70 75 74 73 2e 4f 72 64 65 72 42 79 43 6f 6e 73  puts.OrderByCons
e900: 75 6d 65 64 20 3d 20 53 51 4c 69 74 65 4d 61 72  umed = SQLiteMar
e910: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d  shal.ReadInt32(.
e920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e930: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
e940: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
e950: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
e960: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
e970: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
e980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e990: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
e9a0: 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 64  f(int), sizeof(d
e9b0: 6f 75 62 6c 65 29 29 3b 0d 0a 0d 0a 20 20 20 20  ouble));....    
e9c0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
e9d0: 75 74 73 2e 45 73 74 69 6d 61 74 65 64 43 6f 73  uts.EstimatedCos
e9e0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
e9f0: 6c 2e 52 65 61 64 44 6f 75 62 6c 65 28 0d 0a 20  l.ReadDouble(.. 
ea00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea10: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
ea20: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
ea30: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
ea40: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
ea50: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
ea60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea70: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
ea80: 64 6f 75 62 6c 65 29 2c 20 73 69 7a 65 6f 66 28  double), sizeof(
ea90: 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  long));....     
eaa0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
eab0: 75 74 70 75 74 73 2e 43 61 6e 55 73 65 45 73 74  utputs.CanUseEst
eac0: 69 6d 61 74 65 64 52 6f 77 73 28 29 29 0d 0a 20  imatedRows()).. 
ead0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
eae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eaf0: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73        outputs.Es
eb00: 74 69 6d 61 74 65 64 52 6f 77 73 20 3d 20 53 51  timatedRows = SQ
eb10: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
eb20: 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20  Int64(..        
eb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb40: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
eb50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eb60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
eb70: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
eb80: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
eb90: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
eba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebb0: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
ebc0: 6c 6f 6e 67 29 2c 20 73 69 7a 65 6f 66 28 69 6e  long), sizeof(in
ebd0: 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
ebe0: 20 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70          if (outp
ebf0: 75 74 73 2e 43 61 6e 55 73 65 49 6e 64 65 78 46  uts.CanUseIndexF
ec00: 6c 61 67 73 28 29 29 0d 0a 20 20 20 20 20 20 20  lags())..       
ec10: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ec20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec30: 6f 75 74 70 75 74 73 2e 49 6e 64 65 78 46 6c 61  outputs.IndexFla
ec40: 67 73 20 3d 20 28 53 51 4c 69 74 65 49 6e 64 65  gs = (SQLiteInde
ec50: 78 46 6c 61 67 73 29 0d 0a 20 20 20 20 20 20 20  xFlags)..       
ec60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec70: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
ec80: 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c  eadInt32(pIndex,
ec90: 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20 20   offset);..     
eca0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecc0: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
ecd0: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
ece0: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
ecf0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
ed00: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73  , sizeof(int), s
ed10: 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d  izeof(long));...
ed20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ed30: 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61 6e   if (outputs.Can
ed40: 55 73 65 43 6f 6c 75 6d 6e 73 55 73 65 64 28 29  UseColumnsUsed()
ed50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ed60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ed70: 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74            output
ed80: 73 2e 43 6f 6c 75 6d 6e 73 55 73 65 64 20 3d 20  s.ColumnsUsed = 
ed90: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
eda0: 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20  adInt64(..      
edb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
edc0: 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74    pIndex, offset
edd0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
ede0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
edf0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
ee00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
ee10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee50: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
ee60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
ee70: 20 20 20 20 20 2f 2f 2f 20 50 6f 70 75 6c 61 74       /// Populat
ee80: 65 73 20 74 68 65 20 6f 75 74 70 75 74 73 20 6f  es the outputs o
ee90: 66 20 61 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65  f a pre-allocate
eea0: 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  d native sqlite3
eeb0: 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20  _index_info..   
eec0: 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
eed0: 72 65 20 75 73 69 6e 67 20 61 6e 20 65 78 69 73  re using an exis
eee0: 74 69 6e 67 20 3c 73 65 65 20 63 72 65 66 3d 22  ting <see cref="
eef0: 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20  SQLiteIndex" /> 
ef00: 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
ef10: 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  /// instance... 
ef20: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
ef30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
ef40: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
ef50: 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  index">..       
ef60: 20 2f 2f 2f 20 54 68 65 20 65 78 69 73 74 69 6e   /// The existin
ef70: 67 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  g <see cref="SQL
ef80: 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a  iteIndex" /> obj
ef90: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e  ect instance con
efa0: 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20  taining..       
efb0: 20 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 20   /// the output 
efc0: 64 61 74 61 20 74 6f 20 75 73 65 2e 0d 0a 20 20  data to use...  
efd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
efe0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
eff0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49 6e  <param name="pIn
f000: 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  dex">..        /
f010: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
f020: 69 6e 74 65 72 20 74 6f 20 74 68 65 20 70 72 65  inter to the pre
f030: 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69 76  -allocated nativ
f040: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
f050: 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  info..        //
f060: 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  / structure...  
f070: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
f080: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
f090: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 63  <param name="inc
f0a0: 6c 75 64 65 49 6e 70 75 74 22 3e 0d 0a 20 20 20  ludeInput">..   
f0b0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
f0c0: 6f 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 69 65  o to include fie
f0d0: 6c 64 73 20 66 72 6f 6d 20 74 68 65 20 69 6e 70  lds from the inp
f0e0: 75 74 73 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74  uts portion of t
f0f0: 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
f100: 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
f110: 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65  ; otherwise, the
f120: 20 22 69 6e 70 75 74 22 20 66 69 65 6c 64 73 20   "input" fields 
f130: 77 69 6c 6c 20 6e 6f 74 20 62 65 20 77 72 69 74  will not be writ
f140: 74 65 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ten...        //
f150: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
f160: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
f170: 74 69 63 20 76 6f 69 64 20 54 6f 49 6e 74 50 74  tic void ToIntPt
f180: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
f190: 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65  SQLiteIndex inde
f1a0: 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
f1b0: 49 6e 74 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a  IntPtr pIndex,..
f1c0: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
f1d0: 20 69 6e 63 6c 75 64 65 49 6e 70 75 74 0d 0a 20   includeInput.. 
f1e0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
f1f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f200: 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 20 3d       if (index =
f210: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
f220: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
f230: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f240: 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75  SQLiteIndexOutpu
f250: 74 73 20 6f 75 74 70 75 74 73 20 3d 20 69 6e 64  ts outputs = ind
f260: 65 78 2e 4f 75 74 70 75 74 73 3b 0d 0a 0d 0a 20  ex.Outputs;.... 
f270: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
f280: 75 74 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  utputs == null).
f290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f2a0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
f2b0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
f2c0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
f2d0: 67 65 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 55  ge[] constraintU
f2e0: 73 61 67 65 73 20 3d 0d 0a 20 20 20 20 20 20 20  sages =..       
f2f0: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
f300: 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  .ConstraintUsage
f310: 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
f320: 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74    if (constraint
f330: 55 73 61 67 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d  Usages == null).
f340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f350: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
f360: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
f370: 64 65 78 49 6e 70 75 74 73 20 69 6e 70 75 74 73  dexInputs inputs
f380: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
f390: 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
f3a0: 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 63 6f  xConstraint[] co
f3b0: 6e 73 74 72 61 69 6e 74 73 20 3d 20 6e 75 6c 6c  nstraints = null
f3c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ;..            S
f3d0: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
f3e0: 79 5b 5d 20 6f 72 64 65 72 42 79 73 20 3d 20 6e  y[] orderBys = n
f3f0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
f400: 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 49      if (includeI
f410: 6e 70 75 74 29 0d 0a 20 20 20 20 20 20 20 20 20  nput)..         
f420: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f430: 20 20 20 20 20 20 69 6e 70 75 74 73 20 3d 20 69        inputs = i
f440: 6e 64 65 78 2e 49 6e 70 75 74 73 3b 0d 0a 0d 0a  ndex.Inputs;....
f450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f460: 69 66 20 28 69 6e 70 75 74 73 20 3d 3d 20 6e 75  if (inputs == nu
f470: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
f480: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
f490: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f4a0: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 73 20      constraints 
f4b0: 3d 20 69 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61  = inputs.Constra
f4c0: 69 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ints;....       
f4d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
f4e0: 73 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c  straints == null
f4f0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
f500: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
f510: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f520: 20 20 6f 72 64 65 72 42 79 73 20 3d 20 69 6e 70    orderBys = inp
f530: 75 74 73 2e 4f 72 64 65 72 42 79 73 3b 0d 0a 0d  uts.OrderBys;...
f540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f550: 20 69 66 20 28 6f 72 64 65 72 42 79 73 20 3d 3d   if (orderBys ==
f560: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f570: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f580: 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rn;..           
f590: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
f5a0: 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d 3d 20    if (pIndex == 
f5b0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
f5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f5d0: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
f5e0: 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20       int offset 
f5f0: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
f600: 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61      int nConstra
f610: 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  int = SQLiteMars
f620: 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 49  hal.ReadInt32(pI
f630: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
f640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
f650: 20 28 69 6e 63 6c 75 64 65 49 6e 70 75 74 20 26   (includeInput &
f660: 26 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20 21  & (nConstraint !
f670: 3d 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 4c 65  = constraints.Le
f680: 6e 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20 20  ngth))..        
f690: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
f6a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
f6b0: 66 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20 21  f (nConstraint !
f6c0: 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  = constraintUsag
f6d0: 65 73 2e 4c 65 6e 67 74 68 29 0d 0a 20 20 20 20  es.Length)..    
f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f6f0: 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
f700: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
f710: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
f720: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
f730: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
f740: 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e   sizeof(int), In
f750: 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
f760: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
f770: 6e 63 6c 75 64 65 49 6e 70 75 74 29 0d 0a 20 20  ncludeInput)..  
f780: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f790: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
f7a0: 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20  Ptr pConstraint 
f7b0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
f7c0: 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20  ReadIntPtr(..   
f7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7e0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
f7f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f800: 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43       int sizeOfC
f810: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20  onstraintType = 
f820: 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74  Marshal.SizeOf(t
f830: 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
f840: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
f850: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
f860: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
f870: 6e 73 74 72 61 69 6e 74 29 29 3b 0d 0a 0d 0a 20  nstraint));.... 
f880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
f890: 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61  or (int iConstra
f8a0: 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72  int = 0; iConstr
f8b0: 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69  aint < nConstrai
f8c0: 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b  nt; iConstraint+
f8d0: 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
f8e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f8f0: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
f900: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
f910: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
f920: 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69  straint constrai
f930: 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  nt =..          
f940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
f950: 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
f960: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
f970: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d  dex_constraint(.
f980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f990: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
f9a0: 73 74 72 61 69 6e 74 73 5b 69 43 6f 6e 73 74 72  straints[iConstr
f9b0: 61 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20  aint]);....     
f9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
f9d0: 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75 72 65  arshal.Structure
f9e0: 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ToPtr(..        
f9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa00: 63 6f 6e 73 74 72 61 69 6e 74 2c 20 53 51 4c 69  constraint, SQLi
fa10: 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72  teMarshal.IntPtr
fa20: 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20  ForOffset(..    
fa30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa40: 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 2c      pConstraint,
fa50: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73   iConstraint * s
fa60: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54  izeOfConstraintT
fa70: 79 70 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ype),..         
fa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
fa90: 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alse);..        
faa0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
fab0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
fac0: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
fad0: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
fae0: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
faf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
fb00: 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
fb10: 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  e, sizeof(int));
fb20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fb30: 69 6e 74 20 6e 4f 72 64 65 72 42 79 20 3d 20 69  int nOrderBy = i
fb40: 6e 63 6c 75 64 65 49 6e 70 75 74 20 3f 0d 0a 20  ncludeInput ?.. 
fb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
fb60: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
fb70: 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  dInt32(pIndex, o
fb80: 66 66 73 65 74 29 20 3a 20 30 3b 0d 0a 0d 0a 20  ffset) : 0;.... 
fb90: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
fba0: 6e 63 6c 75 64 65 49 6e 70 75 74 20 26 26 20 28  ncludeInput && (
fbb0: 6e 4f 72 64 65 72 42 79 20 21 3d 20 6f 72 64 65  nOrderBy != orde
fbc0: 72 42 79 73 2e 4c 65 6e 67 74 68 29 29 0d 0a 20  rBys.Length)).. 
fbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
fbe0: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
fbf0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
fc00: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
fc10: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
fc20: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
fc30: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
fc40: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
fc50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
fc60: 20 28 69 6e 63 6c 75 64 65 49 6e 70 75 74 29 0d   (includeInput).
fc70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
fc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc90: 49 6e 74 50 74 72 20 70 4f 72 64 65 72 42 79 20  IntPtr pOrderBy 
fca0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
fcb0: 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64 65  ReadIntPtr(pInde
fcc0: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
fcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
fce0: 6e 74 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79  nt sizeOfOrderBy
fcf0: 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53  Type = Marshal.S
fd00: 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20  izeOf(typeof(.. 
fd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd20: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
fd30: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
fd40: 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 29 3b 0d  ndex_orderby));.
fd50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
fd60: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 4f 72 64     for (int iOrd
fd70: 65 72 42 79 20 3d 20 30 3b 20 69 4f 72 64 65 72  erBy = 0; iOrder
fd80: 42 79 20 3c 20 6e 4f 72 64 65 72 42 79 3b 20 69  By < nOrderBy; i
fd90: 4f 72 64 65 72 42 79 2b 2b 29 0d 0a 20 20 20 20  OrderBy++)..    
fda0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
fdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdc0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
fdd0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
fde0: 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72 64  ndex_orderby ord
fdf0: 65 72 42 79 20 3d 0d 0a 20 20 20 20 20 20 20 20  erBy =..        
fe00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe10: 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
fe20: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
fe30: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a  index_orderby(..
fe40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe50: 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 64 65              orde
fe60: 72 42 79 73 5b 69 4f 72 64 65 72 42 79 5d 29 3b  rBys[iOrderBy]);
fe70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fe80: 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
fe90: 53 74 72 75 63 74 75 72 65 54 6f 50 74 72 28 0d  StructureToPtr(.
fea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
feb0: 20 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79           orderBy
fec0: 2c 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  , SQLiteMarshal.
fed0: 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
fee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fef0: 20 20 20 20 20 20 20 20 20 20 70 4f 72 64 65 72            pOrder
ff00: 42 79 2c 20 69 4f 72 64 65 72 42 79 20 2a 20 73  By, iOrderBy * s
ff10: 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
ff20: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
ff30: 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73              fals
ff40: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
ff50: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
ff60: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
ff70: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
ff80: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
ff90: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
ffa0: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
ffb0: 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20  t, IntPtr.Size, 
ffc0: 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
ffd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
ffe0: 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 55  Ptr pConstraintU
fff0: 73 61 67 65 20 3d 20 53 51 4c 69 74 65 4d 61 72  sage = SQLiteMar
10000 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
10010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10020 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74    pIndex, offset
10030 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10040 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73    int sizeOfCons
10050 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 20  traintUsageType 
10060 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66  = Marshal.SizeOf
10070 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20  (typeof(..      
10080 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
10090 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
100a0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
100b0 74 72 61 69 6e 74 5f 75 73 61 67 65 29 29 3b 0d  traint_usage));.
100c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  ...            f
100d0 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61  or (int iConstra
100e0 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72  int = 0; iConstr
100f0 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69  aint < nConstrai
10100 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b  nt; iConstraint+
10110 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
10120 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10130 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
10140 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
10150 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
10160 75 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74  usage constraint
10170 55 73 61 67 65 20 3d 0d 0a 20 20 20 20 20 20 20  Usage =..       
10180 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
10190 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
101a0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
101b0 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
101c0 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
101d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
101e0 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69  nstraintUsages[i
101f0 43 6f 6e 73 74 72 61 69 6e 74 5d 29 3b 0d 0a 0d  Constraint]);...
10200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10210 20 4d 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75   Marshal.Structu
10220 72 65 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20  reToPtr(..      
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
10240 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20 53  nstraintUsage, S
10250 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74  QLiteMarshal.Int
10260 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20  PtrForOffset(.. 
10270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10280 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73     pConstraintUs
10290 61 67 65 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74  age, iConstraint
102a0 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61   * sizeOfConstra
102b0 69 6e 74 55 73 61 67 65 54 79 70 65 29 2c 0d 0a  intUsageType),..
102c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102d0 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20      false);..   
102e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
102f0 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
10300 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
10310 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
10320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10330 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
10340 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ize, sizeof(int)
10350 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10360 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
10370 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65  WriteInt32(pInde
10380 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  x, offset,..    
10390 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
103a0 75 74 73 2e 49 6e 64 65 78 4e 75 6d 62 65 72 29  uts.IndexNumber)
103b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
103c0 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
103d0 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
103e0 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
103f0 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
10400 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50  izeof(int), IntP
10410 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
10420 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
10430 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50  arshal.WriteIntP
10440 74 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  tr(pIndex, offse
10450 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
10460 20 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67      SQLiteString
10470 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
10480 74 72 69 6e 67 28 6f 75 74 70 75 74 73 2e 49 6e  tring(outputs.In
10490 64 65 78 53 74 72 69 6e 67 29 29 3b 0d 0a 0d 0a  dexString));....
104a0 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
104b0 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
104c0 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
104d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
104e0 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72    offset, IntPtr
104f0 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e  .Size, sizeof(in
10500 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
10510 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10520 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20      // NOTE: We 
10530 6a 75 73 74 20 61 6c 6c 6f 63 61 74 65 64 20 74  just allocated t
10540 68 65 20 49 6e 64 65 78 53 74 72 69 6e 67 20 66  he IndexString f
10550 69 65 6c 64 3b 20 74 68 65 72 65 66 6f 72 65 2c  ield; therefore,
10560 20 77 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20   we..           
10570 20 2f 2f 20 20 20 20 20 20 20 6e 65 65 64 20 74   //       need t
10580 6f 20 73 65 74 20 6d 61 6b 65 20 73 75 72 65 20  o set make sure 
10590 74 68 65 20 4e 65 65 64 54 6f 46 72 65 65 49 6e  the NeedToFreeIn
105a0 64 65 78 53 74 72 69 6e 67 20 66 69 65 6c 64 0d  dexString field.
105b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
105c0 20 20 20 20 20 20 69 73 20 6e 6f 6e 2d 7a 65 72        is non-zer
105d0 6f 3b 20 68 6f 77 65 76 65 72 2c 20 77 65 20 61  o; however, we a
105e0 72 65 20 6e 6f 74 20 70 69 63 6b 79 20 61 62 6f  re not picky abo
105f0 75 74 20 74 68 65 20 65 78 61 63 74 0d 0a 20 20  ut the exact..  
10600 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10610 20 20 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20     value...     
10620 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
10630 20 20 20 20 20 20 20 69 6e 74 20 6e 65 65 64 54         int needT
10640 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
10650 20 3d 20 6f 75 74 70 75 74 73 2e 4e 65 65 64 54   = outputs.NeedT
10660 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
10670 20 21 3d 20 30 20 3f 0d 0a 20 20 20 20 20 20 20   != 0 ?..       
10680 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
10690 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78  .NeedToFreeIndex
106a0 53 74 72 69 6e 67 20 3a 20 31 3b 0d 0a 0d 0a 20  String : 1;.... 
106b0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
106c0 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
106d0 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
106e0 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
106f0 20 20 20 20 20 6e 65 65 64 54 6f 46 72 65 65 49       needToFreeI
10700 6e 64 65 78 53 74 72 69 6e 67 29 3b 0d 0a 0d 0a  ndexString);....
10710 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
10720 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
10730 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
10740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10750 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
10760 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69 6e  (int), sizeof(in
10770 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
10780 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
10790 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e  l.WriteInt32(pIn
107a0 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
107b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
107c0 74 70 75 74 73 2e 4f 72 64 65 72 42 79 43 6f 6e  tputs.OrderByCon
107d0 73 75 6d 65 64 29 3b 0d 0a 0d 0a 20 20 20 20 20  sumed);....     
107e0 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
107f0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
10800 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
10810 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
10820 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
10830 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  , sizeof(double)
10840 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10850 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 45 73    if (outputs.Es
10860 74 69 6d 61 74 65 64 43 6f 73 74 2e 48 61 73 56  timatedCost.HasV
10870 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20  alue)..         
10880 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10890 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
108a0 68 61 6c 2e 57 72 69 74 65 44 6f 75 62 6c 65 28  hal.WriteDouble(
108b0 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d  pIndex, offset,.
108c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
108d0 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73 74       outputs.Est
108e0 69 6d 61 74 65 64 43 6f 73 74 2e 47 65 74 56 61  imatedCost.GetVa
108f0 6c 75 65 4f 72 44 65 66 61 75 6c 74 28 29 29 3b  lueOrDefault());
10900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
10910 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
10920 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
10930 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
10940 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
10950 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
10960 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 73 69 7a  eof(double), siz
10970 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20  eof(long));.... 
10980 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
10990 75 74 70 75 74 73 2e 43 61 6e 55 73 65 45 73 74  utputs.CanUseEst
109a0 69 6d 61 74 65 64 52 6f 77 73 28 29 20 26 26 0d  imatedRows() &&.
109b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
109c0 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74   outputs.Estimat
109d0 65 64 52 6f 77 73 2e 48 61 73 56 61 6c 75 65 29  edRows.HasValue)
109e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
109f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10a00 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
10a10 72 69 74 65 49 6e 74 36 34 28 70 49 6e 64 65 78  riteInt64(pIndex
10a20 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  , offset,..     
10a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
10a40 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64  utputs.Estimated
10a50 52 6f 77 73 2e 47 65 74 56 61 6c 75 65 4f 72 44  Rows.GetValueOrD
10a60 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20  efault());..    
10a70 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10a80 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
10a90 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
10aa0 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
10ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
10ac0 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 6c 6f  ffset, sizeof(lo
10ad0 6e 67 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ng), sizeof(int)
10ae0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10af0 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61    if (outputs.Ca
10b00 6e 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28 29  nUseIndexFlags()
10b10 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
10b20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64       outputs.Ind
10b30 65 78 46 6c 61 67 73 2e 48 61 73 56 61 6c 75 65  exFlags.HasValue
10b40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
10b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10b60 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
10b70 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65  WriteInt32(pInde
10b80 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  x, offset,..    
10b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
10ba0 69 6e 74 29 6f 75 74 70 75 74 73 2e 49 6e 64 65  int)outputs.Inde
10bb0 78 46 6c 61 67 73 2e 47 65 74 56 61 6c 75 65 4f  xFlags.GetValueO
10bc0 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20  rDefault());..  
10bd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
10be0 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
10bf0 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
10c00 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
10c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10c20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
10c30 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e  int), sizeof(lon
10c40 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  g));....        
10c50 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
10c60 43 61 6e 55 73 65 43 6f 6c 75 6d 6e 73 55 73 65  CanUseColumnsUse
10c70 64 28 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  d() &&..        
10c80 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
10c90 43 6f 6c 75 6d 6e 73 55 73 65 64 2e 48 61 73 56  ColumnsUsed.HasV
10ca0 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20  alue)..         
10cb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10cc0 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
10cd0 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70  hal.WriteInt64(p
10ce0 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a  Index, offset,..
10cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d00 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75      outputs.Colu
10d10 6d 6e 73 55 73 65 64 2e 47 65 74 56 61 6c 75 65  mnsUsed.GetValue
10d20 4f 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20  OrDefault());.. 
10d30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
10d40 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10d50 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
10d60 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
10d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
10db0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
10dc0 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
10dd0 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ies..        pri
10de0 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78  vate SQLiteIndex
10df0 49 6e 70 75 74 73 20 69 6e 70 75 74 73 3b 0d 0a  Inputs inputs;..
10e00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
10e10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
10e20 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
10e30 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  ="SQLiteIndexInp
10e40 75 74 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  uts" /> object i
10e50 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69  nstance containi
10e60 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
10e70 74 68 65 20 69 6e 70 75 74 73 20 74 6f 20 74 68  the inputs to th
10e80 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
10e90 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
10ea0 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
10eb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
10ec0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
10ed0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10ee0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
10ef0 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 49  iteIndexInputs I
10f00 6e 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b  nputs..        {
10f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
10f20 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 70 75 74  t { return input
10f30 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  s; }..        }.
10f40 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
10f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f90 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
10fa0 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
10fb0 78 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74 73  xOutputs outputs
10fc0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
10fd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10fe0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
10ff0 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
11000 4f 75 74 70 75 74 73 22 20 2f 3e 20 6f 62 6a 65  Outputs" /> obje
11010 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74  ct instance cont
11020 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
11030 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 73 20  /// the outputs 
11040 66 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72  from the <see cr
11050 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
11060 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
11070 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  ex" />..        
11080 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  /// method...   
11090 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
110a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
110b0 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 4f  lic SQLiteIndexO
110c0 75 74 70 75 74 73 20 4f 75 74 70 75 74 73 0d 0a  utputs Outputs..
110d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
110e0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
110f0 75 72 6e 20 6f 75 74 70 75 74 73 3b 20 7d 0d 0a  urn outputs; }..
11100 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11110 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
11120 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
11130 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
11140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11180 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
11190 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72  region SQLiteVir
111a0 74 75 61 6c 54 61 62 6c 65 20 42 61 73 65 20 43  tualTable Base C
111b0 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
111c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
111d0 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
111e0 65 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64  esents a managed
111f0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
11200 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20  mplementation.  
11210 49 74 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e  It is..    /// n
11220 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20 73 68  ot sealed and sh
11230 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61 73 20  ould be used as 
11240 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66  the base class f
11250 6f 72 20 61 6e 79 20 75 73 65 72 2d 64 65 66 69  or any user-defi
11260 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 76 69 72  ned..    /// vir
11270 74 75 61 6c 20 74 61 62 6c 65 20 63 6c 61 73 73  tual table class
11280 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69  es implemented i
11290 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d  n managed code..
112a0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
112b0 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
112c0 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72 74  class SQLiteVirt
112d0 75 61 6c 54 61 62 6c 65 20 3a 0d 0a 20 20 20 20  ualTable :..    
112e0 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e          ISQLiteN
112f0 61 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44 69  ativeHandle, IDi
11300 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20  sposable /* NOT 
11310 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b  SEALED */..    {
11320 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
11330 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
11340 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nts..        ///
11350 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11360 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65      /// The inde
11370 78 20 77 69 74 68 69 6e 20 74 68 65 20 61 72 72  x within the arr
11380 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72  ay of strings pr
11390 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20  ovided to the.. 
113a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
113b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
113c0 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74  agedModule.Creat
113d0 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20  e" /> and..     
113e0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
113f0 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
11400 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
11410 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61  /> methods conta
11420 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
11430 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74     /// name of t
11440 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  he module implem
11450 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72 74  enting this virt
11460 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
11470 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11480 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
11490 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 4d 6f  ate const int Mo
114a0 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20  duleNameIndex = 
114b0 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  0;....        //
114c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11500 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
11510 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11520 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
11530 69 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68 65  index within the
11540 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67   array of string
11550 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
11560 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
11570 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
11580 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
11590 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20  reate" /> and.. 
115a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
115b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
115c0 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65  agedModule.Conne
115d0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63  ct" /> methods c
115e0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20  ontaining the.. 
115f0 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20         /// name 
11600 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
11610 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20  containing this 
11620 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
11630 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
11640 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
11650 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e  private const in
11660 74 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e  t DatabaseNameIn
11670 64 65 78 20 3d 20 31 3b 0d 0a 0d 0a 20 20 20 20  dex = 1;....    
11680 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
11690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
116d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
116e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
116f0 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68  / The index with
11700 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20  in the array of 
11710 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64  strings provided
11720 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
11730 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
11740 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
11750 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20  dule.Create" /> 
11760 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
11770 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
11780 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
11790 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  .Connect" /> met
117a0 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20  hods containing 
117b0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
117c0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72   name of the vir
117d0 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
117e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
117f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
11800 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 54  vate const int T
11810 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20  ableNameIndex = 
11820 32 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  2;..        #end
11830 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
11840 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
11850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11880 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
11890 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
118a0 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
118b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
118c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
118d0 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
118e0 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
118f0 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
11900 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11910 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
11920 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
11930 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20  uments">..      
11940 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
11950 61 6c 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  al array of stri
11960 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  ngs provided to 
11970 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
11980 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
11990 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
119a0 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d  .Create" /> and.
119b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
119c0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
119d0 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e  anagedModule.Con
119e0 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73  nect" /> methods
119f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11a00 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
11a10 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69   public SQLiteVi
11a20 72 74 75 61 6c 54 61 62 6c 65 28 0d 0a 20 20 20  rtualTable(..   
11a30 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
11a40 5d 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  ] arguments..   
11a50 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
11a60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11a70 20 20 20 74 68 69 73 2e 61 72 67 75 6d 65 6e 74     this.argument
11a80 73 20 3d 20 61 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = arguments;..
11a90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11aa0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
11ab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
11ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
11b10 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
11b20 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70  rties..        p
11b30 72 69 76 61 74 65 20 73 74 72 69 6e 67 5b 5d 20  rivate string[] 
11b40 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20  arguments;..    
11b50 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11b60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11b70 68 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61  he original arra
11b80 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f  y of strings pro
11b90 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
11ba0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
11bb0 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
11bc0 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
11bd0 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20  " /> and..      
11be0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
11bf0 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
11c00 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f  odule.Connect" /
11c10 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
11c20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11c30 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
11c40 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e  ic virtual strin
11c50 67 5b 5d 20 41 72 67 75 6d 65 6e 74 73 0d 0a 20  g[] Arguments.. 
11c60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11c70 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
11c80 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
11c90 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 3b 20 7d  urn arguments; }
11ca0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
11cb0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11d10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11d20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
11d30 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c   the module impl
11d40 65 6d 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69  ementing this vi
11d50 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
11d60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
11d70 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
11d80 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72  blic virtual str
11d90 69 6e 67 20 4d 6f 64 75 6c 65 4e 61 6d 65 0d 0a  ing ModuleName..
11da0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11db0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
11dc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11dd0 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
11de0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
11df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
11e00 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
11e10 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = Arguments;..
11e20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11e30 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
11e40 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
11e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e60 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e    (arguments.Len
11e70 67 74 68 20 3e 20 4d 6f 64 75 6c 65 4e 61 6d 65  gth > ModuleName
11e80 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20  Index))..       
11e90 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11eb0 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73  return arguments
11ec0 5b 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78  [ModuleNameIndex
11ed0 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
11ee0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
11ef0 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
11f00 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
11f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11f40 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
11f50 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
11f60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
11f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
11fc0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
11fd0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
11fe0 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
11ff0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20  containing this 
12000 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
12010 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
12020 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
12030 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73  public virtual s
12040 74 72 69 6e 67 20 44 61 74 61 62 61 73 65 4e 61  tring DatabaseNa
12050 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  me..        {.. 
12060 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
12070 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
12090 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
120a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
120b0 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75     string[] argu
120c0 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e 74  ments = Argument
120d0 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
120e0 20 20 20 20 20 20 69 66 20 28 28 61 72 67 75 6d        if ((argum
120f0 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26  ents != null) &&
12100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12110 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73        (arguments
12120 2e 4c 65 6e 67 74 68 20 3e 20 44 61 74 61 62 61  .Length > Databa
12130 73 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20  seNameIndex)).. 
12140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12160 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67        return arg
12170 75 6d 65 6e 74 73 5b 44 61 74 61 62 61 73 65 4e  uments[DatabaseN
12180 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20  ameIndex];..    
12190 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
121a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
121b0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
121c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
121d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
121e0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
121f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12200 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12210 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12220 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12260 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12270 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12280 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
12290 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76  he name of the v
122a0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
122b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
122c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
122d0 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74  ublic virtual st
122e0 72 69 6e 67 20 54 61 62 6c 65 4e 61 6d 65 0d 0a  ring TableName..
122f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12300 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
12310 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12320 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
12330 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
12340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
12350 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
12360 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = Arguments;..
12370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12380 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
12390 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
123a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123b0 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e    (arguments.Len
123c0 67 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65 49  gth > TableNameI
123d0 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20  ndex))..        
123e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
123f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12400 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b  eturn arguments[
12410 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b  TableNameIndex];
12420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12430 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
12440 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
12450 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
12460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12470 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
12480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12490 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
124a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
124b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
124c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12500 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
12510 65 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e  e SQLiteIndex in
12520 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dex;..        //
12530 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12540 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
12550 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
12560 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  dex" /> object i
12570 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69  nstance containi
12580 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20  ng all the..    
12590 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72      /// data for
125a0 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e 64 20   the inputs and 
125b0 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69 6e 67  outputs relating
125c0 20 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65 63   to the most rec
125d0 65 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20  ent index..     
125e0 20 20 20 2f 2f 2f 20 73 65 6c 65 63 74 69 6f 6e     /// selection
125f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12600 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
12610 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
12620 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 20 49 6e  l SQLiteIndex In
12630 64 65 78 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dex..        {..
12640 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
12650 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
12660 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 3b  ); return index;
12670 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
12680 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
12690 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
126a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
126f0 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
12700 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
12710 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12720 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
12730 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 6e 6f  method should no
12740 72 6d 61 6c 6c 79 20 62 65 20 75 73 65 64 20 62  rmally be used b
12750 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
12760 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
12770 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
12780 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
12790 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72   method in order
127a0 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
127b0 20 70 65 72 66 6f 72 6d 20 69 6e 64 65 78 20 73   perform index s
127c0 65 6c 65 63 74 69 6f 6e 20 62 61 73 65 64 20 6f  election based o
127d0 6e 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  n the constraint
127e0 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  s provided by th
127f0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  e..        /// S
12800 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
12810 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
12820 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12830 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
12840 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20  name="index">.. 
12850 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
12860 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
12870 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74  Index" /> object
12880 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69   instance contai
12890 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20  ning all the..  
128a0 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66        /// data f
128b0 6f 72 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e  or the inputs an
128c0 64 20 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69  d outputs relati
128d0 6e 67 20 74 6f 20 69 6e 64 65 78 20 73 65 6c 65  ng to index sele
128e0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
128f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
12900 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
12910 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
12920 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73   Non-zero upon s
12930 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20  uccess...       
12940 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
12950 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
12960 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 42 65 73  virtual bool Bes
12970 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
12980 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
12990 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20   index..        
129a0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
129b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
129c0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
129d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
129e0 69 73 2e 69 6e 64 65 78 20 3d 20 69 6e 64 65 78  is.index = index
129f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12a00 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
12a10 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12a20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
12a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12a70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
12a80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
12a90 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 72 65  / Attempts to re
12aa0 63 6f 72 64 20 74 68 65 20 72 65 6e 61 6d 69 6e  cord the renamin
12ab0 67 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  g of the virtual
12ac0 20 74 61 62 6c 65 20 61 73 73 6f 63 69 61 74 65   table associate
12ad0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
12ae0 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20  ith this object 
12af0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
12b00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12b10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
12b20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
12b30 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
12b40 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f 72  The new name for
12b50 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
12b60 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
12b70 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
12b80 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
12b90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
12ba0 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63  n-zero upon succ
12bb0 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ess...        //
12bc0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
12bd0 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
12be0 74 75 61 6c 20 62 6f 6f 6c 20 52 65 6e 61 6d 65  tual bool Rename
12bf0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
12c00 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20  tring name..    
12c10 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
12c20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12c30 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
12c40 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12c50 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
12c60 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
12c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61                (a
12c80 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20  rguments.Length 
12c90 3e 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78  > TableNameIndex
12ca0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
12cb0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12cc0 20 20 20 61 72 67 75 6d 65 6e 74 73 5b 54 61 62     arguments[Tab
12cd0 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 20 3d 20 6e  leNameIndex] = n
12ce0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
12cf0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
12d00 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
12d10 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
12d20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
12d30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12d40 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
12d50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12da0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
12db0 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
12dc0 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d  eHandle Members.
12dd0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
12de0 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61   IntPtr nativeHa
12df0 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ndle;..        /
12e00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12e10 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
12e20 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
12e30 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68   SQLite native h
12e40 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64  andle associated
12e50 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
12e60 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
12e70 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
12e80 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12e90 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
12ea0 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20   virtual IntPtr 
12eb0 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20  NativeHandle..  
12ec0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12ed0 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
12ee0 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
12ef0 72 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b  rn nativeHandle;
12f00 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12f10 69 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e  internal set { n
12f20 61 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61  ativeHandle = va
12f30 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
12f40 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
12f50 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
12f60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fa0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12fb0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
12fc0 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d  posable Members.
12fd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
12fe0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
12ff0 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
13000 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
13010 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
13020 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13030 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
13040 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
13050 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13060 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
13070 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
13080 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
13090 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
130a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
130b0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
130c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
130d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13110 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
13120 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
13130 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
13140 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
13150 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
13160 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
13170 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
13180 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65  // Throws an <se
13190 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69  e cref="ObjectDi
131a0 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22  sposedException"
131b0 20 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65   /> if this obje
131c0 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
131d0 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65  instance has bee
131e0 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  n disposed...   
131f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13200 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
13210 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44  vate void CheckD
13220 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72  isposed() /* thr
13230 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  ow */..        {
13240 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44  ..#if THROW_ON_D
13250 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20  ISPOSED..       
13260 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65       if (dispose
13270 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
13280 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13290 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a     throw new Obj
132a0 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70  ectDisposedExcep
132b0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
132c0 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
132d0 66 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  f(SQLiteVirtualT
132e0 61 62 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20  able).Name);..  
132f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
13300 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
13310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13360 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
13370 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13380 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73      /// Disposes
13390 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   of this object 
133a0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
133b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
133c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
133d0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70  param name="disp
133e0 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20  osing">..       
133f0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
13400 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   this method is 
13410 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f  being called fro
13420 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
13430 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69  // <see cref="Di
13440 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68  spose()" /> meth
13450 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69  od.  Zero if thi
13460 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e  s method is bein
13470 67 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20  g called..      
13480 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66    /// from the f
13490 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20  inalizer...     
134a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
134b0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
134c0 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
134d0 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
134e0 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
134f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13500 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a  if (!disposed)..
13510 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13530 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d  /if (disposing).
13540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13550 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   //{..          
13560 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f        //    ////
13570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
135a0 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f    //    // dispo
135b0 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
135c0 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
135d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
135e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
135f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13600 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
13610 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d            //}...
13620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13630 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13650 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
13660 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65           // rele
13670 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65  ase unmanaged re
13680 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
13690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
136a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
136b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
136d0 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
136e0 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
136f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
13700 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
13710 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
13720 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
13770 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
13780 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  Destructor..    
13790 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
137a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
137b0 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62  inalizes this ob
137c0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
137d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
137e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
137f0 7e 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  ~SQLiteVirtualTa
13800 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ble()..        {
13810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
13820 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
13830 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13840 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
13850 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
13860 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
13870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
138c0 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72 74  egion SQLiteVirt
138d0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 42  ualTableCursor B
138e0 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  ase Class..    /
138f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13900 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
13910 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61   represents a ma
13920 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61  naged virtual ta
13930 62 6c 65 20 63 75 72 73 6f 72 20 69 6d 70 6c 65  ble cursor imple
13940 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
13950 2f 2f 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65  /// It is not se
13960 61 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c 64 20  aled and should 
13970 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 62  be used as the b
13980 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e  ase class for an
13990 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 72 2d  y..    /// user-
139a0 64 65 66 69 6e 65 64 20 76 69 72 74 75 61 6c 20  defined virtual 
139b0 74 61 62 6c 65 20 63 75 72 73 6f 72 20 63 6c 61  table cursor cla
139c0 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64  sses implemented
139d0 20 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65   in managed code
139e0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
139f0 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
13a00 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69  c class SQLiteVi
13a10 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
13a20 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
13a30 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e  ISQLiteNativeHan
13a40 64 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65  dle, IDisposable
13a50 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a   /* NOT SEALED *
13a60 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  /..    {..      
13a70 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63    #region Protec
13a80 74 65 64 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ted Constants.. 
13a90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
13aa0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
13ab0 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70  / This value rep
13ac0 72 65 73 65 6e 74 73 20 61 6e 20 69 6e 76 61 6c  resents an inval
13ad0 69 64 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  id integer row s
13ae0 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 2e 0d  equence number..
13af0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
13b00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
13b10 20 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69   protected stati
13b20 63 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 49  c readonly int I
13b30 6e 76 61 6c 69 64 52 6f 77 49 6e 64 65 78 20 3d  nvalidRowIndex =
13b40 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e   0;..        #en
13b50 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
13b60 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
13bb0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
13bc0 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
13bd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13be0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
13bf0 68 65 20 66 69 65 6c 64 20 68 6f 6c 64 73 20 74  he field holds t
13c00 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  he integer row s
13c10 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66  equence number f
13c20 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  or the current r
13c30 6f 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ow..        /// 
13c40 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 74 68  pointed to by th
13c50 69 73 20 63 75 72 73 6f 72 20 6f 62 6a 65 63 74  is cursor object
13c60 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
13c70 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13c80 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
13c90 61 74 65 20 69 6e 74 20 72 6f 77 49 6e 64 65 78  ate int rowIndex
13ca0 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
13cb0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
13cc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13d10 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
13d20 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
13d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
13d40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13d50 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
13d60 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
13d70 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
13d80 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13d90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
13da0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
13db0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
13dc0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
13dd0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
13de0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
13df0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
13e00 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
13e10 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20  ith this object 
13e20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
13e30 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
13e40 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
13e50 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
13e60 6c 65 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20  leCursor(..     
13e70 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
13e80 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 0d  tualTable table.
13e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
13ea0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
13eb0 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
13ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
13ed0 73 2e 74 61 62 6c 65 20 3d 20 74 61 62 6c 65 3b  s.table = table;
13ee0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
13ef0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
13f00 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
13f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f50 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
13f60 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
13f70 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
13f80 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13f90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
13fa0 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
13fb0 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
13fc0 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
13fd0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13fe0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
13ff0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
14000 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20  Cursor()..      
14010 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14020 20 72 6f 77 49 6e 64 65 78 20 3d 20 49 6e 76 61   rowIndex = Inva
14030 6c 69 64 52 6f 77 49 6e 64 65 78 3b 0d 0a 20 20  lidRowIndex;..  
14040 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14050 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
14060 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
140b0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
140c0 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
140d0 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ies..        pri
140e0 76 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75  vate SQLiteVirtu
140f0 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d 0a  alTable table;..
14100 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
14110 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
14120 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
14130 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
14140 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
14150 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
14160 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
14170 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
14180 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
14190 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
141a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
141b0 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69  lic virtual SQLi
141c0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 54  teVirtualTable T
141d0 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  able..        {.
141e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
141f0 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
14200 28 29 3b 20 72 65 74 75 72 6e 20 74 61 62 6c 65  (); return table
14210 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
14220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14270 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
14280 76 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e 75  vate int indexNu
14290 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f  mber;..        /
142a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
142b0 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72        /// Number
142c0 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64   used to help id
142d0 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63  entify the selec
142e0 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73  ted index.  This
142f0 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20   value will..   
14300 20 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20       /// be set 
14310 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65  via the <see cre
14320 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  f="Filter" /> me
14330 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
14340 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14350 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
14360 72 74 75 61 6c 20 69 6e 74 20 49 6e 64 65 78 4e  rtual int IndexN
14370 75 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b  umber..        {
14380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
14390 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
143a0 64 28 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65  d(); return inde
143b0 78 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20  xNumber; }..    
143c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
143d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
143e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14410 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14420 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
14430 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d  ng indexString;.
14440 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
14450 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14460 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20  /// String used 
14470 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79  to help identify
14480 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e   the selected in
14490 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65  dex.  This value
144a0 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
144b0 2f 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68  // be set via th
144c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c  e <see cref="Fil
144d0 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
144e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
144f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
14500 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
14510 73 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69  string IndexStri
14520 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ng..        {.. 
14530 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
14540 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
14550 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53 74  ; return indexSt
14560 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ring; }..       
14570 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
14580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
145d0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56   private SQLiteV
145e0 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 3b 0d 0a  alue[] values;..
145f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
14600 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
14610 2f 2f 20 54 68 65 20 76 61 6c 75 65 73 20 75 73  // The values us
14620 65 64 20 74 6f 20 66 69 6c 74 65 72 20 74 68 65  ed to filter the
14630 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 76   rows returned v
14640 69 61 20 74 68 69 73 20 63 75 72 73 6f 72 20 6f  ia this cursor o
14650 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
14660 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68  // instance.  Th
14670 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  is value will be
14680 20 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65   set via the <se
14690 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20  e cref="Filter" 
146a0 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
146b0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
146c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
146d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
146e0 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 61  virtual SQLiteVa
146f0 6c 75 65 5b 5d 20 56 61 6c 75 65 73 0d 0a 20 20  lue[] Values..  
14700 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14710 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
14720 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
14730 72 6e 20 76 61 6c 75 65 73 3b 20 7d 0d 0a 20 20  rn values; }..  
14740 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14750 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
14760 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
147b0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
147c0 6e 20 50 72 6f 74 65 63 74 65 64 20 4d 65 74 68  n Protected Meth
147d0 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
147e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
147f0 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
14800 20 74 6f 20 70 65 72 73 69 73 74 20 74 68 65 20   to persist the 
14810 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
14820 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65  ref="SQLiteValue
14830 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20  " /> object..   
14840 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
14850 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6d  es in order to m
14860 61 6b 65 20 74 68 65 6d 20 61 76 61 69 6c 61 62  ake them availab
14870 6c 65 20 61 66 74 65 72 20 74 68 65 0d 0a 20 20  le after the..  
14880 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
14890 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
148a0 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72  gedModule.Filter
148b0 22 20 2f 3e 20 6d 65 74 68 6f 64 20 72 65 74 75  " /> method retu
148c0 72 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns...        //
148d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
148e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
148f0 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d   name="values">.
14900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
14910 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63   array of <see c
14920 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65  ref="SQLiteValue
14930 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
14940 61 6e 63 65 73 20 74 6f 20 62 65 0d 0a 20 20 20  ances to be..   
14950 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73 74       /// persist
14960 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
14970 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
14980 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
14990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
149a0 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65  e number of <see
149b0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c   cref="SQLiteVal
149c0 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ue" /> object in
149d0 73 74 61 6e 63 65 73 20 74 68 61 74 20 77 65 72  stances that wer
149e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
149f0 75 63 63 65 73 73 66 75 6c 6c 79 20 70 65 72 73  uccessfully pers
14a00 69 73 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  isted...        
14a10 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
14a20 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
14a30 64 20 76 69 72 74 75 61 6c 20 69 6e 74 20 54 72  d virtual int Tr
14a40 79 50 65 72 73 69 73 74 56 61 6c 75 65 73 28 0d  yPersistValues(.
14a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
14a60 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65  iteValue[] value
14a70 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  s..            )
14a80 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
14a90 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
14aa0 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ult = 0;....    
14ab0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
14ac0 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es != null)..   
14ad0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
14ae0 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65              fore
14af0 61 63 68 20 28 53 51 4c 69 74 65 56 61 6c 75 65  ach (SQLiteValue
14b00 20 76 61 6c 75 65 20 69 6e 20 76 61 6c 75 65 73   value in values
14b10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
14b20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14b30 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
14b40 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
14b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b60 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
14b70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14b80 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
14b90 2e 50 65 72 73 69 73 74 28 29 29 0d 0a 20 20 20  .Persist())..   
14ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14bb0 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a       result++;..
14bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14bd0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
14be0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14bf0 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
14c00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14c10 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
14c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
14c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
14c80 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
14c90 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
14ca0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
14cb0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
14cc0 6f 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c  od should normal
14cd0 6c 79 20 62 65 20 75 73 65 64 20 62 79 20 74 68  ly be used by th
14ce0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
14cf0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
14d00 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46  eManagedModule.F
14d10 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
14d20 20 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20   in order to..  
14d30 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72        /// perfor
14d40 6d 20 66 69 6c 74 65 72 69 6e 67 20 6f 66 20 74  m filtering of t
14d50 68 65 20 72 65 73 75 6c 74 20 72 6f 77 73 20 61  he result rows a
14d60 6e 64 2f 6f 72 20 74 6f 20 72 65 63 6f 72 64 20  nd/or to record 
14d70 74 68 65 20 66 69 6c 74 65 72 69 6e 67 0d 0a 20  the filtering.. 
14d80 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 69 74 65         /// crite
14d90 72 69 61 20 70 72 6f 76 69 64 65 64 20 62 79 20  ria provided by 
14da0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
14db0 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
14dc0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14dd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
14de0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78  aram name="index
14df0 4e 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20  Number">..      
14e00 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65    /// Number use
14e10 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69  d to help identi
14e20 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  fy the selected 
14e30 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
14e40 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
14e50 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
14e60 20 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69   name="indexStri
14e70 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ng">..        //
14e80 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f  / String used to
14e90 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74   help identify t
14ea0 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
14eb0 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
14ec0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
14ed0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
14ee0 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
14ef0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
14f00 75 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  ues correspondin
14f10 67 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e  g to each column
14f20 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64   in the selected
14f30 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
14f40 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
14f50 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
14f60 72 74 75 61 6c 20 76 6f 69 64 20 46 69 6c 74 65  rtual void Filte
14f70 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
14f80 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c  int indexNumber,
14f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
14fa0 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67  ring indexString
14fb0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
14fc0 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c  QLiteValue[] val
14fd0 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ues..           
14fe0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
14ff0 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
15000 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
15010 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
15020 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c 29 20  values != null) 
15030 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
15040 20 20 20 20 28 54 72 79 50 65 72 73 69 73 74 56      (TryPersistV
15050 61 6c 75 65 73 28 76 61 6c 75 65 73 29 20 21 3d  alues(values) !=
15060 20 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 29 29   values.Length))
15070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
15080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15090 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
150a0 65 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  eException(..   
150b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150c0 20 22 66 61 69 6c 65 64 20 74 6f 20 70 65 72 73   "failed to pers
150d0 69 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  ist one or more 
150e0 76 61 6c 75 65 73 22 29 3b 0d 0a 20 20 20 20 20  values");..     
150f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
15100 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64          this.ind
15110 65 78 4e 75 6d 62 65 72 20 3d 20 69 6e 64 65 78  exNumber = index
15120 4e 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20  Number;..       
15130 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 53       this.indexS
15140 74 72 69 6e 67 20 3d 20 69 6e 64 65 78 53 74 72  tring = indexStr
15150 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ing;..          
15160 20 20 74 68 69 73 2e 76 61 6c 75 65 73 20 3d 20    this.values = 
15170 76 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20  values;..       
15180 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
15190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
151e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
151f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
15200 72 6d 69 6e 65 73 20 74 68 65 20 69 6e 74 65 67  rmines the integ
15210 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20  er row sequence 
15220 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63  number for the c
15230 75 72 72 65 6e 74 20 72 6f 77 2e 0d 0a 20 20 20  urrent row...   
15240 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15250 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
15260 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
15270 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65      /// The inte
15280 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65  ger row sequence
15290 20 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20   number for the 
152a0 63 75 72 72 65 6e 74 20 72 6f 77 20 2d 4f 52 2d  current row -OR-
152b0 20 7a 65 72 6f 20 69 66 0d 0a 20 20 20 20 20 20   zero if..      
152c0 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20    /// it cannot 
152d0 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
152e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
152f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
15300 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 69  public virtual i
15310 6e 74 20 47 65 74 52 6f 77 49 6e 64 65 78 28 29  nt GetRowIndex()
15320 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
15330 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15340 72 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  rowIndex;..     
15350 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
15360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
153b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
153c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 64  ..        /// Ad
153d0 6a 75 73 74 73 20 74 68 65 20 69 6e 74 65 67 65  justs the intege
153e0 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e  r row sequence n
153f0 75 6d 62 65 72 20 73 6f 20 74 68 61 74 20 69 74  umber so that it
15400 20 72 65 66 65 72 73 20 74 6f 20 74 68 65 0d 0a   refers to the..
15410 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74          /// next
15420 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f   row...        /
15430 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15440 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
15450 72 74 75 61 6c 20 76 6f 69 64 20 4e 65 78 74 52  rtual void NextR
15460 6f 77 49 6e 64 65 78 28 29 0d 0a 20 20 20 20 20  owIndex()..     
15470 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15480 20 20 72 6f 77 49 6e 64 65 78 2b 2b 3b 0d 0a 20    rowIndex++;.. 
15490 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
154a0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
154b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
154c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15500 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
15510 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  on ISQLiteNative
15520 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  Handle Members..
15530 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
15540 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61 6e  IntPtr nativeHan
15550 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle;..        //
15560 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15570 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
15580 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
15590 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
155a0 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
155b0 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
155c0 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
155d0 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
155e0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
155f0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
15600 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 4e  virtual IntPtr N
15610 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
15620 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15630 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
15640 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
15650 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 20  n nativeHandle; 
15660 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
15670 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e 61  nternal set { na
15680 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61 6c  tiveHandle = val
15690 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
156a0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
156b0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
156c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15700 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15710 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
15720 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
15730 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
15740 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15750 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
15760 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
15770 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
15780 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15790 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
157a0 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
157b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
157c0 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
157d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
157e0 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
157f0 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
15800 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
15810 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
15820 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
15830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
15870 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
15880 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
15890 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
158a0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
158b0 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20  ool disposed;.. 
158c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
158d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
158e0 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65  / Throws an <see
158f0 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73   cref="ObjectDis
15900 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20  posedException" 
15910 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  /> if this objec
15920 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
15930 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
15940 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
15950 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15960 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
15970 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
15980 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
15990 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  w */..        {.
159a0 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
159b0 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
159c0 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
159d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
159e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
159f0 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65    throw new Obje
15a00 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
15a10 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
15a20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
15a30 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  (SQLiteVirtualTa
15a40 62 6c 65 43 75 72 73 6f 72 29 2e 4e 61 6d 65 29  bleCursor).Name)
15a50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
15a60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
15a70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
15a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ac0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
15ad0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15ae0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73  .        /// Dis
15af0 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62  poses of this ob
15b00 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
15b10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
15b20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
15b30 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
15b40 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20  "disposing">..  
15b50 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
15b60 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
15b70 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
15b80 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
15b90 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
15ba0 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e  f="Dispose()" />
15bb0 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69   method.  Zero i
15bc0 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73  f this method is
15bd0 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a 20   being called.. 
15be0 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20         /// from 
15bf0 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a  the finalizer...
15c00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15c10 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
15c20 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
15c30 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
15c40 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
15c50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15c60 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
15c70 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
15c80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15c90 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
15ca0 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
15cb0 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20        //{..     
15cc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
15cd0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cf0 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
15d00 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
15d10 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
15d20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
15d30 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15d40 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
15d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
15d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15d80 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  /}....          
15d90 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
15da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
15dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15dd0 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
15de0 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
15df0 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
15e00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
15e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
15e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e40 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
15e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
15e60 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
15e70 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
15e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
15e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ed0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
15ee0 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d  gion Destructor.
15ef0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
15f00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
15f10 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68  /// Finalizes th
15f20 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
15f30 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
15f40 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15f50 20 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72 74       ~SQLiteVirt
15f60 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29  ualTableCursor()
15f70 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
15f80 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
15f90 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
15fa0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
15fb0 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
15fc0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
15fd0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
15fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16020 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
16030 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
16040 6e 64 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a  ndle Interface..
16050 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16060 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
16070 69 6e 74 65 72 66 61 63 65 20 72 65 70 72 65 73  interface repres
16080 65 6e 74 73 20 61 20 6e 61 74 69 76 65 20 68 61  ents a native ha
16090 6e 64 6c 65 20 70 72 6f 76 69 64 65 64 20 62 79  ndle provided by
160a0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
160b0 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72  ..    /// librar
160c0 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
160d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
160e0 69 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51  ic interface ISQ
160f0 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
16100 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
16110 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16120 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
16130 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 76 61  native handle va
16140 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
16150 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16160 20 20 20 20 20 20 49 6e 74 50 74 72 20 4e 61 74        IntPtr Nat
16170 69 76 65 48 61 6e 64 6c 65 20 7b 20 67 65 74 3b  iveHandle { get;
16180 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23   }..    }..    #
16190 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
161a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
161b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
161f0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
16200 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
16210 20 49 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   Interface..    
16220 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16230 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65     /// This inte
16240 72 66 61 63 65 20 72 65 70 72 65 73 65 6e 74 73  rface represents
16250 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
16260 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
16270 77 72 69 74 74 65 6e 20 69 6e 0d 0a 20 20 20 20  written in..    
16280 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 63 6f 64 65  /// managed code
16290 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
162a0 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
162b0 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c  c interface ISQL
162c0 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
162d0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
162e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
162f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75          /// Retu
16300 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20  rns non-zero if 
16310 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72 20 74  the schema for t
16320 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
16330 20 68 61 73 20 62 65 65 6e 0d 0a 20 20 20 20 20   has been..     
16340 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72 65 64 2e     /// declared.
16350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16360 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16370 20 20 62 6f 6f 6c 20 44 65 63 6c 61 72 65 64 20    bool Declared 
16380 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20  { get; }....    
16390 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
163a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
163e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
163f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
16400 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 6e 61  / Returns the na
16410 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  me of the module
16420 20 61 73 20 69 74 20 77 61 73 20 72 65 67 69 73   as it was regis
16430 74 65 72 65 64 20 77 69 74 68 20 74 68 65 20 53  tered with the S
16440 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 2f  QLite..        /
16450 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  // core library.
16460 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16470 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16480 20 20 73 74 72 69 6e 67 20 4e 61 6d 65 20 7b 20    string Name { 
16490 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20 20  get; }....      
164a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
164b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
164f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16500 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
16510 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
16520 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
16530 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
16540 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
16550 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
16560 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
16570 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
16580 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16590 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
165a0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65  aram name="conne
165b0 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20  ction">..       
165c0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
165d0 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
165e0 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tion" /> object 
165f0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
16600 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
16610 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
16620 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
16630 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
16640 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16650 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74  am name="pClient
16660 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
16670 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 75  /// The native u
16680 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72  ser-data pointer
16690 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
166a0 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73   this module, as
166b0 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20 20   it was..       
166c0 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74 6f   /// provided to
166d0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
166e0 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74 68   library when th
166f0 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
16700 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
16710 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74 65    /// was create
16720 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
16730 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
16740 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
16750 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a  e="arguments">..
16760 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
16770 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20 64 61 74  module name, dat
16780 61 62 61 73 65 20 6e 61 6d 65 2c 20 76 69 72 74  abase name, virt
16790 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20  ual table name, 
167a0 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 0d 0a 20  and all other.. 
167b0 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d         /// argum
167c0 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20 74  ents passed to t
167d0 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
167e0 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
167f0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
16800 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
16810 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
16820 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
16830 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
16840 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
16850 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
16860 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
16870 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16880 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
16890 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
168a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
168b0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  nce associated w
168c0 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ith..        ///
168d0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
168e0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
168f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
16900 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16910 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
16920 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61       /// Upon fa
16930 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61  ilure, this para
16940 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
16950 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
16960 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20  n an error..    
16970 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e      /// message.
16980 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16990 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
169a0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
169b0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
169c0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
169d0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
169e0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
169f0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
16a00 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61 74  eErrorCode Creat
16a10 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
16a20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
16a30 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a   connection,  /*
16a40 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
16a50 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65      IntPtr pClie
16a60 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20 20 20  ntData,         
16a70 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
16a80 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
16a90 20 61 72 67 75 6d 65 6e 74 73 2c 20 20 20 20 20   arguments,     
16aa0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
16ab0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
16ac0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
16ad0 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74  le table, /* out
16ae0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
16af0 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
16b00 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  r              /
16b10 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
16b20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
16b30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16b80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
16b90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
16ba0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
16bb0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
16bc0 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
16bd0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
16be0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
16bf0 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
16c00 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
16c10 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16c20 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
16c30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
16c40 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  nnection">..    
16c50 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
16c60 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
16c70 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  nection" /> obje
16c80 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
16c90 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
16ca0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72       /// the vir
16cb0 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
16cc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
16cd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
16ce0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69  param name="pCli
16cf0 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  entData">..     
16d00 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
16d10 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e  e user-data poin
16d20 74 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77  ter associated w
16d30 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c  ith this module,
16d40 20 61 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20   as it was..    
16d50 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64      /// provided
16d60 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
16d70 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e  ore library when
16d80 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   the native modu
16d90 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  le instance..   
16da0 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65       /// was cre
16db0 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
16dc0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
16dd0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
16de0 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22  name="arguments"
16df0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16e00 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20  he module name, 
16e10 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 76  database name, v
16e20 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d  irtual table nam
16e30 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72  e, and all other
16e40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72  ..        /// ar
16e50 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74  guments passed t
16e60 6f 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52  o the CREATE VIR
16e70 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65  TUAL TABLE state
16e80 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ment...        /
16e90 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
16ea0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
16eb0 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
16ec0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
16ed0 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
16ee0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
16ef0 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
16f00 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
16f10 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
16f20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
16f30 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
16f40 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
16f50 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
16f60 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20  /// the virtual 
16f70 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
16f80 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
16f90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
16fa0 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
16fb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
16fc0 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70   failure, this p
16fd0 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
16fe0 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
16ff0 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20  tain an error.. 
17000 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61         /// messa
17010 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ge...        ///
17020 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
17030 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
17040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
17050 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
17060 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
17070 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
17080 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
17090 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f  LiteErrorCode Co
170a0 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
170b0 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
170c0 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c  tion connection,
170d0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
170e0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
170f0 43 6c 69 65 6e 74 44 61 74 61 2c 20 20 20 20 20  ClientData,     
17100 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
17110 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
17120 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 2c 20  ng[] arguments, 
17130 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
17140 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
17150 72 65 66 20 53 51 4c 69 74 65 56 69 72 74 75 61  ref SQLiteVirtua
17160 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
17170 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
17180 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
17190 65 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 20  error           
171a0 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
171b0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
171c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
171d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17210 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17220 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17230 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
17240 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
17250 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
17260 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
17270 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
17280 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74  tiveModule.xBest
17290 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
172a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
172b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
172c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
172d0 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
172e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
172f0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
17300 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
17310 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
17320 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
17330 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
17340 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
17350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17360 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17370 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17380 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  index">..       
17390 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
173a0 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22  ef="SQLiteIndex"
173b0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
173c0 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61  nce containing a
173d0 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ll the..        
173e0 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65  /// data for the
173f0 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70   inputs and outp
17400 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20  uts relating to 
17410 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 2e  index selection.
17420 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17430 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17440 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
17450 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
17460 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
17470 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
17480 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17490 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
174a0 65 45 72 72 6f 72 43 6f 64 65 20 42 65 73 74 49  eErrorCode BestI
174b0 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
174c0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
174d0 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20  Table table, /* 
174e0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
174f0 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69     SQLiteIndex i
17500 6e 64 65 78 20 20 20 20 20 20 20 20 20 2f 2a 20  ndex         /* 
17510 69 6e 2c 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20  in, out */..    
17520 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
17530 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
17540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
17580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
17590 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
175a0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
175b0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
175c0 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
175d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
175e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
175f0 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  veModule.xDiscon
17600 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
17610 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17620 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17630 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17640 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
17650 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
17660 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
17670 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
17680 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
17690 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
176a0 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
176b0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
176c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
176d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
176e0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
176f0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
17700 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
17710 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
17720 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
17730 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
17740 72 72 6f 72 43 6f 64 65 20 44 69 73 63 6f 6e 6e  rrorCode Disconn
17750 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
17760 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
17770 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e  able table /* in
17780 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
17790 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
177a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177e0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
177f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
17810 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
17820 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
17830 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
17840 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
17850 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
17860 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d  e.xDestroy" /> m
17870 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
17880 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17890 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
178a0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
178b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
178c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
178d0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
178e0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
178f0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
17900 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
17910 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
17920 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
17930 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17940 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
17950 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
17960 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
17970 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
17980 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
17990 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
179a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44  QLiteErrorCode D
179b0 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
179c0 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
179d0 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a  alTable table /*
179e0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
179f0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
17a00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17a50 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
17a60 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
17a70 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
17a80 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
17a90 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
17aa0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
17ab0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
17ac0 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d  dule.xOpen" /> m
17ad0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
17ae0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17af0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
17b00 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
17b10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17b20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
17b30 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
17b40 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
17b50 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
17b60 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
17b70 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
17b80 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
17b90 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17ba0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
17bb0 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
17bc0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
17bd0 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
17be0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
17bf0 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
17c00 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
17c10 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
17c20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
17c30 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
17c40 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
17c50 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
17c60 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 20 6e 65   /// with the ne
17c70 77 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75  wly opened virtu
17c80 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 2e  al table cursor.
17c90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17ca0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17cb0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
17cc0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
17cd0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
17ce0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
17cf0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17d00 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
17d10 65 45 72 72 6f 72 43 6f 64 65 20 4f 70 65 6e 28  eErrorCode Open(
17d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
17d30 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
17d40 20 74 61 62 6c 65 2c 20 20 20 20 20 20 20 20 20   table,         
17d50 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
17d60 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
17d70 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
17d80 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 6f  rsor cursor /* o
17d90 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
17da0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
17db0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17df0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17e00 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17e10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17e20 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
17e30 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
17e40 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
17e50 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
17e60 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
17e70 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d  ule.xClose" /> m
17e80 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
17e90 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17ea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
17eb0 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
17ec0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17ed0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
17ee0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
17ef0 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
17f00 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
17f10 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
17f20 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76  ed with the prev
17f30 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69  iously opened vi
17f40 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
17f50 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  or to be..      
17f60 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20    /// used...   
17f70 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17f80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17f90 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17fa0 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
17fb0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
17fc0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
17fd0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
17fe0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
17ff0 72 43 6f 64 65 20 43 6c 6f 73 65 28 0d 0a 20 20  rCode Close(..  
18000 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
18010 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
18020 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20  or cursor /* in 
18030 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
18040 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
18050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18090 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
180a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
180b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
180c0 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
180d0 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
180e0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
180f0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
18100 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
18110 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  .xFilter" /> met
18120 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
18130 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18140 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
18150 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
18160 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18170 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18180 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18190 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
181a0 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
181b0 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
181c0 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
181d0 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
181e0 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
181f0 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
18200 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
18210 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18220 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18230 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e  ram name="indexN
18240 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  umber">..       
18250 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
18260 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
18270 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
18280 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndex...        /
18290 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
182a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
182b0 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69 6e  name="indexStrin
182c0 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
182d0 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20   String used to 
182e0 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
182f0 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
18300 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18310 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
18320 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18330 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
18340 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
18350 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  es corresponding
18360 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20   to each column 
18370 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  in the selected 
18380 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
18390 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
183a0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
183b0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
183c0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
183d0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
183e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
183f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
18400 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18410 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20   Filter(..      
18420 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
18430 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
18440 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  ursor, /* in */.
18450 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
18460 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 20 20 20   indexNumber,   
18470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
18480 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18490 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
184a0 53 74 72 69 6e 67 2c 20 20 20 20 20 20 20 20 20  String,         
184b0 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
184c0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
184d0 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 20  eValue[] values 
184e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
184f0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
18500 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
18510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18550 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18560 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18570 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18580 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
18590 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
185a0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
185b0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
185c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
185d0 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74  le.xNext" /> met
185e0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
185f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18600 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
18610 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
18620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18630 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18640 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18650 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
18660 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
18670 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
18680 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
18690 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
186a0 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
186b0 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
186c0 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
186d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
186e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
186f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
18700 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
18710 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
18720 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
18730 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
18740 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
18750 6f 64 65 20 4e 65 78 74 28 0d 0a 20 20 20 20 20  ode Next(..     
18760 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
18770 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
18780 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d  cursor /* in */.
18790 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
187a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
187b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
18800 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
18810 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
18820 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
18830 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
18840 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
18850 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
18860 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45  eNativeModule.xE
18870 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  of" /> method...
18880 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
18890 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
188a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
188b0 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
188c0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
188d0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
188e0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
188f0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
18900 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
18910 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
18920 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
18930 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
18940 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
18950 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
18960 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
18970 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
18980 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
18990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
189a0 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20 6d 6f 72  n-zero if no mor
189b0 65 20 72 6f 77 73 20 61 72 65 20 61 76 61 69 6c  e rows are avail
189c0 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74 68 65 72  able; zero other
189d0 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  wise...        /
189e0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
189f0 20 20 20 20 20 20 20 62 6f 6f 6c 20 45 6f 66 28         bool Eof(
18a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
18a10 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
18a20 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a  Cursor cursor /*
18a30 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18a40 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
18a50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18aa0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
18ab0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18ac0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
18ad0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
18ae0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
18af0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
18b00 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
18b10 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
18b20 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
18b30 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
18b40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
18b50 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
18b60 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
18b70 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
18b80 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
18b90 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
18ba0 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ect instance..  
18bb0 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
18bc0 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72  ated with the pr
18bd0 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20  eviously opened 
18be0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
18bf0 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20  rsor to be..    
18c00 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
18c10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18c20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
18c30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
18c40 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20 20 20  ntext">..       
18c50 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
18c60 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 74 65 78  ef="SQLiteContex
18c70 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  t" /> object ins
18c80 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64  tance to be used
18c90 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f   for..        //
18ca0 2f 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20  / returning the 
18cb0 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e  specified column
18cc0 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 53 51   value to the SQ
18cd0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
18ce0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
18cf0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
18d00 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
18d10 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20  e="index">..    
18d20 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65 72 6f      /// The zero
18d30 2d 62 61 73 65 64 20 69 6e 64 65 78 20 63 6f 72  -based index cor
18d40 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68  responding to th
18d50 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61 69 6e  e column contain
18d60 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
18d70 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20 62 65   /// value to be
18d80 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
18d90 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
18da0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
18db0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
18dc0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
18dd0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
18de0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
18df0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
18e00 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
18e10 43 6f 64 65 20 43 6f 6c 75 6d 6e 28 0d 0a 20 20  Code Column(..  
18e20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
18e30 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
18e40 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e  or cursor, /* in
18e50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
18e60 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 63   SQLiteContext c
18e70 6f 6e 74 65 78 74 2c 20 20 20 20 20 20 20 20 20  ontext,         
18e80 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
18e90 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
18ea0 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  x               
18eb0 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
18ec0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
18ed0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
18ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
18f30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
18f40 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
18f50 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
18f60 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
18f70 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
18f80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
18f90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
18fa0 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f  xRowId" /> metho
18fb0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
18fc0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18fd0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
18fe0 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
18ff0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
19000 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
19010 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
19020 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
19030 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
19040 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
19050 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73  ith the previous
19060 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61  ly opened virtua
19070 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
19080 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
19090 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  / used...       
190a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
190b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
190c0 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d  m name="rowId">.
190d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
190e0 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
190f0 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
19100 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
19110 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65  ntain the unique
19120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
19130 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69  teger row identi
19140 66 69 65 72 20 66 6f 72 20 74 68 65 20 63 75 72  fier for the cur
19150 72 65 6e 74 20 72 6f 77 20 66 6f 72 20 74 68 65  rent row for the
19160 20 73 70 65 63 69 66 69 65 64 20 63 75 72 73 6f   specified curso
19170 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
19180 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19190 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
191a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
191b0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
191c0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
191d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
191e0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
191f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 77  iteErrorCode Row
19200 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Id(..           
19210 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
19220 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
19230 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
19240 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
19250 20 72 6f 77 49 64 20 20 20 20 20 20 20 20 20 20   rowId          
19260 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20           /* out 
19270 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
19280 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
19290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
192e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
192f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
19300 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
19310 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
19320 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
19330 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
19340 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
19350 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
19360 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
19370 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
19380 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19390 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
193a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
193b0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
193c0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
193d0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
193e0 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
193f0 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
19400 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
19410 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
19420 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19430 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19440 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
19450 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
19460 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ay of <see cref=
19470 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e  "SQLiteValue" />
19480 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
19490 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  s containing..  
194a0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 65        /// the ne
194b0 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 63 6f  w or modified co
194c0 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 69 66 20  lumn values, if 
194d0 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  any...        //
194e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
194f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19500 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20  ame="rowId">..  
19510 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
19520 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
19530 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
19540 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
19550 69 6e 20 74 68 65 20 75 6e 69 71 75 65 0d 0a 20  in the unique.. 
19560 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67         /// integ
19570 65 72 20 72 6f 77 20 69 64 65 6e 74 69 66 69 65  er row identifie
19580 72 20 66 6f 72 20 74 68 65 20 72 6f 77 20 74 68  r for the row th
19590 61 74 20 77 61 73 20 69 6e 73 65 72 74 65 64 2c  at was inserted,
195a0 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
195b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
195c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
195d0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
195e0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
195f0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
19600 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19610 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
19620 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
19630 64 65 20 55 70 64 61 74 65 28 0d 0a 20 20 20 20  de Update(..    
19640 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
19650 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
19660 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
19670 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 61          SQLiteVa
19680 6c 75 65 5b 5d 20 76 61 6c 75 65 73 2c 20 20 20  lue[] values,   
19690 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
196a0 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
196b0 20 72 6f 77 49 64 20 20 20 20 20 20 20 20 20 20   rowId          
196c0 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
196d0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
196e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
196f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19740 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
19750 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
19760 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
19770 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
19780 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
19790 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
197a0 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
197b0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
197c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
197d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
197e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
197f0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
19800 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
19810 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
19820 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
19830 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
19840 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
19850 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
19860 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
19870 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19880 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
19890 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
198a0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
198b0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
198c0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
198d0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
198e0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
198f0 43 6f 64 65 20 42 65 67 69 6e 28 0d 0a 20 20 20  Code Begin(..   
19900 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
19910 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
19920 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  e /* in */..    
19930 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
19940 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19990 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
199a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
199b0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
199c0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
199d0 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
199e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
199f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
19a00 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20  veModule.xSync" 
19a10 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
19a20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
19a30 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
19a40 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
19a50 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
19a60 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
19a70 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
19a80 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
19a90 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
19aa0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
19ab0 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
19ac0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
19ad0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
19ae0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
19af0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
19b00 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
19b10 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
19b20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19b30 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
19b40 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
19b50 64 65 20 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  de Sync(..      
19b60 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
19b70 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f  ualTable table /
19b80 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
19b90 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
19ba0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19bf0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
19c00 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
19c10 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
19c20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
19c30 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
19c40 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
19c50 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
19c60 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f  odule.xCommit" /
19c70 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
19c80 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
19c90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19ca0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
19cb0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
19cc0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19cd0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
19ce0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
19cf0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
19d00 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
19d10 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
19d20 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
19d30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
19d40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
19d50 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
19d60 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
19d70 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
19d80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19d90 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
19da0 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
19db0 65 20 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20  e Commit(..     
19dc0 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
19dd0 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20  tualTable table 
19de0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
19df0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
19e00 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
19e50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
19e60 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
19e70 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
19e80 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
19e90 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
19ea0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
19eb0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
19ec0 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
19ed0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
19ee0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
19ef0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
19f00 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
19f10 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
19f20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
19f30 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
19f40 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
19f50 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
19f60 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
19f70 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
19f80 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
19f90 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19fa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
19fb0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
19fc0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
19fd0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
19fe0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
19ff0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1a000 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1a010 43 6f 64 65 20 52 6f 6c 6c 62 61 63 6b 28 0d 0a  Code Rollback(..
1a020 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1a030 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
1a040 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  able /* in */.. 
1a050 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1a060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1a0c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1a0d0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1a0e0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1a0f0 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1a100 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1a110 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1a120 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
1a130 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
1a140 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1a150 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1a160 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1a170 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1a180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1a190 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1a1a0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1a1b0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1a1c0 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1a1d0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1a1e0 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1a1f0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1a200 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1a210 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1a220 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e  me="argumentCoun
1a230 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
1a240 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61   The number of a
1a250 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20  rguments to the 
1a260 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 73  function being s
1a270 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20 20 20  ought...        
1a280 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1a290 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1a2a0 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
1a2b0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1a2c0 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63 74  ame of the funct
1a2d0 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74  ion being sought
1a2e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a2f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1a300 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1a310 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a 20 20  ="function">..  
1a320 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
1a330 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
1a340 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
1a350 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
1a360 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1a370 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
1a380 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22 20 2f  QLiteFunction" /
1a390 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1a3a0 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f  e responsible fo
1a3b0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  r..        /// i
1a3c0 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68 65 20  mplementing the 
1a3d0 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69  specified functi
1a3e0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
1a3f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1a400 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1a410 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22  me="pClientData"
1a420 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
1a430 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
1a440 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
1a450 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
1a460 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20  contain the..   
1a470 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20       /// native 
1a480 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65  user-data pointe
1a490 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  r associated wit
1a4a0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  h..        /// <
1a4b0 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 66  paramref name="f
1a4c0 75 6e 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a 20 20  unction" />...  
1a4d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1a4e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1a4f0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1a500 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1a510 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
1a520 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20 66 6f   function was fo
1a530 75 6e 64 3b 20 7a 65 72 6f 20 6f 74 68 65 72 77  und; zero otherw
1a540 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ise...        //
1a550 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1a560 20 20 20 20 20 20 62 6f 6f 6c 20 46 69 6e 64 46        bool FindF
1a570 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
1a580 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
1a590 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
1a5a0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
1a5b0 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
1a5c0 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 20 20 20 20  umentCount,     
1a5d0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
1a5e0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1a5f0 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20 20 20  ng name,        
1a600 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
1a610 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
1a620 65 66 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  ef SQLiteFunctio
1a630 6e 20 66 75 6e 63 74 69 6f 6e 2c 20 2f 2a 20 6f  n function, /* o
1a640 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1a650 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43     ref IntPtr pC
1a660 6c 69 65 6e 74 44 61 74 61 20 20 20 20 20 20 20  lientData       
1a670 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
1a680 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1a690 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1a6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1a6e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1a6f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1a700 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
1a710 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
1a720 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
1a730 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1a740 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
1a750 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22  eModule.xRename"
1a760 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1a770 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1a780 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1a790 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1a7a0 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1a7b0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1a7c0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1a7d0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1a7e0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1a7f0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1a800 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1a810 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1a820 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1a830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1a840 72 61 6d 20 6e 61 6d 65 3d 22 6e 65 77 4e 61 6d  ram name="newNam
1a850 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1a860 20 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f   The new name fo
1a870 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
1a880 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1a890 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1a8a0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1a8b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1a8c0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1a8d0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1a8e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1a8f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1a900 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
1a910 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
1a920 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1a930 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
1a940 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1a950 20 20 20 20 73 74 72 69 6e 67 20 6e 65 77 4e 61      string newNa
1a960 6d 65 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  me            /*
1a970 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1a980 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1a990 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1a9e0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1a9f0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1aa00 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1aa10 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1aa20 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1aa30 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1aa40 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1aa50 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22  dule.xSavepoint"
1aa60 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1aa70 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1aa80 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1aa90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1aaa0 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1aab0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1aac0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1aad0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1aae0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1aaf0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1ab00 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1ab10 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1ab20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1ab30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1ab40 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f  ram name="savepo
1ab50 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
1ab60 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e  // This is an in
1ab70 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72  teger identifier
1ab80 20 75 6e 64 65 72 20 77 68 69 63 68 20 74 68 65   under which the
1ab90 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61   the current sta
1aba0 74 65 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f  te of..        /
1abb0 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  // the virtual t
1abc0 61 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 73  able should be s
1abd0 61 76 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aved...        /
1abe0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1abf0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1ac00 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1ac10 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1ac20 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1ac30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1ac40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1ac50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1ac60 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20  Savepoint(..    
1ac70 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
1ac80 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
1ac90 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
1aca0 20 20 20 20 20 20 20 20 69 6e 74 20 73 61 76 65          int save
1acb0 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20 20 20  point           
1acc0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
1acd0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1ace0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1ad30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1ad40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1ad50 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1ad60 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1ad70 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1ad80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1ad90 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1ada0 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  veModule.xReleas
1adb0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
1adc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1add0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1ade0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1adf0 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
1ae00 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1ae10 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
1ae20 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
1ae30 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
1ae40 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
1ae50 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
1ae60 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
1ae70 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1ae80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1ae90 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65  param name="save
1aea0 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
1aeb0 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20   /// This is an 
1aec0 69 6e 74 65 67 65 72 20 75 73 65 64 20 74 6f 20  integer used to 
1aed0 69 6e 64 69 63 61 74 65 20 74 68 61 74 20 61 6e  indicate that an
1aee0 79 20 73 61 76 65 64 20 73 74 61 74 65 73 20 77  y saved states w
1aef0 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  ith an..        
1af00 2f 2f 2f 20 69 64 65 6e 74 69 66 69 65 72 20 67  /// identifier g
1af10 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65  reater than or e
1af20 71 75 61 6c 20 74 6f 20 74 68 69 73 20 73 68 6f  qual to this sho
1af30 75 6c 64 20 62 65 20 64 65 6c 65 74 65 64 20 62  uld be deleted b
1af40 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
1af50 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
1af60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1af70 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1af80 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1af90 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1afa0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1afb0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
1afc0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1afd0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
1afe0 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65 6c 65  teErrorCode Rele
1aff0 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
1b000 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1b010 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
1b020 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1b030 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20    int savepoint 
1b040 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
1b050 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1b060 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1b070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b0b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b0c0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1b0d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b0e0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1b0f0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1b100 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1b110 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1b120 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1b130 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
1b140 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1b150 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1b160 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1b170 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
1b180 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
1b190 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1b1a0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
1b1b0 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
1b1c0 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
1b1d0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1b1e0 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
1b1f0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1b200 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1b210 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b220 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69  am name="savepoi
1b230 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
1b240 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74  / This is an int
1b250 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1b260 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20  used to specify 
1b270 61 20 73 70 65 63 69 66 69 63 20 73 61 76 65 64  a specific saved
1b280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
1b290 61 74 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  ate for the virt
1b2a0 75 61 6c 20 74 61 62 6c 65 20 66 6f 72 20 69 74  ual table for it
1b2b0 20 74 6f 20 72 65 73 74 6f 72 65 20 69 74 73 65   to restore itse
1b2c0 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77 68 69 63  lf back to, whic
1b2d0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  h..        /// s
1b2e0 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76 65 20  hould also have 
1b2f0 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 64 65  the effect of de
1b300 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61 76 65 64  leting all saved
1b310 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d   states with an.
1b320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
1b330 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1b340 67 72 65 61 74 65 72 20 74 68 61 6e 20 74 68 69  greater than thi
1b350 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20  s one...        
1b360 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1b370 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1b380 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1b390 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1b3a0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1b3b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1b3c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1b3d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1b3e0 20 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20   RollbackTo(..  
1b3f0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1b400 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
1b410 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
1b420 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 61            int sa
1b430 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20  vepoint         
1b440 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1b450 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 20 20            );..  
1b460 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
1b470 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
1b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b4c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
1b4d0 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 65 6d 6f  egion SQLiteMemo
1b4e0 72 79 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d  ry Static Class.
1b4f0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1b500 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
1b510 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20   class contains 
1b520 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74  static methods t
1b530 68 61 74 20 61 72 65 20 75 73 65 64 20 74 6f 20  hat are used to 
1b540 61 6c 6c 6f 63 61 74 65 2c 0d 0a 20 20 20 20 2f  allocate,..    /
1b550 2f 2f 20 6d 61 6e 69 70 75 6c 61 74 65 2c 20 61  // manipulate, a
1b560 6e 64 20 66 72 65 65 20 6e 61 74 69 76 65 20 6d  nd free native m
1b570 65 6d 6f 72 79 20 70 72 6f 76 69 64 65 64 20 62  emory provided b
1b580 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  y the SQLite cor
1b590 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1b5a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1b5b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b5c0 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65  tic class SQLite
1b5d0 4d 65 6d 6f 72 79 0d 0a 20 20 20 20 7b 0d 0a 20  Memory..    {.. 
1b5e0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
1b5f0 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23 69 66  rivate Data..#if
1b600 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59   TRACK_MEMORY_BY
1b610 54 45 53 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  TES..        ///
1b620 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1b630 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 62 6a      /// This obj
1b640 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20  ect instance is 
1b650 75 73 65 64 20 74 6f 20 73 79 6e 63 68 72 6f 6e  used to synchron
1b660 69 7a 65 20 61 63 63 65 73 73 20 74 6f 20 74 68  ize access to th
1b670 65 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20  e other..       
1b680 20 2f 2f 2f 20 73 74 61 74 69 63 20 66 69 65 6c   /// static fiel
1b690 64 73 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ds of this class
1b6a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b6b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1b6c0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1b6d0 63 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  c object syncRoo
1b6e0 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
1b6f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1b700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b740 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1b750 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1b760 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 74         /// The t
1b770 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f  otal number of o
1b780 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f 72  utstanding memor
1b790 79 20 62 79 74 65 73 20 61 6c 6c 6f 63 61 74 65  y bytes allocate
1b7a0 64 20 62 79 20 74 68 69 73 0d 0a 20 20 20 20 20  d by this..     
1b7b0 20 20 20 2f 2f 2f 20 63 6c 61 73 73 20 75 73 69     /// class usi
1b7c0 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  ng the SQLite co
1b7d0 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
1b7e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1b7f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
1b800 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
1b810 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d  bytesAllocated;.
1b820 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1b830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b870 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1b880 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1b890 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 78       /// The max
1b8a0 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 6f  imum number of o
1b8b0 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f 72  utstanding memor
1b8c0 79 20 62 79 74 65 73 20 65 76 65 72 20 61 6c 6c  y bytes ever all
1b8d0 6f 63 61 74 65 64 20 62 79 0d 0a 20 20 20 20 20  ocated by..     
1b8e0 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73     /// this clas
1b8f0 73 20 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69  s using the SQLi
1b900 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
1b910 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1b920 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1b930 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1b940 20 69 6e 74 20 6d 61 78 69 6d 75 6d 42 79 74 65   int maximumByte
1b950 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 23 65 6e  sAllocated;..#en
1b960 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  dif..        #en
1b970 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1b980 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b9d0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 65        #region Me
1b9e0 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20  mory Allocation 
1b9f0 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
1ba00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1ba10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1ba20 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 74 20  // Allocates at 
1ba30 6c 65 61 73 74 20 74 68 65 20 73 70 65 63 69 66  least the specif
1ba40 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  ied number of by
1ba50 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20 6d 65  tes of native me
1ba60 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mory..        //
1ba70 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69 74 65  / via the SQLite
1ba80 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 73 71   core library sq
1ba90 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66  lite3_malloc() f
1baa0 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65 74 75  unction and retu
1bab0 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rns..        ///
1bac0 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6e   the resulting n
1bad0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e 0d 0a  ative pointer...
1bae0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1baf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1bb00 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1bb10 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20 20  "size">..       
1bb20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
1bb30 6f 66 20 62 79 74 65 73 20 74 6f 20 61 6c 6c 6f  of bytes to allo
1bb40 63 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cate...        /
1bb50 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1bb60 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1bb70 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1bb80 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
1bb90 65 72 20 74 68 61 74 20 70 6f 69 6e 74 73 20 74  er that points t
1bba0 6f 20 61 20 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d  o a block of mem
1bbb0 6f 72 79 20 6f 66 20 61 74 20 6c 65 61 73 74 20  ory of at least 
1bbc0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1bbd0 20 73 70 65 63 69 66 69 65 64 20 73 69 7a 65 20   specified size 
1bbe0 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65 66 3d 22  -OR- <see cref="
1bbf0 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20  IntPtr.Zero" /> 
1bc00 69 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 63 6f  if the memory co
1bc10 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  uld..        ///
1bc20 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 63 61 74 65   not be allocate
1bc30 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1bc40 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1bc50 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1bc60 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74  c IntPtr Allocat
1bc70 65 28 69 6e 74 20 73 69 7a 65 29 0d 0a 20 20 20  e(int size)..   
1bc80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1bc90 20 20 20 20 49 6e 74 50 74 72 20 70 4d 65 6d 6f      IntPtr pMemo
1bca0 72 79 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76  ry = UnsafeNativ
1bcb0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
1bcc0 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 3b 0d 0a  _malloc(size);..
1bcd0 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f  ..#if TRACK_MEMO
1bce0 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20  RY_BYTES..      
1bcf0 20 20 20 20 20 20 69 66 20 28 70 4d 65 6d 6f 72        if (pMemor
1bd00 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  y != IntPtr.Zero
1bd10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1bd20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bd30 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69 7a 65 20    int blockSize 
1bd40 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72 79 29 3b  = Size(pMemory);
1bd50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1bd60 20 20 20 20 69 66 20 28 62 6c 6f 63 6b 53 69 7a      if (blockSiz
1bd70 65 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  e > 0)..        
1bd80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1bd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1bda0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
1bdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bdc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1bdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1bde0 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 2b 3d  ytesAllocated +=
1bdf0 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a 0d 0a 20   blockSize;.... 
1be00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be10 20 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73         if (bytes
1be20 41 6c 6c 6f 63 61 74 65 64 20 3e 20 6d 61 78 69  Allocated > maxi
1be30 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74 65  mumBytesAllocate
1be40 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
1be50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be60 6d 61 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f  maximumBytesAllo
1be70 63 61 74 65 64 20 3d 20 62 79 74 65 73 41 6c 6c  cated = bytesAll
1be80 6f 63 61 74 65 64 3b 0d 0a 20 20 20 20 20 20 20  ocated;..       
1be90 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1bea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1beb0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1bec0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1bed0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70          return p
1bee0 4d 65 6d 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  Memory;..       
1bef0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1bf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf40 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1bf50 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1bf60 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73          /// Gets
1bf70 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
1bf80 20 61 63 74 75 61 6c 20 73 69 7a 65 20 6f 66 20   actual size of 
1bf90 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65  the specified me
1bfa0 6d 6f 72 79 20 62 6c 6f 63 6b 20 74 68 61 74 0d  mory block that.
1bfb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73  .        /// was
1bfc0 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61   previously obta
1bfd0 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 3c 73  ined from the <s
1bfe0 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74  ee cref="Allocat
1bff0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
1c000 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1c010 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1c020 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1c030 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20 20  pMemory">..     
1c040 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1c050 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1c060 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72   memory block pr
1c070 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65  eviously obtaine
1c080 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
1c090 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1c0a0 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20  f="Allocate" /> 
1c0b0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1c0c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1c0d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1c0e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1c0f0 2f 20 54 68 65 20 61 63 74 75 61 6c 20 73 69 7a  / The actual siz
1c100 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  e, in bytes, of 
1c110 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b  the memory block
1c120 20 73 70 65 63 69 66 69 65 64 20 76 69 61 20 74   specified via t
1c130 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1c140 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e 0d  native pointer..
1c150 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1c160 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1c170 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
1c180 6e 74 20 53 69 7a 65 28 49 6e 74 50 74 72 20 70  nt Size(IntPtr p
1c190 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20 20  Memory)..       
1c1a0 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f   {..#if !SQLITE_
1c1b0 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20  STANDARD..      
1c1c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73        return Uns
1c1d0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1c1e0 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f  .sqlite3_malloc_
1c1f0 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28 70 4d 65  size_interop(pMe
1c200 6d 6f 72 79 29 3b 0d 0a 23 65 6c 69 66 20 54 52  mory);..#elif TR
1c210 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53  ACK_MEMORY_BYTES
1c220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1c230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1c240 20 48 41 43 4b 3a 20 4f 6b 2c 20 77 65 20 63 61   HACK: Ok, we ca
1c250 6e 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65 20 74  nnot determine t
1c260 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6d  he size of the m
1c270 65 6d 6f 72 79 20 62 6c 6f 63 6b 3b 0d 0a 20 20  emory block;..  
1c280 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1c290 20 20 20 74 68 65 72 65 66 6f 72 65 2c 20 6a 75     therefore, ju
1c2a0 73 74 20 74 72 61 63 6b 20 6e 75 6d 62 65 72 20  st track number 
1c2b0 6f 66 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 69  of allocations i
1c2c0 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 20  nstead...       
1c2d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1c2e0 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 4d 65       return (pMe
1c2f0 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a  mory != IntPtr.Z
1c300 65 72 6f 29 20 3f 20 31 20 3a 20 30 3b 0d 0a 23  ero) ? 1 : 0;..#
1c310 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1c320 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 23 65 6e    return 0;..#en
1c330 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1c340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1c350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c390 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1c3a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1c3b0 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 20      /// Frees a 
1c3c0 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65  memory block pre
1c3d0 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64  viously obtained
1c3e0 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
1c3f0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1c400 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d  ="Allocate" /> m
1c410 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1c420 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1c430 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1c440 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79  am name="pMemory
1c450 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1c460 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
1c470 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79  er to the memory
1c480 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c   block previousl
1c490 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
1c4a0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1c4b0 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f   <see cref="Allo
1c4c0 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  cate" /> method.
1c4d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c4e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1c4f0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
1c500 69 64 20 46 72 65 65 28 49 6e 74 50 74 72 20 70  id Free(IntPtr p
1c510 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20 20  Memory)..       
1c520 20 7b 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45   {..#if TRACK_ME
1c530 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20  MORY_BYTES..    
1c540 20 20 20 20 20 20 20 20 69 66 20 28 70 4d 65 6d          if (pMem
1c550 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ory != IntPtr.Ze
1c560 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1c570 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1c580 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69 7a      int blockSiz
1c590 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72 79  e = Size(pMemory
1c5a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1c5b0 20 20 20 20 20 20 69 66 20 28 62 6c 6f 63 6b 53        if (blockS
1c5c0 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  ize > 0)..      
1c5d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1c5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5f0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
1c600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c610 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c630 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20   bytesAllocated 
1c640 2d 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a 20  -= blockSize;.. 
1c650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c660 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1c670 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c680 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1c690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
1c6a0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
1c6b0 73 2e 73 71 6c 69 74 65 33 5f 66 72 65 65 28 70  s.sqlite3_free(p
1c6c0 4d 65 6d 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  Memory);..      
1c6d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
1c6e0 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
1c6f0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1c700 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1c710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c750 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
1c760 20 53 51 4c 69 74 65 53 74 72 69 6e 67 20 53 74   SQLiteString St
1c770 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20  atic Class..    
1c780 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1c790 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
1c7a0 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69  s contains stati
1c7b0 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61  c methods that a
1c7c0 72 65 20 75 73 65 64 20 74 6f 20 64 65 61 6c 20  re used to deal 
1c7d0 77 69 74 68 20 6e 61 74 69 76 65 0d 0a 20 20 20  with native..   
1c7e0 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72 69 6e   /// UTF-8 strin
1c7f0 67 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 62 65  g pointers to be
1c800 20 75 73 65 64 20 77 69 74 68 20 74 68 65 20 53   used with the S
1c810 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1c820 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ry...    /// </s
1c830 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74  ummary>..    int
1c840 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
1c850 73 73 20 53 51 4c 69 74 65 53 74 72 69 6e 67 0d  ss SQLiteString.
1c860 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1c870 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
1c880 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20  Constants..     
1c890 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1c8a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1c8b0 69 73 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75  is is the maximu
1c8c0 6d 20 70 6f 73 73 69 62 6c 65 20 6c 65 6e 67 74  m possible lengt
1c8d0 68 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  h for the native
1c8e0 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 0d 0a   UTF-8 encoded..
1c8f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69          /// stri
1c900 6e 67 73 20 75 73 65 64 20 77 69 74 68 20 74 68  ngs used with th
1c910 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
1c920 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
1c930 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1c940 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1c950 73 74 61 74 69 63 20 69 6e 74 20 54 68 69 72 74  static int Thirt
1c960 79 42 69 74 73 20 3d 20 30 78 33 66 66 66 66 66  yBits = 0x3fffff
1c970 66 66 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ff;....        /
1c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c9c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1c9d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1c9e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1c9f0 73 20 69 73 20 74 68 65 20 3c 73 65 65 20 63 72  s is the <see cr
1ca00 65 66 3d 22 45 6e 63 6f 64 69 6e 67 22 20 2f 3e  ef="Encoding" />
1ca10 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1ca20 20 75 73 65 64 20 74 6f 20 68 61 6e 64 6c 65 0d   used to handle.
1ca30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  .        /// con
1ca40 76 65 72 73 69 6f 6e 73 20 66 72 6f 6d 2f 74 6f  versions from/to
1ca50 20 55 54 46 2d 38 2e 0d 0a 20 20 20 20 20 20 20   UTF-8...       
1ca60 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1ca70 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1ca80 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
1ca90 20 45 6e 63 6f 64 69 6e 67 20 55 74 66 38 45 6e   Encoding Utf8En
1caa0 63 6f 64 69 6e 67 20 3d 20 45 6e 63 6f 64 69 6e  coding = Encodin
1cab0 67 2e 55 54 46 38 3b 0d 0a 20 20 20 20 20 20 20  g.UTF8;..       
1cac0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1cad0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1cae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1caf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1cb20 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1cb30 6e 20 55 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67  n UTF-8 Encoding
1cb40 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
1cb50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1cb60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1cb70 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65  /// Converts the
1cb80 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67   specified manag
1cb90 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 74  ed string into t
1cba0 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
1cbb0 67 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f  g and..        /
1cbc0 2f 2f 20 72 65 74 75 72 6e 73 20 74 68 65 20 61  // returns the a
1cbd0 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 63 6f  rray of bytes co
1cbe0 6e 74 61 69 6e 69 6e 67 20 69 74 73 20 72 65 70  ntaining its rep
1cbf0 72 65 73 65 6e 74 61 74 69 6f 6e 20 69 6e 20 74  resentation in t
1cc00 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hat..        ///
1cc10 20 65 6e 63 6f 64 69 6e 67 2e 0d 0a 20 20 20 20   encoding...    
1cc20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1cc30 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1cc40 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
1cc50 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
1cc60 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74  / The managed st
1cc70 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ring to convert.
1cc80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1cc90 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1cca0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1ccb0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
1ccc0 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 63 6f  rray of bytes co
1ccd0 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 72 65 70  ntaining the rep
1cce0 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  resentation of t
1ccf0 68 65 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20  he managed..    
1cd00 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20 69      /// string i
1cd10 6e 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f  n the UTF-8 enco
1cd20 64 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f  ding or null upo
1cd30 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
1cd40 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1cd50 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
1cd60 69 63 20 73 74 61 74 69 63 20 62 79 74 65 5b 5d  ic static byte[]
1cd70 20 47 65 74 55 74 66 38 42 79 74 65 73 46 72 6f   GetUtf8BytesFro
1cd80 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  mString(..      
1cd90 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
1cda0 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
1cdb0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1cdc0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
1cdd0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
1cde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1cdf0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
1ce00 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1ce10 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65   Utf8Encoding.Ge
1ce20 74 42 79 74 65 73 28 76 61 6c 75 65 29 3b 0d 0a  tBytes(value);..
1ce30 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1ce40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ce50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1ce90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1cea0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1ceb0 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20  // Converts the 
1cec0 73 70 65 63 69 66 69 65 64 20 61 72 72 61 79 20  specified array 
1ced0 6f 66 20 62 79 74 65 73 20 72 65 70 72 65 73 65  of bytes represe
1cee0 6e 74 69 6e 67 20 61 20 73 74 72 69 6e 67 20 69  nting a string i
1cef0 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
1cf00 2f 2f 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  // UTF-8 encodin
1cf10 67 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20  g and returns a 
1cf20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d  managed string..
1cf30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1cf40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1cf50 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1cf60 3d 22 62 79 74 65 73 22 3e 0d 0a 20 20 20 20 20  ="bytes">..     
1cf70 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79     /// The array
1cf80 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63 6f 6e   of bytes to con
1cf90 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
1cfa0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1cfb0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1cfc0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1cfd0 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69  The managed stri
1cfe0 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  ng or null upon 
1cff0 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
1d000 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1d010 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1d020 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
1d030 65 74 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  etStringFromUtf8
1d040 42 79 74 65 73 28 0d 0a 20 20 20 20 20 20 20 20  Bytes(..        
1d050 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65 73      byte[] bytes
1d060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
1d070 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1d080 20 20 20 20 20 20 20 20 69 66 20 28 62 79 74 65          if (byte
1d090 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
1d0a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1d0b0 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20  rn null;....#if 
1d0c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d0d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d0e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
1d0f0 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74 53  tf8Encoding.GetS
1d100 74 72 69 6e 67 28 62 79 74 65 73 29 3b 0d 0a 23  tring(bytes);..#
1d110 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1d120 20 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63    return Utf8Enc
1d130 6f 64 69 6e 67 2e 47 65 74 53 74 72 69 6e 67 28  oding.GetString(
1d140 62 79 74 65 73 2c 20 30 2c 20 62 79 74 65 73 2e  bytes, 0, bytes.
1d150 4c 65 6e 67 74 68 29 3b 0d 0a 23 65 6e 64 69 66  Length);..#endif
1d160 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1d170 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1d180 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1d190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
1d1e0 65 67 69 6f 6e 20 55 54 46 2d 38 20 53 74 72 69  egion UTF-8 Stri
1d1f0 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ng Helper Method
1d200 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
1d210 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1d220 20 20 2f 2f 2f 20 50 72 6f 62 65 73 20 61 20 6e    /// Probes a n
1d230 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
1d240 20 61 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65   a string in the
1d250 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20   UTF-8 encoding 
1d260 66 6f 72 20 69 74 73 0d 0a 20 20 20 20 20 20 20  for its..       
1d270 20 2f 2f 2f 20 74 65 72 6d 69 6e 61 74 69 6e 67   /// terminating
1d280 20 4e 55 4c 20 63 68 61 72 61 63 74 65 72 2c 20   NUL character, 
1d290 77 69 74 68 69 6e 20 74 68 65 20 73 70 65 63 69  within the speci
1d2a0 66 69 65 64 20 6c 65 6e 67 74 68 20 6c 69 6d 69  fied length limi
1d2b0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
1d2c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1d2d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1d2e0 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20  ame="pValue">.. 
1d2f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1d300 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
1d310 61 74 65 64 20 73 74 72 69 6e 67 20 70 6f 69 6e  ated string poin
1d320 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
1d330 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1d340 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1d350 61 6d 65 3d 22 6c 69 6d 69 74 22 3e 0d 0a 20 20  ame="limit">..  
1d360 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
1d370 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20  ximum length of 
1d380 74 68 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e  the native strin
1d390 67 2c 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20  g, in bytes...  
1d3a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1d3b0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1d3c0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1d3d0 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74     /// The lengt
1d3e0 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  h of the native 
1d3f0 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73  string, in bytes
1d400 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20 74 68   -OR- zero if th
1d410 65 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20  e length..      
1d420 20 20 2f 2f 2f 20 63 6f 75 6c 64 20 6e 6f 74 20    /// could not 
1d430 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
1d440 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1d450 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1d460 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e  public static in
1d470 74 20 50 72 6f 62 65 46 6f 72 55 74 66 38 42 79  t ProbeForUtf8By
1d480 74 65 4c 65 6e 67 74 68 28 0d 0a 20 20 20 20 20  teLength(..     
1d490 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1d4a0 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alue,..         
1d4b0 20 20 20 69 6e 74 20 6c 69 6d 69 74 0d 0a 20 20     int limit..  
1d4c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1d4d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d4e0 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d      int length =
1d4f0 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
1d500 20 20 20 69 66 20 28 28 70 56 61 6c 75 65 20 21     if ((pValue !
1d510 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26  = IntPtr.Zero) &
1d520 26 20 28 6c 69 6d 69 74 20 3e 20 30 29 29 0d 0a  & (limit > 0))..
1d530 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1d540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
1d550 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  o..             
1d560 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1d570 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4d 61            if (Ma
1d580 72 73 68 61 6c 2e 52 65 61 64 42 79 74 65 28 70  rshal.ReadByte(p
1d590 56 61 6c 75 65 2c 20 6c 65 6e 67 74 68 29 20 3d  Value, length) =
1d5a0 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0)..          
1d5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
1d5c0 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  eak;....        
1d5d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1d5e0 6c 65 6e 67 74 68 20 3e 3d 20 6c 69 6d 69 74 29  length >= limit)
1d5f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d600 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
1d610 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d620 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68 2b 2b          length++
1d630 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1d640 20 20 20 7d 20 77 68 69 6c 65 20 28 74 72 75 65     } while (true
1d650 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1d660 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1d670 20 72 65 74 75 72 6e 20 6c 65 6e 67 74 68 3b 0d   return length;.
1d680 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1d690 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1d6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1d6e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1d6f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d700 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65  /// Converts the
1d710 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
1d720 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  e NUL-terminated
1d730 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
1d740 69 6e 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  inter..        /
1d750 2f 2f 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65  // into a manage
1d760 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  d string...     
1d770 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1d780 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1d790 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
1d7a0 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
1d7b0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c  / The native NUL
1d7c0 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d  -terminated UTF-
1d7d0 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72  8 string pointer
1d7e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1d7f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1d800 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1d810 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1d820 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 6f  managed string o
1d830 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
1d840 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1d850 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1d860 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1d870 74 69 63 20 73 74 72 69 6e 67 20 53 74 72 69 6e  tic string Strin
1d880 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
1d890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1d8a0 74 50 74 72 20 70 56 61 6c 75 65 0d 0a 20 20 20  tPtr pValue..   
1d8b0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1d8c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d8d0 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67     return String
1d8e0 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 70  FromUtf8IntPtr(p
1d8f0 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  Value,..        
1d900 20 20 20 20 20 20 20 20 50 72 6f 62 65 46 6f 72          ProbeFor
1d910 55 74 66 38 42 79 74 65 4c 65 6e 67 74 68 28 70  Utf8ByteLength(p
1d920 56 61 6c 75 65 2c 20 54 68 69 72 74 79 42 69 74  Value, ThirtyBit
1d930 73 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  s));..        }.
1d940 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1d950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d990 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1d9a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1d9b0 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
1d9c0 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
1d9d0 6e 61 74 69 76 65 20 55 54 46 2d 38 20 73 74 72  native UTF-8 str
1d9e0 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 66 20 74  ing pointer of t
1d9f0 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
1da00 20 20 20 20 20 20 2f 2f 2f 20 6c 65 6e 67 74 68        /// length
1da10 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64 20   into a managed 
1da20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  string...       
1da30 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1da40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1da50 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65  ram name="pValue
1da60 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1da70 54 68 65 20 6e 61 74 69 76 65 20 55 54 46 2d 38  The native UTF-8
1da80 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 2e   string pointer.
1da90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1daa0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1dab0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1dac0 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20  "length">..     
1dad0 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74     /// The lengt
1dae0 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  h of the native 
1daf0 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73  string, in bytes
1db00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1db10 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1db20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1db30 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1db40 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 6f  managed string o
1db50 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
1db60 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1db70 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1db80 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1db90 74 69 63 20 73 74 72 69 6e 67 20 53 74 72 69 6e  tic string Strin
1dba0 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
1dbb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1dbc0 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20  tPtr pValue,..  
1dbd0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65            int le
1dbe0 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20  ngth..          
1dbf0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1dc00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1dc10 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
1dc20 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1dc30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1dc40 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1dc50 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3e      if (length >
1dc60 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
1dc70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1dc80 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65 73      byte[] bytes
1dc90 20 3d 20 6e 65 77 20 62 79 74 65 5b 6c 65 6e 67   = new byte[leng
1dca0 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  th];....        
1dcb0 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
1dcc0 43 6f 70 79 28 70 56 61 6c 75 65 2c 20 62 79 74  Copy(pValue, byt
1dcd0 65 73 2c 20 30 2c 20 6c 65 6e 67 74 68 29 3b 0d  es, 0, length);.
1dce0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1dcf0 20 20 20 72 65 74 75 72 6e 20 47 65 74 53 74 72     return GetStr
1dd00 69 6e 67 46 72 6f 6d 55 74 66 38 42 79 74 65 73  ingFromUtf8Bytes
1dd10 28 62 79 74 65 73 29 3b 0d 0a 20 20 20 20 20 20  (bytes);..      
1dd20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1dd30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74         return St
1dd40 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20  ring.Empty;..   
1dd50 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1dd60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1dd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ddb0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1ddc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1ddd0 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70 65  Converts the spe
1dde0 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64 20 73  cified managed s
1ddf0 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 6e 61 74  tring into a nat
1de00 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
1de10 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1de20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1de30 6e 74 65 72 20 75 73 69 6e 67 20 6d 65 6d 6f 72  nter using memor
1de40 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
1de50 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d  the SQLite core.
1de60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62  .        /// lib
1de70 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
1de80 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1de90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1dea0 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
1deb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1dec0 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20   managed string 
1ded0 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
1dee0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1def0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1df00 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1df10 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1df20 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20   NUL-terminated 
1df30 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1df40 6e 74 65 72 20 6f 72 0d 0a 20 20 20 20 20 20 20  nter or..       
1df50 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1df60 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20  IntPtr.Zero" /> 
1df70 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1df80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1df90 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1dfa0 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
1dfb0 50 74 72 20 55 74 66 38 49 6e 74 50 74 72 46 72  Ptr Utf8IntPtrFr
1dfc0 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  omString(..     
1dfd0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
1dfe0 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
1dff0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
1e000 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
1e010 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20  ength = 0;....  
1e020 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1e030 20 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53   Utf8IntPtrFromS
1e040 74 72 69 6e 67 28 76 61 6c 75 65 2c 20 72 65 66  tring(value, ref
1e050 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20   length);..     
1e060 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1e070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1e0c0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1e0d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
1e0e0 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69  nverts the speci
1e0f0 66 69 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72  fied managed str
1e100 69 6e 67 20 69 6e 74 6f 20 61 20 6e 61 74 69 76  ing into a nativ
1e110 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  e NUL-terminated
1e120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54  ..        /// UT
1e130 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
1e140 65 72 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20  er using memory 
1e150 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68  obtained from th
1e160 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20  e SQLite core.. 
1e170 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61         /// libra
1e180 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
1e190 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1e1a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1e1b0 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
1e1c0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
1e1d0 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f  anaged string to
1e1e0 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
1e1f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1e210 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68  ram name="length
1e220 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1e230 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  The length of th
1e240 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c  e native string,
1e250 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20 20   in bytes...    
1e260 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1e270 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1e280 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1e290 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1e2a0 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  NUL-terminated U
1e2b0 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
1e2c0 74 65 72 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  ter or..        
1e2d0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1e2e0 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 75  ntPtr.Zero" /> u
1e2f0 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
1e300 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1e310 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
1e320 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50  blic static IntP
1e330 74 72 20 55 74 66 38 49 6e 74 50 74 72 46 72 6f  tr Utf8IntPtrFro
1e340 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  mString(..      
1e350 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
1e360 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
1e370 20 72 65 66 20 69 6e 74 20 6c 65 6e 67 74 68 0d   ref int length.
1e380 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
1e390 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e3a0 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
1e3b0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1e3c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1e3d0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
1e3e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1e3f0 74 50 74 72 20 72 65 73 75 6c 74 20 3d 20 49 6e  tPtr result = In
1e400 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
1e410 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
1e420 79 74 65 73 20 3d 20 47 65 74 55 74 66 38 42 79  ytes = GetUtf8By
1e430 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76 61  tesFromString(va
1e440 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lue);....       
1e450 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20 3d       if (bytes =
1e460 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1e470 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1e480 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
1e490 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67              leng
1e4a0 74 68 20 3d 20 62 79 74 65 73 2e 4c 65 6e 67 74  th = bytes.Lengt
1e4b0 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
1e4c0 20 20 72 65 73 75 6c 74 20 3d 20 53 51 4c 69 74    result = SQLit
1e4d0 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65  eMemory.Allocate
1e4e0 28 6c 65 6e 67 74 68 20 2b 20 31 29 3b 0d 0a 0d  (length + 1);...
1e4f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1e500 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74 50 74  (result == IntPt
1e510 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1e520 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1e530 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
1e540 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
1e550 68 61 6c 2e 43 6f 70 79 28 62 79 74 65 73 2c 20  hal.Copy(bytes, 
1e560 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74  0, result, lengt
1e570 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h);..           
1e580 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 42 79   Marshal.WriteBy
1e590 74 65 28 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74  te(result, lengt
1e5a0 68 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  h, 0);....      
1e5b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
1e5c0 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
1e5d0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
1e5e0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
1e5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e630 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1e640 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20    #region UTF-8 
1e650 53 74 72 69 6e 67 20 41 72 72 61 79 20 48 65 6c  String Array Hel
1e660 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
1e670 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1e680 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1e690 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67 69 63  Converts a logic
1e6a0 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  al array of nati
1e6b0 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65  ve NUL-terminate
1e6c0 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 0d 0a  d UTF-8 string..
1e6d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e          /// poin
1e6e0 74 65 72 73 20 69 6e 74 6f 20 61 6e 20 61 72 72  ters into an arr
1e6f0 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74  ay of managed st
1e700 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 20 20  rings...        
1e710 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1e720 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1e730 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d  am name="argc">.
1e740 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1e750 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65   number of eleme
1e760 6e 74 73 20 69 6e 20 74 68 65 20 6c 6f 67 69 63  nts in the logic
1e770 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  al array of nati
1e780 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
1e790 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  NUL-terminated U
1e7a0 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
1e7b0 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ters...        /
1e7c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1e7d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1e7e0 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20  name="argv">..  
1e7f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1e800 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
1e810 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  the logical arra
1e820 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d  y of native NUL-
1e830 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20  terminated..    
1e840 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74      /// UTF-8 st
1e850 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 74 6f  ring pointers to
1e860 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
1e870 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e880 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1e890 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1e8a0 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
1e8b0 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 73   managed strings
1e8c0 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
1e8d0 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
1e8e0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1e8f0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1e900 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 53  tatic string[] S
1e910 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55 74  tringArrayFromUt
1e920 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74 72 28  f8SizeAndIntPtr(
1e930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
1e940 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
1e950 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
1e960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
1e970 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1e980 20 20 20 20 20 20 20 20 69 66 20 28 61 72 67 63          if (argc
1e990 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   < 0)..         
1e9a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
1e9b0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
1e9c0 20 20 20 69 66 20 28 61 72 67 76 20 3d 3d 20 49     if (argv == I
1e9d0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1e9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1e9f0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
1ea00 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
1ea10 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 73  ] result = new s
1ea20 74 72 69 6e 67 5b 61 72 67 63 5d 3b 0d 0a 0d 0a  tring[argc];....
1ea30 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
1ea40 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 2c 20  (int index = 0, 
1ea50 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 20 20 20  offset = 0;..   
1ea60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea70 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c 74 2e   index < result.
1ea80 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20  Length;..       
1ea90 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64               ind
1eaa0 65 78 2b 2b 2c 20 6f 66 66 73 65 74 20 2b 3d 20  ex++, offset += 
1eab0 49 6e 74 50 74 72 2e 53 69 7a 65 29 0d 0a 20 20  IntPtr.Size)..  
1eac0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ead0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
1eae0 50 74 72 20 70 41 72 67 20 3d 20 53 51 4c 69 74  Ptr pArg = SQLit
1eaf0 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
1eb00 50 74 72 28 61 72 67 76 2c 20 6f 66 66 73 65 74  Ptr(argv, offset
1eb10 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1eb20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64        result[ind
1eb30 65 78 5d 20 3d 20 28 70 41 72 67 20 21 3d 20 49  ex] = (pArg != I
1eb40 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20  ntPtr.Zero) ?.. 
1eb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb60 20 20 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66     StringFromUtf
1eb70 38 49 6e 74 50 74 72 28 70 41 72 67 29 20 3a 20  8IntPtr(pArg) : 
1eb80 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
1eb90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1eba0 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
1ebb0 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  t;..        }...
1ebc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1ebd0 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1ec20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1ec30 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
1ec40 61 6e 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61  an array of mana
1ec50 67 65 64 20 73 74 72 69 6e 67 73 20 69 6e 74 6f  ged strings into
1ec60 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6e 61 74   an array of nat
1ec70 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
1ec80 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20   NUL-terminated 
1ec90 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
1eca0 6e 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20  nters...        
1ecb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1ecc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1ecd0 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22  am name="values"
1ece0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1ecf0 68 65 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61  he array of mana
1ed00 67 65 64 20 73 74 72 69 6e 67 73 20 74 6f 20 63  ged strings to c
1ed10 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
1ed20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1ed30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1ed40 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1ed50 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 6e  / The array of n
1ed60 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
1ed70 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e  ated UTF-8 strin
1ed80 67 20 70 6f 69 6e 74 65 72 73 20 6f 72 20 6e 75  g pointers or nu
1ed90 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
1eda0 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1edb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1edc0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1edd0 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
1ede0 50 74 72 5b 5d 20 55 74 66 38 49 6e 74 50 74 72  Ptr[] Utf8IntPtr
1edf0 41 72 72 61 79 46 72 6f 6d 53 74 72 69 6e 67 41  ArrayFromStringA
1ee00 72 72 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20  rray(..         
1ee10 20 20 20 73 74 72 69 6e 67 5b 5d 20 76 61 6c 75     string[] valu
1ee20 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
1ee30 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1ee40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
1ee50 6c 75 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  lues == null).. 
1ee60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1ee70 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
1ee80 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1ee90 72 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  r[] result = new
1eea0 20 49 6e 74 50 74 72 5b 76 61 6c 75 65 73 2e 4c   IntPtr[values.L
1eeb0 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20  ength];....     
1eec0 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
1eed0 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78  index = 0; index
1eee0 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68   < result.Length
1eef0 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20  ; index++)..    
1ef00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
1ef10 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 55 74 66 38  lt[index] = Utf8
1ef20 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
1ef30 28 76 61 6c 75 65 73 5b 69 6e 64 65 78 5d 29 3b  (values[index]);
1ef40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ef50 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
1ef60 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1ef70 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
1ef80 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
1ef90 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
1efa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1efe0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
1eff0 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 79 74  region SQLiteByt
1f000 65 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d  es Static Class.
1f010 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1f020 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
1f030 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20   class contains 
1f040 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74  static methods t
1f050 68 61 74 20 61 72 65 20 75 73 65 64 20 74 6f 20  hat are used to 
1f060 64 65 61 6c 20 77 69 74 68 20 6e 61 74 69 76 65  deal with native
1f070 0d 0a 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65  ..    /// pointe
1f080 72 73 20 74 6f 20 6d 65 6d 6f 72 79 20 62 6c 6f  rs to memory blo
1f090 63 6b 73 20 74 68 61 74 20 6c 6f 67 69 63 61 6c  cks that logical
1f0a0 6c 79 20 63 6f 6e 74 61 69 6e 20 61 72 72 61 79  ly contain array
1f0b0 73 20 6f 66 20 62 79 74 65 73 20 74 6f 20 62 65  s of bytes to be
1f0c0 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 64 20 77  ..    /// used w
1f0d0 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63  ith the SQLite c
1f0e0 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
1f0f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1f100 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1f110 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69  tatic class SQLi
1f120 74 65 42 79 74 65 73 0d 0a 20 20 20 20 7b 0d 0a  teBytes..    {..
1f130 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
1f140 42 79 74 65 20 41 72 72 61 79 20 48 65 6c 70 65  Byte Array Helpe
1f150 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
1f160 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1f170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
1f180 6e 76 65 72 74 73 20 61 20 6e 61 74 69 76 65 20  nverts a native 
1f190 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67  pointer to a log
1f1a0 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79  ical array of by
1f1b0 74 65 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  tes of the..    
1f1c0 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65      /// specifie
1f1d0 64 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20  d length into a 
1f1e0 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72  managed byte arr
1f1f0 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ay...        ///
1f200 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1f210 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f220 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a  name="pValue">..
1f230 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1f240 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1f250 6f 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  o the logical ar
1f260 72 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ray of bytes to 
1f270 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
1f280 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1f290 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1f2a0 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22  am name="length"
1f2b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f2c0 68 65 20 6c 65 6e 67 74 68 2c 20 69 6e 20 62 79  he length, in by
1f2d0 74 65 73 2c 20 6f 66 20 74 68 65 20 6c 6f 67 69  tes, of the logi
1f2e0 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79 74  cal array of byt
1f2f0 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  es to convert...
1f300 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1f310 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1f320 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1f330 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
1f340 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79 20  aged byte array 
1f350 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69  or null upon fai
1f360 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
1f370 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1f380 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1f390 61 74 69 63 20 62 79 74 65 5b 5d 20 46 72 6f 6d  atic byte[] From
1f3a0 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
1f3b0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c       IntPtr pVal
1f3c0 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
1f3d0 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20   int length..   
1f3e0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1f3f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1f400 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d     if (pValue ==
1f410 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1f420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1f430 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
1f440 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
1f450 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20  ength == 0)..   
1f460 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1f470 75 72 6e 20 6e 65 77 20 62 79 74 65 5b 30 5d 3b  urn new byte[0];
1f480 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f490 62 79 74 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20  byte[] result = 
1f4a0 6e 65 77 20 62 79 74 65 5b 6c 65 6e 67 74 68 5d  new byte[length]
1f4b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1f4c0 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 70 56   Marshal.Copy(pV
1f4d0 61 6c 75 65 2c 20 72 65 73 75 6c 74 2c 20 30 2c  alue, result, 0,
1f4e0 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20   length);....   
1f4f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1f500 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  result;..       
1f510 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1f520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f560 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1f570 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1f580 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
1f590 65 72 74 73 20 61 20 6d 61 6e 61 67 65 64 20 62  erts a managed b
1f5a0 79 74 65 20 61 72 72 61 79 20 69 6e 74 6f 20 61  yte array into a
1f5b0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1f5c0 74 6f 20 61 20 6c 6f 67 69 63 61 6c 0d 0a 20 20  to a logical..  
1f5d0 20 20 20 20 20 20 2f 2f 2f 20 61 72 72 61 79 20        /// array 
1f5e0 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20  of bytes...     
1f5f0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1f600 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1f610 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
1f620 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1f630 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62 79 74   The managed byt
1f640 65 20 61 72 72 61 79 20 74 6f 20 63 6f 6e 76 65  e array to conve
1f650 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
1f660 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1f670 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1f680 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f690 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1f6a0 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 62 79   to a logical by
1f6b0 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c  te array or null
1f6c0 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1f6d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1f6e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1f6f0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
1f700 74 50 74 72 20 54 6f 49 6e 74 50 74 72 28 0d 0a  tPtr ToIntPtr(..
1f710 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
1f720 5b 5d 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  [] value..      
1f730 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1f740 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1f750 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d  int length = 0;.
1f760 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
1f770 65 74 75 72 6e 20 54 6f 49 6e 74 50 74 72 28 76  eturn ToIntPtr(v
1f780 61 6c 75 65 2c 20 72 65 66 20 6c 65 6e 67 74 68  alue, ref length
1f790 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
1f7a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1f7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1f800 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1f810 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
1f820 61 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61  a managed byte a
1f830 72 72 61 79 20 69 6e 74 6f 20 61 20 6e 61 74 69  rray into a nati
1f840 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
1f850 6c 6f 67 69 63 61 6c 0d 0a 20 20 20 20 20 20 20  logical..       
1f860 20 2f 2f 2f 20 61 72 72 61 79 20 6f 66 20 62 79   /// array of by
1f870 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tes...        //
1f880 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1f890 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1f8a0 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
1f8b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1f8c0 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72  managed byte arr
1f8d0 61 79 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  ay to convert...
1f8e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1f8f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1f900 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
1f910 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20 20 20  ength">..       
1f920 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74 68 2c   /// The length,
1f930 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68   in bytes, of th
1f940 65 20 63 6f 6e 76 65 72 74 65 64 20 6c 6f 67 69  e converted logi
1f950 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79 74  cal array of byt
1f960 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
1f970 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1f980 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1f990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f9a0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1f9b0 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 62 79   to a logical by
1f9c0 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c  te array or null
1f9d0 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
1f9e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1f9f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1fa00 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
1fa10 74 50 74 72 20 54 6f 49 6e 74 50 74 72 28 0d 0a  tPtr ToIntPtr(..
1fa20 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
1fa30 5b 5d 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20  [] value,..     
1fa40 20 20 20 20 20 20 20 72 65 66 20 69 6e 74 20 6c         ref int l
1fa50 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20  ength..         
1fa60 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1fa70 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1fa80 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
1fa90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1faa0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
1fab0 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
1fac0 20 20 20 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c      length = val
1fad0 75 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20  ue.Length;....  
1fae0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65            if (le
1faf0 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20  ngth == 0)..    
1fb00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1fb10 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
1fb20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ...            I
1fb30 6e 74 50 74 72 20 72 65 73 75 6c 74 20 3d 20 53  ntPtr result = S
1fb40 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
1fb50 63 61 74 65 28 6c 65 6e 67 74 68 29 3b 0d 0a 0d  cate(length);...
1fb60 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1fb70 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74 50 74  (result == IntPt
1fb80 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1fb90 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1fba0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
1fbb0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
1fbc0 68 61 6c 2e 43 6f 70 79 28 76 61 6c 75 65 2c 20  hal.Copy(value, 
1fbd0 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74  0, result, lengt
1fbe0 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h);....         
1fbf0 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
1fc00 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
1fc10 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1fc20 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
1fc30 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1fc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1fc90 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
1fca0 4d 61 72 73 68 61 6c 20 53 74 61 74 69 63 20 43  Marshal Static C
1fcb0 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
1fcc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1fcd0 20 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e 74   This class cont
1fce0 61 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74 68  ains static meth
1fcf0 6f 64 73 20 74 68 61 74 20 61 72 65 20 75 73 65  ods that are use
1fd00 64 20 74 6f 20 70 65 72 66 6f 72 6d 20 73 65 76  d to perform sev
1fd10 65 72 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20 6c 6f  eral..    /// lo
1fd20 77 2d 6c 65 76 65 6c 20 64 61 74 61 20 6d 61 72  w-level data mar
1fd30 73 68 61 6c 6c 69 6e 67 20 74 61 73 6b 73 20 62  shalling tasks b
1fd40 65 74 77 65 65 6e 20 6e 61 74 69 76 65 20 61 6e  etween native an
1fd50 64 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d  d managed code..
1fd60 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1fd70 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
1fd80 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 53  l static class S
1fd90 51 4c 69 74 65 4d 61 72 73 68 61 6c 0d 0a 20 20  QLiteMarshal..  
1fda0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
1fdb0 67 69 6f 6e 20 49 6e 74 50 74 72 20 48 65 6c 70  gion IntPtr Help
1fdc0 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
1fdd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1fde0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
1fdf0 65 74 75 72 6e 73 20 61 20 6e 65 77 20 3c 73 65  eturns a new <se
1fe00 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
1fe10 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1fe20 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 0d  ce based on the.
1fe30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65  .        /// spe
1fe40 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
1fe50 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
1fe60 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 6e 64  ect instance and
1fe70 20 61 6e 20 69 6e 74 65 67 65 72 0d 0a 20 20 20   an integer..   
1fe80 20 20 20 20 20 2f 2f 2f 20 6f 66 66 73 65 74 2e       /// offset.
1fe90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1fea0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1feb0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1fec0 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
1fed0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1fee0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
1fef0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1ff00 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
1ff10 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
1ff20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
1ff30 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
1ff40 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1ff50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ff60 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
1ff70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1ff80 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
1ff90 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
1ffa0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 74  emory location t
1ffb0 68 61 74 20 74 68 65 20 6e 65 77 0d 0a 20 20 20  hat the new..   
1ffc0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1ffd0 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f  ef="IntPtr" /> o
1ffe0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 73  bject instance s
1fff0 68 6f 75 6c 64 20 70 6f 69 6e 74 20 74 6f 2e 0d  hould point to..
20000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20010 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20020 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
20030 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65        /// The ne
20040 77 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  w <see cref="Int
20050 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
20060 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
20070 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
20080 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
20090 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 49   static IntPtr I
200a0 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d  ntPtrForOffset(.
200b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
200c0 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
200d0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
200e0 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20  fset..          
200f0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
20100 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20110 72 6e 20 6e 65 77 20 49 6e 74 50 74 72 28 70 6f  rn new IntPtr(po
20120 69 6e 74 65 72 2e 54 6f 49 6e 74 36 34 28 29 20  inter.ToInt64() 
20130 2b 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20  + offset);..    
20140 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
20150 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
20160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20190 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
201a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
201b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
201c0 6f 75 6e 64 73 20 75 70 20 61 6e 20 69 6e 74 65  ounds up an inte
201d0 67 65 72 20 73 69 7a 65 20 74 6f 20 74 68 65 20  ger size to the 
201e0 6e 65 78 74 20 6d 75 6c 74 69 70 6c 65 20 6f 66  next multiple of
201f0 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 2e 0d   the alignment..
20200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
20210 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
20220 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
20230 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20  ="size">..      
20240 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20    /// The size, 
20250 69 6e 20 62 79 74 65 73 2c 20 74 6f 20 62 65 20  in bytes, to be 
20260 72 6f 75 6e 64 65 64 20 75 70 2e 0d 0a 20 20 20  rounded up...   
20270 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
20280 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20290 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 69 67  param name="alig
202a0 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  nment">..       
202b0 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 69 72 65   /// The require
202c0 64 20 61 6c 69 67 6e 6d 65 6e 74 20 66 6f 72 20  d alignment for 
202d0 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65  the return value
202e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
202f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
20300 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
20310 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
20320 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20  size, in bytes, 
20330 72 6f 75 6e 64 65 64 20 75 70 20 74 6f 20 74 68  rounded up to th
20340 65 20 6e 65 78 74 20 6d 75 6c 74 69 70 6c 65 20  e next multiple 
20350 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
20360 2f 2f 2f 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 20  /// alignment.  
20370 54 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20 65  This value may e
20380 6e 64 20 75 70 20 62 65 69 6e 67 20 74 68 65 20  nd up being the 
20390 73 61 6d 65 20 61 73 20 74 68 65 20 6f 72 69 67  same as the orig
203a0 69 6e 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  inal..        //
203b0 2f 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20  / size...       
203c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
203d0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
203e0 73 74 61 74 69 63 20 69 6e 74 20 52 6f 75 6e 64  static int Round
203f0 55 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Up(..           
20400 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20 20 20   int size,..    
20410 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c 69 67          int alig
20420 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
20430 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
20440 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
20450 20 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f   alignmentMinusO
20460 6e 65 20 3d 20 61 6c 69 67 6e 6d 65 6e 74 20 2d  ne = alignment -
20470 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   1;..           
20480 20 72 65 74 75 72 6e 20 28 28 73 69 7a 65 20 2b   return ((size +
20490 20 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f   alignmentMinusO
204a0 6e 65 29 20 26 20 7e 61 6c 69 67 6e 6d 65 6e 74  ne) & ~alignment
204b0 4d 69 6e 75 73 4f 6e 65 29 3b 0d 0a 20 20 20 20  MinusOne);..    
204c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
204d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
204e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
204f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20510 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
20520 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
20530 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
20540 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 6f 66  etermines the of
20550 66 73 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20  fset, in bytes, 
20560 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75  of the next stru
20570 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
20580 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
20590 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
205a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
205b0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
205c0 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73 65 74    /// The offset
205d0 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74  , in bytes, of t
205e0 68 65 20 63 75 72 72 65 6e 74 20 73 74 72 75 63  he current struc
205f0 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  ture member...  
20600 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
20610 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
20620 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a  <param name="siz
20630 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
20640 20 54 68 65 20 73 69 7a 65 2c 20 69 6e 20 62 79   The size, in by
20650 74 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72  tes, of the curr
20660 65 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ent structure me
20670 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
20680 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
20690 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
206a0 6e 61 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22  name="alignment"
206b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
206c0 68 65 20 61 6c 69 67 6e 6d 65 6e 74 2c 20 69 6e  he alignment, in
206d0 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e   bytes, of the n
206e0 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ext structure me
206f0 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
20700 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
20710 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
20720 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
20730 54 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62  The offset, in b
20740 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e 65 78  ytes, of the nex
20750 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62  t structure memb
20760 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
20770 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
20780 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
20790 69 63 20 69 6e 74 20 4e 65 78 74 4f 66 66 73 65  ic int NextOffse
207a0 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
207b0 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
207c0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
207d0 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ize,..          
207e0 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d    int alignment.
207f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
20800 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
20810 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 52 6f         return Ro
20820 75 6e 64 55 70 28 6f 66 66 73 65 74 20 2b 20 73  undUp(offset + s
20830 69 7a 65 2c 20 61 6c 69 67 6e 6d 65 6e 74 29 3b  ize, alignment);
20840 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
20850 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
20860 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
20870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
208c0 65 67 69 6f 6e 20 4d 61 72 73 68 61 6c 20 52 65  egion Marshal Re
208d0 61 64 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ad Helper Method
208e0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
208f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20900 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73    /// Reads a <s
20910 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
20920 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68  /> value from th
20930 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
20940 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
20950 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
20960 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
20970 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20980 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
20990 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
209a0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
209b0 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
209c0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
209d0 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
209e0 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
209f0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
20a00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20a10 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
20a20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
20a30 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
20a40 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
20a50 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
20a60 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
20a70 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68  ocation where th
20a80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
20a90 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22  see cref="Int32"
20aa0 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20   /> value to be 
20ab0 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e  read is located.
20ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20ad0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
20ae0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
20af0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
20b00 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22  see cref="Int32"
20b10 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65   /> value at the
20b20 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
20b30 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
20b40 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
20b50 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
20b60 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 52  lic static int R
20b70 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20 20  eadInt32(..     
20b80 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
20b90 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
20ba0 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a      int offset..
20bb0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
20bc0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
20bd0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20be0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
20bf0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
20c00 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70  shal.ReadInt32(p
20c10 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b  ointer, offset);
20c20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
20c30 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73       return Mars
20c40 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 49 6e  hal.ReadInt32(In
20c50 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
20c60 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b  inter, offset));
20c70 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
20c80 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
20c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cd0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
20ce0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
20cf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61  .        /// Rea
20d00 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ds a <see cref="
20d10 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20  Int64" /> value 
20d20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69  from the specifi
20d30 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
20d40 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
20d50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20d60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20d70 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20d80 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
20d90 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
20da0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
20db0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
20dc0 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
20dd0 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
20de0 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
20df0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
20e00 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
20e10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
20e20 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
20e30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20e40 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
20e50 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
20e60 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
20e70 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
20e80 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
20e90 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
20ea0 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c   to be read is l
20eb0 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
20ec0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
20ed0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
20ee0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
20ef0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
20f00 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
20f10 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65   at the specifie
20f20 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  d memory locatio
20f30 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
20f40 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
20f50 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
20f60 63 20 6c 6f 6e 67 20 52 65 61 64 49 6e 74 36 34  c long ReadInt64
20f70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
20f80 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
20f90 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
20fa0 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
20fb0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
20fc0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20fd0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
20ff0 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
21000 64 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c 20  dInt64(pointer, 
21010 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d  offset);..#else.
21020 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
21030 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
21040 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f  Int64(IntPtrForO
21050 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
21060 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66  ffset));..#endif
21070 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
21080 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
21090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
210d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
210e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
210f0 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65   /// Reads a <se
21100 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20  e cref="Double" 
21110 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68  /> value from th
21120 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
21130 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
21140 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
21150 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
21160 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
21170 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
21180 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
21190 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
211a0 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
211b0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
211c0 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
211d0 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
211e0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
211f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21200 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21210 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21220 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
21230 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
21240 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
21250 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
21260 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68  ocation where th
21270 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
21280 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
21290 22 20 2f 3e 20 74 6f 20 62 65 20 72 65 61 64 20  " /> to be read 
212a0 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20  is located...   
212b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
212c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
212d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
212e0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
212f0 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
21300 76 61 6c 75 65 20 61 74 20 74 68 65 20 73 70 65  value at the spe
21310 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f  cified memory lo
21320 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
21330 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
21340 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
21350 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20 52 65  static double Re
21360 61 64 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  adDouble(..     
21370 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
21380 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
21390 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a      int offset..
213a0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
213b0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
213c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
213d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
213e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 42 69 74        return Bit
213f0 43 6f 6e 76 65 72 74 65 72 2e 49 6e 74 36 34 42  Converter.Int64B
21400 69 74 73 54 6f 44 6f 75 62 6c 65 28 4d 61 72 73  itsToDouble(Mars
21410 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d 0a  hal.ReadInt64(..
21420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21430 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
21440 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
21450 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 42 69         return Bi
21460 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f 44 6f 75  tConverter.ToDou
21470 62 6c 65 28 42 69 74 43 6f 6e 76 65 72 74 65 72  ble(BitConverter
21480 2e 47 65 74 42 79 74 65 73 28 0d 0a 20 20 20 20  .GetBytes(..    
21490 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
214a0 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49 6e  hal.ReadInt64(In
214b0 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
214c0 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 29  inter, offset)))
214d0 2c 20 30 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  , 0);..#endif.. 
214e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
214f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
21500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
21540 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
21550 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21560 2f 20 52 65 61 64 73 20 61 6e 20 3c 73 65 65 20  / Reads an <see 
21570 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
21580 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20   value from the 
21590 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
215a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
215b0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
215c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
215d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
215e0 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
215f0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
21600 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
21610 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
21620 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
21630 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
21640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
21650 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
21660 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
21670 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
21680 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
21690 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
216a0 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
216b0 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
216c0 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
216d0 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
216e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
216f0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
21700 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  /> value to be r
21710 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d  ead is located..
21720 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21730 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
21740 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
21750 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
21760 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
21770 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65   /> value at the
21780 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
21790 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
217a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
217b0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
217c0 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74  lic static IntPt
217d0 72 20 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20  r ReadIntPtr(.. 
217e0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
217f0 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
21800 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
21810 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
21820 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
21830 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21840 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21850 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
21860 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
21870 50 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  Ptr(pointer, off
21880 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  set);..#else..  
21890 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
218a0 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
218b0 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  Ptr(IntPtrForOff
218c0 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
218d0 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  set));..#endif..
218e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
218f0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
21900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
21910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
21960 69 6f 6e 20 4d 61 72 73 68 61 6c 20 57 72 69 74  ion Marshal Writ
21970 65 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  e Helper Methods
21980 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
21990 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
219a0 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c   /// Writes an <
219b0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22  see cref="Int32"
219c0 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65   /> value to the
219d0 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
219e0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
219f0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
21a00 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
21a10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
21a20 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
21a30 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
21a40 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
21a50 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
21a60 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
21a70 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
21a80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
21a90 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
21aa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21ab0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
21ac0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
21ad0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
21ae0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
21af0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
21b00 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
21b10 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
21b20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
21b30 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
21b40 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77  /> value to be w
21b50 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65  ritten is locate
21b60 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
21b70 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
21b80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
21b90 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
21ba0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
21bb0 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e   cref="Int32" />
21bc0 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e   value to write.
21bd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21be0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21bf0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
21c00 69 64 20 57 72 69 74 65 49 6e 74 33 32 28 0d 0a  id WriteInt32(..
21c10 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
21c20 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
21c30 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
21c40 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
21c50 20 20 69 6e 74 20 76 61 6c 75 65 0d 0a 20 20 20    int value..   
21c60 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
21c70 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
21c80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21c90 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
21ca0 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
21cb0 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20 6f  Int32(pointer, o
21cc0 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a  ffset, value);..
21cd0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
21ce0 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
21cf0 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f  Int32(IntPtrForO
21d00 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f  ffset(pointer, o
21d10 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d  ffset), value);.
21d20 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
21d30 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
21d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
21d90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
21da0 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74          /// Writ
21db0 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d  es an <see cref=
21dc0 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
21dd0 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
21de0 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
21df0 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
21e00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
21e10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21e20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21e30 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
21e40 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
21e50 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
21e60 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
21e70 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
21e80 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
21e90 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
21ea0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
21eb0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21ec0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21ed0 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
21ee0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21ef0 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
21f00 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
21f10 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
21f20 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
21f30 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
21f40 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20  Int64" /> value 
21f50 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73  to be written is
21f60 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20   located...     
21f70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21f80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21f90 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
21fa0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
21fb0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
21fc0 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  t64" /> value to
21fd0 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20   write...       
21fe0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
21ff0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
22000 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65 49  atic void WriteI
22010 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20  nt64(..         
22020 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
22030 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
22040 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  int offset,..   
22050 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 76 61           long va
22060 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
22070 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
22080 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22090 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
220a0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
220b0 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70 6f  al.WriteInt64(po
220c0 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76  inter, offset, v
220d0 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  alue);..#else.. 
220e0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
220f0 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 49 6e  al.WriteInt64(In
22100 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
22110 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20  inter, offset), 
22120 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
22130 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
22140 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
22150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
22190 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
221a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
221b0 2f 2f 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65  /// Writes a <se
221c0 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20  e cref="Double" 
221d0 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  /> value to the 
221e0 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
221f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
22200 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
22210 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
22220 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
22230 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
22240 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
22250 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
22260 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
22270 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
22280 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
22290 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
222a0 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
222b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
222c0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
222d0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
222e0 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
222f0 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
22300 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
22310 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
22320 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
22330 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
22340 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20  e cref="Double" 
22350 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77  /> value to be w
22360 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65  ritten is locate
22370 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
22380 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
22390 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
223a0 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
223b0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
223c0 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
223d0 3e 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65  > value to write
223e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
223f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
22400 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
22410 6f 69 64 20 57 72 69 74 65 44 6f 75 62 6c 65 28  oid WriteDouble(
22420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
22430 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20  tPtr pointer,.. 
22440 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
22450 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
22460 20 20 20 20 64 6f 75 62 6c 65 20 76 61 6c 75 65      double value
22470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
22480 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
22490 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
224a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
224b0 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
224c0 57 72 69 74 65 49 6e 74 36 34 28 70 6f 69 6e 74  WriteInt64(point
224d0 65 72 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  er, offset,..   
224e0 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74               Bit
224f0 43 6f 6e 76 65 72 74 65 72 2e 44 6f 75 62 6c 65  Converter.Double
22500 54 6f 49 6e 74 36 34 42 69 74 73 28 76 61 6c 75  ToInt64Bits(valu
22510 65 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  e));..#else..   
22520 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
22530 2e 57 72 69 74 65 49 6e 74 36 34 28 49 6e 74 50  .WriteInt64(IntP
22540 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
22550 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 0d 0a 20  ter, offset),.. 
22560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42                 B
22570 69 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f 49 6e  itConverter.ToIn
22580 74 36 34 28 42 69 74 43 6f 6e 76 65 72 74 65 72  t64(BitConverter
22590 2e 47 65 74 42 79 74 65 73 28 76 61 6c 75 65 29  .GetBytes(value)
225a0 2c 20 30 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  , 0));..#endif..
225b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
225c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
225d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
22610 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
22620 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
22630 2f 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65 65  // Writes a <see
22640 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
22650 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73  > value to the s
22660 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d  pecified memory.
22670 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63  .        /// loc
22680 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
22690 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
226a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
226b0 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72  am name="pointer
226c0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
226d0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
226e0 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
226f0 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73   instance repres
22700 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d  enting the base.
22710 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
22720 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
22730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
22740 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
22750 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66   <param name="of
22760 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
22770 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
22780 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
22790 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  base memory loca
227a0 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a  tion where the..
227b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
227c0 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
227d0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72  > value to be wr
227e0 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64  itten is located
227f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22800 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
22810 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22820 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
22830 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
22840 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
22850 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e   value to write.
22860 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
22870 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
22880 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
22890 69 64 20 57 72 69 74 65 49 6e 74 50 74 72 28 0d  id WriteIntPtr(.
228a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
228b0 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
228c0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
228d0 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
228e0 20 20 20 49 6e 74 50 74 72 20 76 61 6c 75 65 0d     IntPtr value.
228f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
22900 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
22910 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22920 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
22930 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57         Marshal.W
22940 72 69 74 65 49 6e 74 50 74 72 28 70 6f 69 6e 74  riteIntPtr(point
22950 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c 75  er, offset, valu
22960 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
22970 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
22980 57 72 69 74 65 49 6e 74 50 74 72 28 49 6e 74 50  WriteIntPtr(IntP
22990 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
229a0 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76 61  ter, offset), va
229b0 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  lue);..#endif.. 
229c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
229d0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
229e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
229f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
22a30 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
22a40 6f 6e 20 4f 62 6a 65 63 74 20 48 65 6c 70 65 72  on Object Helper
22a50 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
22a60 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
22a70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 6e  .        /// Gen
22a80 65 72 61 74 65 73 20 61 20 68 61 73 68 20 63 6f  erates a hash co
22a90 64 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65  de value for the
22aa0 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
22ab0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
22ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
22ad0 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
22ae0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
22af0 54 68 65 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  The object insta
22b00 6e 63 65 20 75 73 65 64 20 74 6f 20 63 61 6c 63  nce used to calc
22b10 75 6c 61 74 65 20 74 68 65 20 68 61 73 68 20 63  ulate the hash c
22b20 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
22b30 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
22b40 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
22b50 61 6d 65 3d 22 69 64 65 6e 74 69 74 79 22 3e 0d  ame="identity">.
22b60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
22b70 2d 7a 65 72 6f 20 69 66 20 64 69 66 66 65 72 65  -zero if differe
22b80 6e 74 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  nt object instan
22b90 63 65 73 20 77 69 74 68 20 74 68 65 20 73 61 6d  ces with the sam
22ba0 65 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 0d 0a  e value should..
22bb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 67 65 6e 65          /// gene
22bc0 72 61 74 65 20 64 69 66 66 65 72 65 6e 74 20 68  rate different h
22bd0 61 73 68 20 63 6f 64 65 73 2c 20 77 68 65 72 65  ash codes, where
22be0 20 61 70 70 6c 69 63 61 62 6c 65 2e 20 20 54 68   applicable.  Th
22bf0 69 73 20 70 61 72 61 6d 65 74 65 72 0d 0a 20 20  is parameter..  
22c00 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 6f        /// has no
22c10 20 65 66 66 65 63 74 20 6f 6e 20 74 68 65 20 2e   effect on the .
22c20 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
22c30 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20  ework...        
22c40 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22c50 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
22c60 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
22c70 20 54 68 65 20 68 61 73 68 20 63 6f 64 65 20 76   The hash code v
22c80 61 6c 75 65 20 2d 4f 52 2d 20 7a 65 72 6f 20 69  alue -OR- zero i
22c90 66 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73 20  f the object is 
22ca0 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
22cb0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
22cc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
22cd0 61 74 69 63 20 69 6e 74 20 47 65 74 48 61 73 68  atic int GetHash
22ce0 43 6f 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Code(..         
22cf0 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2c     object value,
22d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
22d10 6f 6c 20 69 64 65 6e 74 69 74 79 0d 0a 20 20 20  ol identity..   
22d20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
22d30 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
22d40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22d50 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
22d60 20 20 20 69 66 20 28 69 64 65 6e 74 69 74 79 29     if (identity)
22d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22d80 20 20 72 65 74 75 72 6e 20 52 75 6e 74 69 6d 65    return Runtime
22d90 48 65 6c 70 65 72 73 2e 47 65 74 48 61 73 68 43  Helpers.GetHashC
22da0 6f 64 65 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ode(value);..#en
22db0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
22dc0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
22dd0 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 30 3b 0d  null) return 0;.
22de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
22df0 75 72 6e 20 76 61 6c 75 65 2e 47 65 74 48 61 73  urn value.GetHas
22e00 68 43 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20  hCode();..      
22e10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
22e20 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
22e30 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
22e40 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
22e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e90 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
22ea0 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 42 61   SQLiteModule Ba
22eb0 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  se Class..    //
22ec0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
22ed0 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
22ee0 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61 6e  represents a man
22ef0 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  aged virtual tab
22f00 6c 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  le module implem
22f10 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f  entation...    /
22f20 2f 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65 61  // It is not sea
22f30 6c 65 64 20 61 6e 64 20 6d 75 73 74 20 62 65 20  led and must be 
22f40 75 73 65 64 20 61 73 20 74 68 65 20 62 61 73 65  used as the base
22f50 20 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 0d 0a   class for any..
22f60 20 20 20 20 2f 2f 2f 20 75 73 65 72 2d 64 65 66      /// user-def
22f70 69 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ined virtual tab
22f80 6c 65 20 6d 6f 64 75 6c 65 20 63 6c 61 73 73 65  le module classe
22f90 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e  s implemented in
22fa0 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a   managed code...
22fb0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
22fc0 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61  y>..    public a
22fd0 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51  bstract class SQ
22fe0 4c 69 74 65 4d 6f 64 75 6c 65 20 3a 0d 0a 20 20  LiteModule :..  
22ff0 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74            ISQLit
23000 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2c 20  eManagedModule, 
23010 2f 2a 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  /*ISQLiteNativeM
23020 6f 64 75 6c 65 2c 2a 2f 0d 0a 20 20 20 20 20 20  odule,*/..      
23030 20 20 20 20 20 20 49 44 69 73 70 6f 73 61 62 6c        IDisposabl
23040 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20  e /* NOT SEALED 
23050 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  */..    {..     
23060 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
23070 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 50 72  eNativeModule Pr
23080 69 76 61 74 65 20 43 6c 61 73 73 0d 0a 20 20 20  ivate Class..   
23090 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
230a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
230b0 54 68 69 73 20 63 6c 61 73 73 20 69 6d 70 6c 65  This class imple
230c0 6d 65 6e 74 73 20 74 68 65 20 3c 73 65 65 20 63  ments the <see c
230d0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
230e0 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20  veModule" />..  
230f0 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66        /// interf
23100 61 63 65 20 62 79 20 66 6f 72 77 61 72 64 69 6e  ace by forwardin
23110 67 20 74 68 6f 73 65 20 6d 65 74 68 6f 64 20 63  g those method c
23120 61 6c 6c 73 20 74 6f 20 74 68 65 0d 0a 20 20 20  alls to the..   
23130 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
23140 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
23150 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
23160 61 6e 63 65 20 69 74 20 63 6f 6e 74 61 69 6e 73  ance it contains
23170 2e 20 20 49 66 20 74 68 65 0d 0a 20 20 20 20 20  .  If the..     
23180 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 65 64     /// contained
23190 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
231a0 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
231b0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20  ect instance is 
231c0 6e 75 6c 6c 2c 20 61 6c 6c 0d 0a 20 20 20 20 20  null, all..     
231d0 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20     /// the <see 
231e0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
231f0 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6d 65  iveModule" /> me
23200 74 68 6f 64 73 20 73 69 6d 70 6c 79 20 67 65 6e  thods simply gen
23210 65 72 61 74 65 20 61 6e 0d 0a 20 20 20 20 20 20  erate an..      
23220 20 20 2f 2f 2f 20 65 72 72 6f 72 2e 0d 0a 20 20    /// error...  
23230 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
23240 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
23250 69 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61  ivate sealed cla
23260 73 73 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ss SQLiteNativeM
23270 6f 64 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20  odule :..       
23280 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65           ISQLite
23290 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 20 49 44  NativeModule, ID
232a0 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20  isposable..     
232b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
232c0 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
232d0 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
232e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
232f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
23300 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
23310 74 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 69  the value that i
23320 73 20 61 6c 77 61 79 73 20 75 73 65 64 20 66 6f  s always used fo
23330 72 20 74 68 65 20 22 6c 6f 67 45 72 72 6f 72 73  r the "logErrors
23340 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  "..            /
23350 2f 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  // parameter to 
23360 74 68 65 20 76 61 72 69 6f 75 73 20 73 74 61 74  the various stat
23370 69 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e  ic error handlin
23380 67 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64  g methods provid
23390 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
233a0 2f 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20  /// by the <see 
233b0 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
233c0 6c 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  le" /> class... 
233d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
233e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
233f0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
23400 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c  onst bool Defaul
23410 74 4c 6f 67 45 72 72 6f 72 73 20 3d 20 74 72 75  tLogErrors = tru
23420 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
23430 20 20 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
23480 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
23490 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
234a0 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
234b0 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 61 6c  value that is al
234c0 77 61 79 73 20 75 73 65 64 20 66 6f 72 20 74 68  ways used for th
234d0 65 20 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  e "logExceptions
234e0 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  "..            /
234f0 2f 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  // parameter to 
23500 74 68 65 20 76 61 72 69 6f 75 73 20 73 74 61 74  the various stat
23510 69 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e  ic error handlin
23520 67 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64  g methods provid
23530 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
23540 2f 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20  /// by the <see 
23550 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
23560 6c 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  le" /> class... 
23570 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23580 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
23590 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
235a0 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c  onst bool Defaul
235b0 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 20 3d  tLogExceptions =
235c0 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
235d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
235e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23610 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
23620 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
23630 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
23640 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
23650 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
23660 65 20 74 65 78 74 20 75 73 65 64 20 77 68 65 6e  e text used when
23670 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 64 0d 0a   the contained..
23680 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23690 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
236a0 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
236b0 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 6e  ct instance is n
236c0 6f 74 20 61 76 61 69 6c 61 62 6c 65 0d 0a 20 20  ot available..  
236d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 6f            /// fo
236e0 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a 20  r any reason... 
236f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23700 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
23710 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
23720 6f 6e 73 74 20 73 74 72 69 6e 67 20 4d 6f 64 75  onst string Modu
23730 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72  leNotAvailableEr
23740 72 6f 72 4d 65 73 73 61 67 65 20 3d 0d 0a 20 20  rorMessage =..  
23750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6e                "n
23760 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6d 70  ative module imp
23770 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6e 6f 74 20  lementation not 
23780 61 76 61 69 6c 61 62 6c 65 22 3b 0d 0a 20 20 20  available";..   
23790 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
237a0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
237b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
237c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
237d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
237e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
237f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
23800 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
23810 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
23820 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
23830 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
23840 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
23850 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
23860 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
23870 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20 70  stance used to p
23880 72 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20 20  rovide..        
23890 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65      /// an imple
238a0 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  mentation of the
238b0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
238c0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
238d0 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20   />..           
238e0 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e 0d   /// interface..
238f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23900 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
23910 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
23920 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f   SQLiteModule mo
23930 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  dule;..         
23940 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
23950 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
239b0 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43  #region Public C
239c0 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
239d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
239e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
239f0 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
23a00 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
23a10 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
23a20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23a30 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
23a40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23a50 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
23a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23a70 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
23a80 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
23a90 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
23aa0 65 20 75 73 65 64 20 74 6f 20 70 72 6f 76 69 64  e used to provid
23ab0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
23ac0 2f 2f 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61  // an implementa
23ad0 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65 65  tion of the <see
23ae0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
23af0 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a  tiveModule" />..
23b00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23b10 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20  interface...    
23b20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
23b30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
23b40 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 4e    public SQLiteN
23b50 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20  ativeModule(..  
23b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
23b70 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
23b80 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
23b90 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
23ba0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23bb0 20 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c 65       this.module
23bc0 20 3d 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20   = module;..    
23bd0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23be0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
23bf0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
23c00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
23c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c40 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23c50 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
23c60 61 74 65 20 53 74 61 74 69 63 20 4d 65 74 68 6f  ate Static Metho
23c70 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
23c80 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23c90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
23ca0 65 74 73 20 74 68 65 20 74 61 62 6c 65 20 65 72  ets the table er
23cb0 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 6f  ror message to o
23cc0 6e 65 20 74 68 61 74 20 69 6e 64 69 63 61 74 65  ne that indicate
23cd0 73 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  s the native..  
23ce0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f            /// mo
23cf0 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  dule implementat
23d00 69 6f 6e 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  ion is not avail
23d10 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  able...         
23d20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
23d30 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
23d40 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
23d50 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
23d60 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
23d70 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
23d80 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
23d90 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
23da0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
23db0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
23dc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
23dd0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
23de0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
23df0 75 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ue of <see cref=
23e00 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65  "SQLiteErrorCode
23e10 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20  .Error" />...   
23e20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
23e30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
23e40 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
23e50 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  tic SQLiteErrorC
23e60 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  ode ModuleNotAva
23e70 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
23e80 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
23e90 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
23ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23eb0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
23ec0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
23ed0 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72     SetTableError
23ee0 28 6e 75 6c 6c 2c 20 70 56 74 61 62 2c 20 44 65  (null, pVtab, De
23ef0 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d  faultLogErrors,.
23f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23f10 20 20 20 20 20 44 65 66 61 75 6c 74 4c 6f 67 45       DefaultLogE
23f20 78 63 65 70 74 69 6f 6e 73 2c 20 4d 6f 64 75 6c  xceptions, Modul
23f30 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72  eNotAvailableErr
23f40 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20  orMessage);.... 
23f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
23f60 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
23f70 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20  rCode.Error;..  
23f80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
23f90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
23fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
23fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23ff0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
24000 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74           /// Set
24010 73 20 74 68 65 20 74 61 62 6c 65 20 65 72 72 6f  s the table erro
24020 72 20 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e 65  r message to one
24030 20 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20   that indicates 
24040 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
24050 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75          /// modu
24060 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
24070 6e 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62  n is not availab
24080 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le...           
24090 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
240a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
240b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
240c0 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
240d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
240e0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
240f0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
24100 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 0d 0a  cursor derived..
24110 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24120 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
24130 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24140 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
24150 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
24160 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24170 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73   The value of <s
24180 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45  ee cref="SQLiteE
24190 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 20  rrorCode.Error" 
241a0 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  />...           
241b0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
241c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
241d0 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69  vate static SQLi
241e0 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75  teErrorCode Modu
241f0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
24200 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20  rsorError(..    
24210 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
24220 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
24230 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
24240 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
24250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
24260 74 43 75 72 73 6f 72 45 72 72 6f 72 28 6e 75 6c  tCursorError(nul
24270 6c 2c 20 70 43 75 72 73 6f 72 2c 20 44 65 66 61  l, pCursor, Defa
24280 75 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20  ultLogErrors,.. 
24290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242a0 20 20 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63     DefaultLogExc
242b0 65 70 74 69 6f 6e 73 2c 20 4d 6f 64 75 6c 65 4e  eptions, ModuleN
242c0 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72  otAvailableError
242d0 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20  Message);....   
242e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
242f0 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
24300 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20  ode.Error;..    
24310 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
24320 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
24330 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
24340 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
24350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24380 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
24390 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
243a0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20  iteNativeModule 
243b0 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
243c0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
243d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
243e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
243f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
24400 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
24410 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
24420 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24430 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
24440 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
24450 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a  am name="pDb">..
24460 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24470 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
24480 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
24490 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
244a0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
244b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
244c0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
244d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
244e0 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20  e="pAux">..     
244f0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
24500 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
24510 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
24520 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
24530 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
24540 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
24550 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24560 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
24570 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gc">..          
24580 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24590 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
245a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
245b0 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
245c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
245d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
245e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
245f0 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d  am name="argv">.
24600 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24610 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
24620 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
24630 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
24640 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
24650 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
24660 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
24670 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
24680 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
24690 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
246a0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
246b0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
246c0 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20  ule.xCreate" /> 
246d0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
246e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
246f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
24700 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
24710 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  pError">..      
24720 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
24730 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
24740 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
24750 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
24760 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
24770 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
24780 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24790 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
247a0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
247b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
247c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
247d0 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
247e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
247f0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
24800 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
24810 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
24820 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a  rCode xCreate(..
24830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24840 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
24850 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
24860 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
24870 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
24880 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
24890 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
248a0 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
248b0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
248c0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
248d0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
248e0 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20  r pError..      
248f0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
24900 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
24910 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
24920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24930 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
24940 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
24950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24960 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
24970 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
24980 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
24990 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
249a0 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
249b0 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
249c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
249d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
249e0 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51       pError = SQ
249f0 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
24a00 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
24a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24a20 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65            Module
24a30 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f  NotAvailableErro
24a40 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20  rMessage);....  
24a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a60 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
24a70 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d  rrorCode.Error;.
24a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24a90 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
24aa0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
24ab0 75 6c 65 2e 78 43 72 65 61 74 65 28 0d 0a 20 20  ule.xCreate(..  
24ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ad0 20 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67    pDb, pAux, arg
24ae0 63 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74  c, argv, ref pVt
24af0 61 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b  ab, ref pError);
24b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
24b10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
24b70 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
24b80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24b90 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
24ba0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
24bb0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
24bc0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
24bd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
24be0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24bf0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24c00 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20   name="pDb">..  
24c10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
24c20 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
24c30 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
24c40 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
24c50 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
24c60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24c70 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
24c80 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
24c90 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20  ="pAux">..      
24ca0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
24cb0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
24cc0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
24cd0 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
24ce0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
24cf0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
24d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24d10 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
24d20 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gc">..          
24d30 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
24d40 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
24d50 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
24d60 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
24d70 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24d80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
24d90 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
24da0 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
24db0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24dc0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
24dd0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
24de0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
24df0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
24e00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24e10 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
24e20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
24e30 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
24e40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
24e50 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
24e60 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
24e70 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
24e80 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
24e90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24ea0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
24eb0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
24ec0 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20  e="pError">..   
24ed0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
24ee0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
24ef0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
24f00 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e  ule.xConnect" />
24f10 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
24f20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
24f30 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
24f40 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
24f50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
24f60 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
24f70 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
24f80 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
24f90 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
24fa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
24fb0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
24fc0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
24fd0 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e  eErrorCode xConn
24fe0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
24ff0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
25000 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
25010 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d     IntPtr pAux,.
25020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25030 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
25040 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
25050 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
25060 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
25070 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
25080 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
25090 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a   IntPtr pError..
250a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
250c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
250d0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
250e0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
250f0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
25100 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
25110 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
25120 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
25130 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
25140 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
25150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25160 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
25170 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
25180 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
25190 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f             pErro
251a0 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  r = SQLiteString
251b0 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
251c0 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
251d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251e0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
251f0 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b  leErrorMessage);
25200 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25210 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
25220 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
25230 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rror;..         
25240 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
25250 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25260 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  rn module.xConne
25270 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
25280 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70 41           pDb, pA
25290 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20  ux, argc, argv, 
252a0 72 65 66 20 70 56 74 61 62 2c 20 72 65 66 20 70  ref pVtab, ref p
252b0 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  Error);..       
252c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
252d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
252e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25310 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
25320 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
25330 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
25340 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25350 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25360 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25370 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
25380 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25390 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
253a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
253b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
253c0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
253d0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
253e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
253f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25400 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  xBestIndex" /> m
25410 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25420 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
25430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25440 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
25450 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  Index">..       
25460 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25470 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25480 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25490 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  xBestIndex" /> m
254a0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
254b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
254c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
254d0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
254e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
254f0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
25500 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
25510 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20  ule.xBestIndex" 
25520 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
25530 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
25540 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
25550 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
25560 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74  eErrorCode xBest
25570 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
25580 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
25590 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
255a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
255b0 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
255c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
255d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
255e0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
255f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
25600 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
25610 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
25620 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
25630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25640 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
25650 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
25660 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
25670 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
25680 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
25690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
256a0 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
256b0 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
256c0 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
256d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
256e0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74  urn module.xBest
256f0 49 6e 64 65 78 28 70 56 74 61 62 2c 20 70 49 6e  Index(pVtab, pIn
25700 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dex);..         
25710 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
25720 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
25730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25760 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
25770 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
25780 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
25790 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
257a0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
257b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  NativeModule.xDi
257c0 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  sconnect" /> met
257d0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
257e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
257f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25800 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
25810 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
25820 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25830 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25840 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
25850 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  Disconnect" /> m
25860 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25870 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
25880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25890 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
258a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
258b0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
258c0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
258d0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22  ule.xDisconnect"
258e0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
258f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
25900 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
25910 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
25920 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73  teErrorCode xDis
25930 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
25940 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
25950 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
25960 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
25970 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25980 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
25990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
259a0 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
259b0 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
259c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
259d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
259e0 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
259f0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
25a00 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
25a10 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
25a20 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
25a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a40 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
25a50 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
25a60 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
25a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25a80 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 69  eturn module.xDi
25a90 73 63 6f 6e 6e 65 63 74 28 70 56 74 61 62 29 3b  sconnect(pVtab);
25aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
25ab0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
25b10 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
25b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25b30 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
25b40 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
25b50 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  eModule.xDestroy
25b60 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
25b70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
25b80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
25b90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
25ba0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
25bb0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25bc0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
25bd0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
25be0 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 22  Module.xDestroy"
25bf0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
25c00 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
25c10 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
25c20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
25c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25c40 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
25c50 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
25c60 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f  veModule.xDestro
25c70 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  y" /> method... 
25c80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25c90 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
25ca0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
25cb0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44  LiteErrorCode xD
25cc0 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
25cd0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
25ce0 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
25cf0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
25d00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
25d10 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
25d20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
25d30 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
25d40 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
25d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
25d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25d70 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
25d80 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
25d90 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
25da0 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
25db0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
25dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25dd0 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
25de0 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
25df0 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
25e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
25e10 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 65 73  turn module.xDes
25e20 74 72 6f 79 28 70 56 74 61 62 29 3b 0d 0a 20 20  troy(pVtab);..  
25e30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
25e40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
25e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
25e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25ea0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
25eb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
25ec0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
25ed0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
25ee0 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
25ef0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25f00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25f10 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25f20 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
25f30 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
25f40 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25f50 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25f60 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25f70 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  xOpen" /> method
25f80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25f90 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
25fa0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
25fb0 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
25fc0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
25fd0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25fe0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25ff0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
26000 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
26010 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26020 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
26030 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
26040 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
26050 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
26060 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
26070 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e  tiveModule.xOpen
26080 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
26090 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
260a0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
260b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
260c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70  iteErrorCode xOp
260d0 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en(..           
260e0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
260f0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
26100 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
26110 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
26120 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
26130 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
26140 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
26150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26160 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
26170 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
26180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26190 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
261a0 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
261b0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
261c0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
261d0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
261e0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
261f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26200 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
26210 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
26220 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
26230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
26240 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 4f 70  eturn module.xOp
26250 65 6e 28 70 56 74 61 62 2c 20 72 65 66 20 70 43  en(pVtab, ref pC
26260 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
26270 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
26280 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
26290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
262d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
262e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
262f0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
26300 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
26310 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
26320 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64  Close" /> method
26330 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26340 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
26350 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26360 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
26370 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
26380 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26390 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
263a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
263b0 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lose" /> method.
263c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
263d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
263e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
263f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
26400 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26410 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26420 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
26430 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lose" /> method.
26440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26450 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
26460 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
26470 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
26480 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20   xClose(..      
26490 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
264a0 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20   pCursor..      
264b0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
264c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
264d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
264e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
264f0 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
26500 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
26510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26520 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
26530 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
26540 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
26550 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
26560 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
26570 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
26580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26590 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
265a0 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f  otAvailableCurso
265b0 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b  rError(pCursor);
265c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
265d0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
265e0 65 2e 78 43 6c 6f 73 65 28 70 43 75 72 73 6f 72  e.xClose(pCursor
265f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
26600 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
26610 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26650 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
26660 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
26670 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26680 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26690 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
266a0 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
266b0 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
266c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
266d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
266e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
266f0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
26700 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26710 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26720 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26730 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
26740 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
26750 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26760 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
26770 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
26780 6e 61 6d 65 3d 22 69 64 78 4e 75 6d 22 3e 0d 0a  name="idxNum">..
26790 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
267a0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
267b0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
267c0 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20  Module.xFilter" 
267d0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
267e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
267f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
26800 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
26810 65 3d 22 69 64 78 53 74 72 22 3e 0d 0a 20 20 20  e="idxStr">..   
26820 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26830 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26840 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26850 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20  ule.xFilter" /> 
26860 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
26870 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
26880 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26890 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
268a0 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
268b0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
268c0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
268d0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
268e0 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
268f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
26900 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
26910 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
26920 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22  aram name="argv"
26930 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26940 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26950 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26960 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
26970 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
26980 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26990 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
269a0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
269b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
269c0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
269d0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
269e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
269f0 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
26a00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26a10 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
26a20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
26a30 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
26a40 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Filter(..       
26a50 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
26a60 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
26a70 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64            int id
26a80 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20  xNum,..         
26a90 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 64         IntPtr id
26aa0 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  xStr,..         
26ab0 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
26ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26ad0 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20    IntPtr argv.. 
26ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
26af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
26b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26b10 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
26b20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
26b30 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
26b40 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
26b50 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
26b60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
26b70 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
26b80 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
26b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
26ba0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
26bb0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26bc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
26bd0 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
26be0 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72  CursorError(pCur
26bf0 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sor);....       
26c00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26c10 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 28 70  module.xFilter(p
26c20 43 75 72 73 6f 72 2c 20 69 64 78 4e 75 6d 2c 20  Cursor, idxNum, 
26c30 69 64 78 53 74 72 2c 20 61 72 67 63 2c 20 61 72  idxStr, argc, ar
26c40 67 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  gv);..          
26c50 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
26c60 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
26c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ca0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
26cb0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
26cc0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
26cd0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
26ce0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
26cf0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78  ativeModule.xNex
26d00 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
26d10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26d20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
26d30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
26d40 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
26d50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26d60 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26d70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26d80 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22  iveModule.xNext"
26d90 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
26da0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
26db0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
26dc0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
26dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26de0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
26df0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
26e00 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20  veModule.xNext" 
26e10 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26e20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
26e30 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
26e40 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
26e50 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74  eErrorCode xNext
26e60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
26e70 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
26e80 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
26e90 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
26ea0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26eb0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
26ec0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
26ed0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
26ee0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
26ef0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
26f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26f10 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
26f20 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
26f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26f40 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
26f50 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
26f60 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
26f70 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
26f80 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28  ableCursorError(
26f90 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20  pCursor);....   
26fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26fb0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74  urn module.xNext
26fc0 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
26fd0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
26fe0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
26ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
27030 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27040 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27050 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
27060 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
27070 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
27080 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f  e.xEof" /> metho
27090 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
270a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
270b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
270c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
270d0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
270e0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
270f0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
27100 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
27110 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  Eof" /> method..
27120 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27130 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
27140 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
27150 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
27160 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27170 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27180 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f  NativeModule.xEo
27190 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  f" /> method... 
271a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
271b0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
271c0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
271d0 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20  t xEof(..       
271e0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
271f0 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
27200 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
27210 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
27220 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
27230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27240 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
27250 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
27260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27270 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27280 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
27290 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
272a0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
272b0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
272c0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
272d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
272e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272f0 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61      ModuleNotAva
27300 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
27310 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20  r(pCursor);..   
27320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27330 20 72 65 74 75 72 6e 20 31 3b 0d 0a 20 20 20 20   return 1;..    
27340 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
27350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27360 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
27370 45 6f 66 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20  Eof(pCursor);.. 
27380 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
27390 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
273a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
273e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
273f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
27400 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
27410 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
27420 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
27430 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
27440 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27450 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
27460 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
27470 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
27480 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
27490 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
274a0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
274b0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
274c0 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
274d0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
274e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
274f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
27500 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
27510 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20  "pContext">..   
27520 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
27530 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
27540 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
27550 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
27560 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
27570 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
27580 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27590 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
275a0 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  index">..       
275b0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
275c0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
275d0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
275e0 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68  xColumn" /> meth
275f0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27600 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27610 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27620 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
27630 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27640 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27650 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27660 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74  .xColumn" /> met
27670 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
27680 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
27690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
276a0 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
276b0 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20  Code xColumn(.. 
276c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
276d0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
276e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
276f0 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c  IntPtr pContext,
27700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27710 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20    int index..   
27720 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
27730 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
27740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27750 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
27760 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
27770 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
27780 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
27790 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
277a0 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
277b0 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
277c0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
277d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
277e0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
277f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27800 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
27810 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
27820 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f  rsorError(pCurso
27830 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
27840 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
27850 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 28 70 43 75  dule.xColumn(pCu
27860 72 73 6f 72 2c 20 70 43 6f 6e 74 65 78 74 2c 20  rsor, pContext, 
27870 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20  index);..       
27880 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27890 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
278a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
278e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
278f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
27900 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
27910 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
27920 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
27930 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64  RowId" /> method
27940 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27950 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
27960 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27970 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
27980 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
27990 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
279a0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
279b0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
279c0 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  owId" /> method.
279d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
279e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
279f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
27a00 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e  am name="rowId">
27a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27a20 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
27a30 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
27a40 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22  veModule.xRowId"
27a50 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
27a60 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
27a70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
27a80 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
27a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27aa0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
27ab0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
27ac0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22  veModule.xRowId"
27ad0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
27ae0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
27af0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
27b00 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
27b10 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77  teErrorCode xRow
27b20 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Id(..           
27b30 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
27b40 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  sor,..          
27b50 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
27b60 6f 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20  owId..          
27b70 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
27b80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27b90 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
27ba0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
27bb0 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
27bc0 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
27bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27bf0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
27c00 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
27c10 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
27c20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
27c30 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
27c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
27c50 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
27c60 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72  ailableCursorErr
27c70 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a  or(pCursor);....
27c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c90 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52  return module.xR
27ca0 6f 77 49 64 28 70 43 75 72 73 6f 72 2c 20 72 65  owId(pCursor, re
27cb0 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20 20 20  f rowId);..     
27cc0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
27cd0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
27ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
27d20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27d30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27d40 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27d50 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27d60 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27d70 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
27d80 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
27d90 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
27da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27db0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
27dc0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
27dd0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
27de0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
27df0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
27e00 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Update" /> metho
27e10 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27e20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27e30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
27e40 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
27e50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27e60 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
27e70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
27e80 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
27e90 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
27ea0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27eb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
27ec0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
27ed0 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20  name="argv">..  
27ee0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
27ef0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
27f00 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
27f10 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e  dule.xUpdate" />
27f20 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27f30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
27f40 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
27f50 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
27f60 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20  "rowId">..      
27f70 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27f80 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27f90 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27fa0 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
27fb0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
27fc0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
27fd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27fe0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
27ff0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28000 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28010 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28020 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
28030 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28040 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
28050 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
28060 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
28070 72 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a  rCode xUpdate(..
28080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28090 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
280a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
280b0 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
280c0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
280d0 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
280e0 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
280f0 20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20 20 20   rowId..        
28100 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
28110 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28120 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
28130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28140 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
28150 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
28160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28170 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
28180 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
28190 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
281a0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
281b0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
281c0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
281d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
281e0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
281f0 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
28200 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
28210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28220 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 55 70  eturn module.xUp
28230 64 61 74 65 28 70 56 74 61 62 2c 20 61 72 67 63  date(pVtab, argc
28240 2c 20 61 72 67 76 2c 20 72 65 66 20 72 6f 77 49  , argv, ref rowI
28250 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d);..           
28260 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
28270 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
28280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
282c0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
282d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
282e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
282f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28300 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69  tiveModule.xBegi
28310 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
28320 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28330 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
28340 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28350 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
28360 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28370 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28380 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28390 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20  eModule.xBegin" 
283a0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
283b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
283c0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
283d0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
283e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
283f0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28400 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28410 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20  eModule.xBegin" 
28420 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
28430 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
28440 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
28450 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
28460 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69  eErrorCode xBegi
28470 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
28480 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
28490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
284a0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
284b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
284c0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
284d0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
284e0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
284f0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
28500 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
28510 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
28520 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
28530 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
28540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28550 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
28560 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
28570 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
28580 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
28590 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56  bleTableError(pV
285a0 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
285b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
285c0 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 28 70 56  module.xBegin(pV
285d0 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
285e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
285f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
28600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28630 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
28640 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
28650 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
28660 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
28670 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
28680 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79  NativeModule.xSy
28690 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  nc" /> method...
286a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
286b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
286c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
286d0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
286e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
286f0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
28700 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
28710 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20  veModule.xSync" 
28720 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
28730 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
28740 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
28750 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
28760 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28770 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28780 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28790 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f  eModule.xSync" /
287a0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
287b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
287c0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
287d0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
287e0 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28  ErrorCode xSync(
287f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28800 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
28810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28820 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
28830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28840 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28850 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
28860 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
28870 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
28880 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
28890 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
288a0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
288b0 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
288c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
288d0 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
288e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
288f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
28900 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
28910 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
28920 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
28930 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
28940 64 75 6c 65 2e 78 53 79 6e 63 28 70 56 74 61 62  dule.xSync(pVtab
28950 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
28960 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28970 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
289c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
289d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
289e0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
289f0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28a00 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  iveModule.xCommi
28a10 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
28a20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28a30 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
28a40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28a50 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
28a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28a70 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28a80 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28a90 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22  eModule.xCommit"
28aa0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28ab0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
28ac0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
28ad0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
28ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28af0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
28b00 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
28b10 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  veModule.xCommit
28b20 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
28b30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28b40 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28b50 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
28b60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
28b70 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20  mmit(..         
28b80 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
28b90 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
28ba0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
28bb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28bc0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
28bd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
28be0 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
28bf0 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
28c00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
28c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
28c30 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
28c40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28c50 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
28c60 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
28c70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
28c80 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
28c90 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
28ca0 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
28cb0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
28cc0 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  rn module.xCommi
28cd0 74 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  t(pVtab);..     
28ce0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
28cf0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
28d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
28d40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28d50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28d60 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28d70 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28d80 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28d90 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d  .xRollback" /> m
28da0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28db0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
28dc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
28dd0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28de0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
28df0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28e00 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28e10 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28e20 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d  .xRollback" /> m
28e30 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28e40 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
28e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28e60 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
28e70 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
28e80 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
28e90 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
28ea0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f  ule.xRollback" /
28eb0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28ec0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
28ed0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
28ee0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
28ef0 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
28f00 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
28f10 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
28f20 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
28f30 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
28f40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28f50 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
28f60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
28f70 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
28f80 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
28f90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
28fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28fb0 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
28fc0 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
28fd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
28fe0 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
28ff0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
29000 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
29010 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
29020 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
29030 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
29040 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
29050 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  n module.xRollba
29060 63 6b 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  ck(pVtab);..    
29070 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29080 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
29090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
290d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
290e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
290f0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
29100 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29110 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29120 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
29130 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
29140 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
29150 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
29160 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
29170 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
29180 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
29190 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
291a0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
291b0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
291c0 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
291d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
291e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
291f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
29200 6d 20 6e 61 6d 65 3d 22 6e 41 72 67 22 3e 0d 0a  m name="nArg">..
29210 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29220 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
29230 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
29240 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
29250 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
29260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29270 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
29280 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
29290 61 6d 20 6e 61 6d 65 3d 22 7a 4e 61 6d 65 22 3e  am name="zName">
292a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
292b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
292c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
292d0 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  veModule.xFindFu
292e0 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f  nction" /> metho
292f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29300 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29310 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
29320 61 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c 62  aram name="callb
29330 61 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ack">..         
29340 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
29350 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29360 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
29370 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
29380 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29390 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
293a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
293b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
293c0 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20  pClientData">.. 
293d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
293e0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
293f0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
29400 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
29410 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> 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 46 69  NativeModule.xFi
29490 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d  ndFunction" /> m
294a0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
294b0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
294c0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
294d0 70 75 62 6c 69 63 20 69 6e 74 20 78 46 69 6e 64  public int xFind
294e0 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  Function(..     
294f0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
29500 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
29510 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41            int nA
29520 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rg,..           
29530 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d       IntPtr zNam
29540 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
29550 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61      ref SQLiteCa
29560 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c  llback callback,
29570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29580 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 6c    ref IntPtr pCl
29590 69 65 6e 74 44 61 74 61 0d 0a 20 20 20 20 20 20  ientData..      
295a0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
295b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
295c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
295d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295e0 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
295f0 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
29600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29610 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
29620 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
29630 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
29640 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
29650 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
29660 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
29670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
29680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29690 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76       ModuleNotAv
296a0 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
296b0 72 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  r(pVtab);..     
296c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
296d0 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20  eturn 0;..      
296e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
296f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
29700 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 46 69  eturn module.xFi
29710 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
29720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29730 20 70 56 74 61 62 2c 20 6e 41 72 67 2c 20 7a 4e   pVtab, nArg, zN
29740 61 6d 65 2c 20 72 65 66 20 63 61 6c 6c 62 61 63  ame, ref callbac
29750 6b 2c 20 72 65 66 20 70 43 6c 69 65 6e 74 44 61  k, ref pClientDa
29760 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ta);..          
29770 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
29780 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
297d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
297e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
297f0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
29800 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
29810 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e  ativeModule.xRen
29820 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ame" /> method..
29830 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29840 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
29850 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
29860 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
29870 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29880 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29890 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
298a0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
298b0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
298c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
298d0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
298e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
298f0 6e 61 6d 65 3d 22 7a 4e 65 77 22 3e 0d 0a 20 20  name="zNew">..  
29900 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
29910 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29920 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29930 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e  dule.xRename" />
29940 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29950 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
29960 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
29970 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
29980 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
29990 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
299a0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
299b0 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f  odule.xRename" /
299c0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
299d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
299e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
299f0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
29a00 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d  ErrorCode xRenam
29a10 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
29a20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
29a30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
29a40 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a     IntPtr zNew..
29a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
29a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29a80 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
29a90 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
29aa0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
29ab0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
29ac0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
29ad0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
29ae0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
29af0 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
29b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
29b10 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
29b20 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
29b30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
29b40 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
29b50 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
29b60 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
29b70 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
29b80 64 75 6c 65 2e 78 52 65 6e 61 6d 65 28 70 56 74  dule.xRename(pVt
29b90 61 62 2c 20 7a 4e 65 77 29 3b 0d 0a 20 20 20 20  ab, zNew);..    
29ba0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29bb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
29bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
29c00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29c10 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
29c20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
29c30 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29c40 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29c50 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e  e.xSavepoint" />
29c60 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29c70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
29c80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
29c90 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
29ca0 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
29cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29cc0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
29cd0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
29ce0 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f  le.xSavepoint" /
29cf0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
29d00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29d10 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
29d20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
29d30 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a  ="iSavepoint">..
29d40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29d50 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
29d60 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
29d70 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
29d80 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
29d90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29da0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29db0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
29dc0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
29dd0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
29de0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29df0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
29e00 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
29e10 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29e20 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
29e30 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
29e40 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
29e50 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  e xSavepoint(.. 
29e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
29e70 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
29e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
29e90 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
29ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
29eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
29ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ed0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
29ee0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
29ef0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
29f00 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
29f10 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29f20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
29f30 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
29f40 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
29f50 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
29f60 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
29f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29f80 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
29f90 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
29fa0 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
29fb0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
29fc0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
29fd0 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 28 70 56  le.xSavepoint(pV
29fe0 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29  tab, iSavepoint)
29ff0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2a000 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a050 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2a060 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2a070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a080 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2a090 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2a0a0 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  veModule.xReleas
2a0b0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
2a0c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a0d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2a0e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2a0f0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
2a100 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a110 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2a120 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2a130 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  eModule.xRelease
2a140 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2a150 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2a160 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2a170 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2a180 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22  ame="iSavepoint"
2a190 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a1a0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2a1b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2a1c0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
2a1d0 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  se" /> method...
2a1e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a1f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2a200 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2a210 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2a220 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2a230 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2a240 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c  ativeModule.xRel
2a250 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ease" /> method.
2a260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a270 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2a280 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2a290 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2a2a0 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20   xRelease(..    
2a2b0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2a2c0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
2a2d0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
2a2e0 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20  Savepoint..     
2a2f0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2a300 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a310 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2a320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a330 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
2a340 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
2a350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a360 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2a370 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2a380 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
2a390 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
2a3a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2a3b0 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2a3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a3d0 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
2a3e0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
2a3f0 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
2a400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a410 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
2a420 78 52 65 6c 65 61 73 65 28 70 56 74 61 62 2c 20  xRelease(pVtab, 
2a430 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20  iSavepoint);..  
2a440 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2a450 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2a460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a4b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2a4c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2a4d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2a4e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2a4f0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22  ule.xRollbackTo"
2a500 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2a510 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2a520 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2a530 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2a540 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
2a550 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2a560 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2a570 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2a580 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
2a590 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  o" /> method... 
2a5a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a5b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2a5c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2a5d0 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74  name="iSavepoint
2a5e0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2a5f0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2a600 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2a610 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
2a620 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f  backTo" /> metho
2a630 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2a640 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2a650 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
2a660 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2a670 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2a680 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2a690 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2a6a0 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20  xRollbackTo" /> 
2a6b0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2a6c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2a6d0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2a6e0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
2a6f0 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
2a700 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20  kTo(..          
2a710 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2a720 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
2a730 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
2a740 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
2a750 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2a760 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a770 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2a780 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
2a790 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
2a7a0 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
2a7b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2a7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a7d0 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
2a7e0 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
2a7f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a800 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
2a810 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2a820 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2a830 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
2a840 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
2a850 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
2a860 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a870 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  rn module.xRollb
2a880 61 63 6b 54 6f 28 70 56 74 61 62 2c 20 69 53 61  ackTo(pVtab, iSa
2a890 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20  vepoint);..     
2a8a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a8b0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2a8c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a910 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2a920 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
2a930 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
2a940 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a950 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2a960 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f         /// Dispo
2a970 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  ses of this obje
2a980 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2a990 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2a9a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a9b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
2a9c0 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
2a9d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a9e0 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
2a9f0 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
2aa00 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53              GC.S
2aa10 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
2aa20 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  this);..        
2aa30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2aa40 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2aa50 0a 20 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aaa0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2aab0 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61  #region IDisposa
2aac0 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65  ble "Pattern" Me
2aad0 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20  mbers..         
2aae0 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
2aaf0 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20  disposed;..     
2ab00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2ab10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2ab20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20    /// Throws an 
2ab30 3c 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65 63  <see cref="Objec
2ab40 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
2ab50 6f 6e 22 20 2f 3e 20 69 66 20 74 68 69 73 20 6f  on" /> if this o
2ab60 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 20  bject..         
2ab70 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20     /// instance 
2ab80 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65  has been dispose
2ab90 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2aba0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2abb0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2abc0 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
2abd0 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
2abe0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
2abf0 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f    {..#if THROW_O
2ac00 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20  N_DISPOSED..    
2ac10 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2ac20 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
2ac30 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2ac40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac50 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65    throw new Obje
2ac60 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
2ac70 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
2ac80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
2ac90 70 65 6f 66 28 53 51 4c 69 74 65 4e 61 74 69 76  peof(SQLiteNativ
2aca0 65 4d 6f 64 75 6c 65 29 2e 4e 61 6d 65 29 3b 0d  eModule).Name);.
2acb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2acc0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
2acd0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2ace0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2ad30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ad40 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ad50 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f         /// Dispo
2ad60 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  ses of this obje
2ad70 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2ad80 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2ad90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2ada0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2adb0 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67   name="disposing
2adc0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2add0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
2ade0 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62  this method is b
2adf0 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d  eing called from
2ae00 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
2ae10 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
2ae20 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d  "Dispose()" /> m
2ae30 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20  ethod.  Zero if 
2ae40 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62  this method is b
2ae50 65 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  eing..          
2ae60 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20 66 72 6f    /// called fro
2ae70 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e  m the finalizer.
2ae80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ae90 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2aea0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2aeb0 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69 72  /* protected vir
2aec0 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73  tual */ void Dis
2aed0 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
2aee0 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
2aef0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2af00 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
2af10 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
2af20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2af30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66              //if
2af40 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20   (disposing)..  
2af50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af60 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20    //{..         
2af70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2af80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afa0 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
2afb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2afc0 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61   // dispose mana
2afd0 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
2afe0 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
2aff0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2b000 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b020 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
2b030 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a             //}..
2b040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b050 20 20 20 20 20 20 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 0d 0a 20 20  ////////////..  
2b080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b090 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d    // release unm
2b0a0 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
2b0b0 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
2b0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b100 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2b110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b120 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
2b130 20 6d 6f 64 75 6c 65 20 69 73 20 6e 6f 74 20 6f   module is not o
2b140 77 6e 65 64 20 62 79 20 75 73 3b 20 74 68 65 72  wned by us; ther
2b150 65 66 6f 72 65 2c 20 64 6f 20 6e 6f 74 0d 0a 20  efore, do not.. 
2b160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b170 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69 73 70     //       disp
2b180 6f 73 65 20 69 74 2e 0d 0a 20 20 20 20 20 20 20  ose it...       
2b190 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2b1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b1b0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2b1c0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2b1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b1e0 20 20 6d 6f 64 75 6c 65 20 3d 20 6e 75 6c 6c 3b    module = null;
2b1f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2b200 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64          disposed
2b210 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
2b220 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2b230 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2b240 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2b250 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
2b260 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2b2b0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73       #region Des
2b2c0 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20  tructor..       
2b2d0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2b2e0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2b2f0 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68  /// Finalizes th
2b300 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
2b310 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce...           
2b320 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2b330 0a 20 20 20 20 20 20 20 20 20 20 20 20 7e 53 51  .            ~SQ
2b340 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2b350 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
2b360 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2b370 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
2b380 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2b390 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
2b3a0 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20  endregion..     
2b3b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
2b3c0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2b3d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2b420 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2b430 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
2b440 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2b450 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b460 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74   /// The default
2b470 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
2b480 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d  native sqlite3_m
2b490 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
2b4a0 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20  in use...       
2b4b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2b4c0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2b4d0 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
2b4e0 20 69 6e 74 20 44 65 66 61 75 6c 74 4d 6f 64 75   int DefaultModu
2b4f0 6c 65 56 65 72 73 69 6f 6e 20 3d 20 32 3b 0d 0a  leVersion = 2;..
2b500 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2b510 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
2b520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b560 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2b570 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
2b580 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   Data..        /
2b590 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2b5a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66        /// This f
2b5b0 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20  ield is used to 
2b5c0 73 74 6f 72 65 20 74 68 65 20 6e 61 74 69 76 65  store the native
2b5d0 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
2b5e0 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20  structure..     
2b5f0 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65     /// associate
2b600 64 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65  d with this obje
2b610 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2b620 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2b630 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
2b640 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69  ivate UnsafeNati
2b650 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2b660 33 5f 6d 6f 64 75 6c 65 20 6e 61 74 69 76 65 4d  3_module nativeM
2b670 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  odule;....      
2b680 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b6d0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2b6e0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2b6f0 54 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73  This field is us
2b700 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20  ed to store the 
2b710 64 65 73 74 72 75 63 74 6f 72 20 64 65 6c 65 67  destructor deleg
2b720 61 74 65 20 74 6f 20 62 65 20 70 61 73 73 65 64  ate to be passed
2b730 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
2b740 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
2b750 20 6c 69 62 72 61 72 79 20 76 69 61 20 74 68 65   library via the
2b760 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
2b770 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2b780 65 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e()..        ///
2b790 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
2b7a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b7b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
2b7c0 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ate UnsafeNative
2b7d0 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79  Methods.xDestroy
2b7e0 4d 6f 64 75 6c 65 20 64 65 73 74 72 6f 79 4d 6f  Module destroyMo
2b7f0 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  dule;....       
2b800 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b840 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2b850 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2b860 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2b870 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65  his field is use
2b880 64 20 74 6f 20 73 74 6f 72 65 20 61 20 70 6f 69  d to store a poi
2b890 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69  nter to the nati
2b8a0 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ve sqlite3_modul
2b8b0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
2b8c0 74 72 75 63 74 75 72 65 20 72 65 74 75 72 6e 65  tructure returne
2b8d0 64 20 62 79 20 74 68 65 20 73 71 6c 69 74 65 33  d by the sqlite3
2b8e0 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2b8f0 6c 65 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  le_module..     
2b900 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
2b910 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2b920 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2b930 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72    private IntPtr
2b940 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c   disposableModul
2b950 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e;....        //
2b960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
2b9b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2b9c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2b9d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2b9e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
2b9f0 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f  field is used to
2ba00 20 68 6f 6c 64 20 74 68 65 20 62 6c 6f 63 6b 20   hold the block 
2ba10 6f 66 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79  of native memory
2ba20 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0d 0a   that contains..
2ba30 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
2ba40 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d  native sqlite3_m
2ba50 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
2ba60 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
2ba70 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20  this object..   
2ba80 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
2ba90 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  e when running o
2baa0 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61  n the .NET Compa
2bab0 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20  ct Framework... 
2bac0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2bad0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2bae0 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 70 4e  rivate IntPtr pN
2baf0 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 23 65  ativeModule;..#e
2bb00 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
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 2f 2f  ////////////////
2bb50 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2bb60 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2bb70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2bb80 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64  is field is used
2bb90 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69   to store the vi
2bba0 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6e 73 74  rtual table inst
2bbb0 61 6e 63 65 73 20 61 73 73 6f 63 69 61 74 65 64  ances associated
2bbc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
2bbd0 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20  th this module. 
2bbe0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
2bbf0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
2bc00 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d  e3_vtab derived.
2bc10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
2bc20 75 63 74 75 72 65 20 69 73 20 75 73 65 64 20 74  ucture is used t
2bc30 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69 73 20  o key into this 
2bc40 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  collection...   
2bc50 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2bc60 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2bc70 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c  vate Dictionary<
2bc80 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69  IntPtr, SQLiteVi
2bc90 72 74 75 61 6c 54 61 62 6c 65 3e 20 74 61 62 6c  rtualTable> tabl
2bca0 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  es;....        /
2bcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bcf0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2bd00 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2bd10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
2bd20 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20  s field is used 
2bd30 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69 72  to store the vir
2bd40 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
2bd50 72 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20  r instances..   
2bd60 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61       /// associa
2bd70 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f  ted with this mo
2bd80 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 74 69 76  dule.  The nativ
2bd90 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
2bda0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
2bdb0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
2bdc0 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
2bdd0 75 72 65 20 69 73 20 75 73 65 64 20 74 6f 20 6b  ure is used to k
2bde0 65 79 20 69 6e 74 6f 20 74 68 69 73 0d 0a 20 20  ey into this..  
2bdf0 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 6c 65 63        /// collec
2be00 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
2be10 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2be20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44         private D
2be30 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72  ictionary<IntPtr
2be40 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  , SQLiteVirtualT
2be50 61 62 6c 65 43 75 72 73 6f 72 3e 20 63 75 72 73  ableCursor> curs
2be60 6f 72 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ors;....        
2be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2beb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2bec0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2bed0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2bee0 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64  is field is used
2bef0 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69   to store the vi
2bf00 72 74 75 61 6c 20 74 61 62 6c 65 20 66 75 6e 63  rtual table func
2bf10 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 73 0d 0a  tion instances..
2bf20 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f          /// asso
2bf30 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
2bf40 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 63 61   module.  The ca
2bf50 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 66  se-insensitive f
2bf60 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 0d 0a 20 20  unction name..  
2bf70 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74 68        /// and th
2bf80 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75  e number of argu
2bf90 6d 65 6e 74 73 20 28 77 69 74 68 20 2d 31 20 6d  ments (with -1 m
2bfa0 65 61 6e 69 6e 67 20 22 61 6e 79 22 29 20 61 72  eaning "any") ar
2bfb0 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 20  e used to..     
2bfc0 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 75 63 74     /// construct
2bfd0 20 74 68 65 20 73 74 72 69 6e 67 20 74 68 61 74   the string that
2bfe0 20 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20   is used to key 
2bff0 69 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63  into this collec
2c000 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
2c010 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2c020 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44         private D
2c030 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
2c040 2c 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e  , SQLiteFunction
2c050 3e 20 66 75 6e 63 74 69 6f 6e 73 3b 0d 0a 20 20  > functions;..  
2c060 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2c070 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2c080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0c0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2c0d0 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f  region Public Co
2c0e0 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
2c0f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2c100 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
2c110 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
2c120 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
2c130 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
2c140 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2c150 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2c160 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
2c170 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
2c180 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c  ame of the modul
2c190 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74  e.  This paramet
2c1a0 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c  er cannot be nul
2c1b0 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  l...        /// 
2c1c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2c1d0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 4d    public SQLiteM
2c1e0 6f 64 75 6c 65 28 73 74 72 69 6e 67 20 6e 61 6d  odule(string nam
2c1f0 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  e)..        {.. 
2c200 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
2c210 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
2c220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2c230 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
2c240 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 6e  NullException("n
2c250 61 6d 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ame");....      
2c260 20 20 20 20 20 20 74 68 69 73 2e 6e 61 6d 65 20        this.name 
2c270 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  = name;..       
2c280 20 20 20 20 20 74 68 69 73 2e 74 61 62 6c 65 73       this.tables
2c290 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72   = new Dictionar
2c2a0 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65  y<IntPtr, SQLite
2c2b0 56 69 72 74 75 61 6c 54 61 62 6c 65 3e 28 29 3b  VirtualTable>();
2c2c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2c2d0 69 73 2e 63 75 72 73 6f 72 73 20 3d 20 6e 65 77  is.cursors = new
2c2e0 20 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50   Dictionary<IntP
2c2f0 74 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61  tr, SQLiteVirtua
2c300 6c 54 61 62 6c 65 43 75 72 73 6f 72 3e 28 29 3b  lTableCursor>();
2c310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2c320 69 73 2e 66 75 6e 63 74 69 6f 6e 73 20 3d 20 6e  is.functions = n
2c330 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
2c340 72 69 6e 67 2c 20 53 51 4c 69 74 65 46 75 6e 63  ring, SQLiteFunc
2c350 74 69 6f 6e 3e 28 29 3b 0d 0a 20 20 20 20 20 20  tion>();..      
2c360 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2c370 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2c380 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2c390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2c3d0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
2c3e0 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d 0a  ternal Methods..
2c3f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2c400 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2c410 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61 74  // Calls the nat
2c420 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  ive SQLite core 
2c430 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65 72  library in order
2c440 20 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77   to create a new
2c450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 69  ..        /// di
2c460 73 70 6f 73 61 62 6c 65 20 6d 6f 64 75 6c 65 20  sposable module 
2c470 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69  containing the i
2c480 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
2c490 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
2c4a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2c4b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2c4c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2c4d0 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20  me="pDb">..     
2c4e0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2c4f0 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
2c500 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 74 6f  ction pointer to
2c510 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
2c520 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2c530 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2c540 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2c550 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75  Non-zero upon su
2c560 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
2c570 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2c580 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
2c590 20 62 6f 6f 6c 20 43 72 65 61 74 65 44 69 73 70   bool CreateDisp
2c5a0 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 28 0d 0a 20  osableModule(.. 
2c5b0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2c5c0 72 20 70 44 62 0d 0a 20 20 20 20 20 20 20 20 20  r pDb..         
2c5d0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
2c5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2c5f0 28 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c  (disposableModul
2c600 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2c610 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2c620 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2c630 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ...            I
2c640 6e 74 50 74 72 20 70 4e 61 6d 65 20 3d 20 49 6e  ntPtr pName = In
2c650 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
2c660 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2c670 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2c680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4e                pN
2c690 61 6d 65 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ame = SQLiteStri
2c6a0 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
2c6b0 6d 53 74 72 69 6e 67 28 6e 61 6d 65 29 3b 0d 0a  mString(name);..
2c6c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c6d0 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
2c6e0 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2c6f0 64 75 6c 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c  dule nativeModul
2c700 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
2c710 20 20 20 20 20 20 20 20 20 41 6c 6c 6f 63 61 74           Allocat
2c720 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 29 3b  eNativeModule();
2c730 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c740 20 20 20 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c      destroyModul
2c750 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2c760 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73  tiveMethods.xDes
2c770 74 72 6f 79 4d 6f 64 75 6c 65 28 0d 0a 20 20 20  troyModule(..   
2c780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c790 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29   xDestroyModule)
2c7a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
2c7b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2c7c0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2c7d0 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d       disposableM
2c7e0 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20  odule =..       
2c7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
2c800 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2c810 2e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  .sqlite3_create_
2c820 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
2c830 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2c840 20 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c              pDb,
2c850 20 70 4e 61 6d 65 2c 20 72 65 66 20 6e 61 74 69   pName, ref nati
2c860 76 65 4d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72  veModule, IntPtr
2c870 2e 5a 65 72 6f 2c 20 64 65 73 74 72 6f 79 4d 6f  .Zero, destroyMo
2c880 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  dule);....      
2c890 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2c8a0 20 28 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75   (disposableModu
2c8b0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
2c8c0 6f 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  o);..#elif !SQLI
2c8d0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
2c8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
2c8f0 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d  posableModule =.
2c900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c910 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
2c920 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2c930 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
2c940 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f  le_module_intero
2c950 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p(..            
2c960 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20             pDb, 
2c970 70 4e 61 6d 65 2c 20 41 6c 6c 6f 63 61 74 65 4e  pName, AllocateN
2c980 61 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65 72  ativeModuleInter
2c990 6f 70 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  op(),..         
2c9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2c9b0 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65 72 73  tiveModule.iVers
2c9c0 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  ion, nativeModul
2c9d0 65 2e 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20  e.xCreate,..    
2c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c9f0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2ca00 78 43 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76 65  xConnect, native
2ca10 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
2ca20 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
2ca30 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2ca40 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  eModule.xDisconn
2ca50 65 63 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  ect, nativeModul
2ca60 65 2e 78 44 65 73 74 72 6f 79 2c 0d 0a 20 20 20  e.xDestroy,..   
2ca70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca80 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2ca90 2e 78 4f 70 65 6e 2c 20 6e 61 74 69 76 65 4d 6f  .xOpen, nativeMo
2caa0 64 75 6c 65 2e 78 43 6c 6f 73 65 2c 0d 0a 20 20  dule.xClose,..  
2cab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cac0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2cad0 65 2e 78 46 69 6c 74 65 72 2c 20 6e 61 74 69 76  e.xFilter, nativ
2cae0 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 2c 0d 0a  eModule.xNext,..
2caf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb00 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2cb10 75 6c 65 2e 78 45 6f 66 2c 20 6e 61 74 69 76 65  ule.xEof, native
2cb20 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 2c 0d  Module.xColumn,.
2cb30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cb40 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2cb50 64 75 6c 65 2e 78 52 6f 77 49 64 2c 20 6e 61 74  dule.xRowId, nat
2cb60 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
2cb70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2cb80 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2cb90 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 2c 20  eModule.xBegin, 
2cba0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79  nativeModule.xSy
2cbb0 6e 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nc,..           
2cbc0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2cbd0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  veModule.xCommit
2cbe0 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
2cbf0 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Rollback,..     
2cc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc10 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2cc20 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 6e 61  FindFunction, na
2cc30 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
2cc40 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
2cc50 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2cc60 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f  veModule.xSavepo
2cc70 69 6e 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  int, nativeModul
2cc80 65 2e 78 52 65 6c 65 61 73 65 2c 0d 0a 20 20 20  e.xRelease,..   
2cc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cca0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2ccb0 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e  .xRollbackTo, In
2ccc0 74 50 74 72 2e 5a 65 72 6f 2c 20 64 65 73 74 72  tPtr.Zero, destr
2ccd0 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20  oyModule);....  
2cce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2ccf0 74 75 72 6e 20 28 64 69 73 70 6f 73 61 62 6c 65  turn (disposable
2cd00 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74 72  Module != IntPtr
2cd10 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c 73 65 0d 0a  .Zero);..#else..
2cd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd30 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70  throw new NotImp
2cd40 6c 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f  lementedExceptio
2cd50 6e 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  n();..#endif..  
2cd60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2cd70 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
2cd80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2cd90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cda0 20 69 66 20 28 70 4e 61 6d 65 20 21 3d 20 49 6e   if (pName != In
2cdb0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2cdc0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2cdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cde0 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
2cdf0 46 72 65 65 28 70 4e 61 6d 65 29 3b 0d 0a 20 20  Free(pName);..  
2ce00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce10 20 20 70 4e 61 6d 65 20 3d 20 49 6e 74 50 74 72    pName = IntPtr
2ce20 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
2ce30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2ce40 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2ce50 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2ce60 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2ce70 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ceb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2cec0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
2ced0 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20  ivate Methods.. 
2cee0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2cef0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2cf00 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
2cf10 20 63 61 6c 6c 65 64 20 62 79 20 74 68 65 20 53   called by the S
2cf20 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
2cf30 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69  ry when the nati
2cf40 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
2cf50 6d 6f 64 75 6c 65 20 61 73 73 6f 63 69 61 74 65  module associate
2cf60 64 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65  d with this obje
2cf70 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 62  ct instance is b
2cf80 65 69 6e 67 20 64 65 73 74 72 6f 79 65 64 20 64  eing destroyed d
2cf90 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
2cfa0 74 6f 20 69 74 73 20 70 61 72 65 6e 74 20 63 6f  to its parent co
2cfb0 6e 6e 65 63 74 69 6f 6e 20 62 65 69 6e 67 20 63  nnection being c
2cfc0 6c 6f 73 65 64 2e 20 20 49 74 20 6d 61 79 20 61  losed.  It may a
2cfd0 6c 73 6f 20 62 65 20 63 61 6c 6c 65 64 20 62 79  lso be called by
2cfe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
2cff0 65 20 22 76 74 73 68 69 6d 22 20 6d 6f 64 75 6c  e "vtshim" modul
2d000 65 20 69 66 2f 77 68 65 6e 20 74 68 65 20 73 71  e if/when the sq
2d010 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f  lite3_dispose_mo
2d020 64 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 0d  dule() function.
2d030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20  .        /// is 
2d040 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20  called...       
2d050 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2d060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2d070 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e  ram name="pClien
2d080 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20  tData">..       
2d090 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
2d0a0 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65  user-data pointe
2d0b0 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  r associated wit
2d0c0 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61  h this module, a
2d0d0 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20  s it was..      
2d0e0 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74    /// provided t
2d0f0 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  o the SQLite cor
2d100 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74  e library when t
2d110 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
2d120 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
2d130 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74     /// was creat
2d140 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
2d150 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2d160 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
2d170 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 0d  xDestroyModule(.
2d180 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
2d190 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 20  Ptr pClientData 
2d1a0 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
2d1b0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2d1c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d1d0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2d1e0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
2d1f0 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 6a 75  t this point, ju
2d200 73 74 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61  st make sure tha
2d210 74 20 74 68 69 73 20 6e 61 74 69 76 65 20 6d 6f  t this native mo
2d220 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  dule..          
2d230 20 20 2f 2f 20 20 20 20 20 20 20 68 61 6e 64 6c    //       handl
2d240 65 20 69 73 20 6e 6f 74 20 72 65 75 73 65 64 2c  e is not reused,
2d250 20 6e 6f 72 20 70 61 73 73 65 64 20 69 6e 74 6f   nor passed into
2d260 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
2d270 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2d280 20 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f 73    sqlite3_dispos
2d290 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63 74  e_module() funct
2d2a0 69 6f 6e 20 6c 61 74 65 72 20 28 69 2e 65 2e 20  ion later (i.e. 
2d2b0 69 66 2f 77 68 65 6e 0d 0a 20 20 20 20 20 20 20  if/when..       
2d2c0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
2d2d0 65 20 44 69 73 70 6f 73 65 28 29 20 6d 65 74 68  e Dispose() meth
2d2e0 6f 64 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  od of this objec
2d2f0 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 63 61  t instance is ca
2d300 6c 6c 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20  lled)...        
2d310 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2d320 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f      disposableMo
2d330 64 75 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  dule = IntPtr.Ze
2d340 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
2d350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2d3b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2d3c0 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
2d3d0 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
2d3e0 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f  native sqlite_mo
2d3f0 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75  dule structure u
2d400 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
2d410 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64    /// configured
2d420 20 28 6f 72 20 64 65 66 61 75 6c 74 29 20 3c 73   (or default) <s
2d430 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2d440 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
2d450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
2d460 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e  terface implemen
2d470 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
2d480 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2d490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
2d4a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2d4b0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73  /// The native s
2d4c0 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72  qlite_module str
2d4d0 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
2d4e0 20 63 6f 6e 66 69 67 75 72 65 64 20 28 6f 72 0d   configured (or.
2d4f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 66  .        /// def
2d500 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66 3d  ault) <see cref=
2d510 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d520 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61  dule" /> interfa
2d530 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
2d540 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
2d550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
2d560 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2d570 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e   private UnsafeN
2d580 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2d590 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c 6f  ite3_module Allo
2d5a0 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  cateNativeModule
2d5b0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
2d5c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d5d0 6e 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65  n AllocateNative
2d5e0 4d 6f 64 75 6c 65 28 47 65 74 4e 61 74 69 76 65  Module(GetNative
2d5f0 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 29 3b 0d 0a  ModuleImpl());..
2d600 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2d610 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2d620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2d660 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2d670 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2d680 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2d690 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2d6a0 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20 72 65  / Creates and re
2d6b0 74 75 72 6e 73 20 61 20 6d 65 6d 6f 72 79 20 62  turns a memory b
2d6c0 6c 6f 63 6b 20 6f 62 74 61 69 6e 65 64 20 66 72  lock obtained fr
2d6d0 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  om the SQLite co
2d6e0 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
2d6f0 6c 69 62 72 61 72 79 20 75 73 65 64 20 74 6f 20  library used to 
2d700 73 74 6f 72 65 20 74 68 65 20 6e 61 74 69 76 65  store the native
2d710 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
2d720 73 74 72 75 63 74 75 72 65 20 66 6f 72 20 74 68  structure for th
2d730 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
2d740 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
2d750 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  when running on 
2d760 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
2d770 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20   Framework...   
2d780 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2d790 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2d7a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2d7b0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
2d7c0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
2d7d0 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2d7e0 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
2d7f0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
2d800 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2d810 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50      private IntP
2d820 74 72 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76  tr AllocateNativ
2d830 65 4d 6f 64 75 6c 65 49 6e 74 65 72 6f 70 28 29  eModuleInterop()
2d840 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2d850 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e 61           if (pNa
2d860 74 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e  tiveModule == In
2d870 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2d880 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2d890 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2d8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2d8b0 2f 20 48 41 43 4b 3a 20 4e 6f 20 65 61 73 79 20  / HACK: No easy 
2d8c0 77 61 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  way to determine
2d8d0 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
2d8e0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
2d8f0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2d900 20 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20    sqlite_module 
2d910 73 74 72 75 63 74 75 72 65 20 77 68 65 6e 20 72  structure when r
2d920 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e  unning on the .N
2d930 45 54 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ET..            
2d940 20 20 20 20 2f 2f 20 20 20 20 20 20 20 43 6f 6d      //       Com
2d950 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 3b 20  pact Framework; 
2d960 74 68 65 72 65 66 6f 72 65 2c 20 6a 75 73 74 20  therefore, just 
2d970 62 61 73 65 20 74 68 65 20 73 69 7a 65 0d 0a 20  base the size.. 
2d980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2d990 2f 20 20 20 20 20 20 20 6f 6e 20 77 68 61 74 20  /       on what 
2d9a0 77 65 20 6b 6e 6f 77 3a 0d 0a 20 20 20 20 20 20  we know:..      
2d9b0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2d9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d9d0 20 20 20 20 20 20 20 54 68 65 72 65 20 69 73 20         There is 
2d9e0 6f 6e 65 20 69 6e 74 65 67 65 72 20 6d 65 6d 62  one integer memb
2d9f0 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er...           
2da00 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54 68       //       Th
2da10 65 72 65 20 61 72 65 20 32 32 20 66 75 6e 63 74  ere are 22 funct
2da20 69 6f 6e 20 70 6f 69 6e 74 65 72 20 6d 65 6d 62  ion pointer memb
2da30 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ers...          
2da40 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2da50 20 20 20 20 20 20 20 20 20 20 70 4e 61 74 69 76            pNativ
2da60 65 4d 6f 64 75 6c 65 20 3d 20 53 51 4c 69 74 65  eModule = SQLite
2da70 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28  Memory.Allocate(
2da80 32 33 20 2a 20 49 6e 74 50 74 72 2e 53 69 7a 65  23 * IntPtr.Size
2da90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2daa0 20 20 20 20 20 20 69 66 20 28 70 4e 61 74 69 76        if (pNativ
2dab0 65 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e 74 50 74  eModule == IntPt
2dac0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2dad0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
2dae0 6f 77 20 6e 65 77 20 4f 75 74 4f 66 4d 65 6d 6f  ow new OutOfMemo
2daf0 72 79 45 78 63 65 70 74 69 6f 6e 28 22 73 71 6c  ryException("sql
2db00 69 74 65 33 5f 6d 6f 64 75 6c 65 22 29 3b 0d 0a  ite3_module");..
2db10 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2db20 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2db30 75 72 6e 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c  urn pNativeModul
2db40 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  e;..        }..#
2db50 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
2db60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2db70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dba0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2dbb0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2dbc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
2dbd0 72 65 61 74 65 73 20 61 6e 64 20 72 65 74 75 72  reates and retur
2dbe0 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  ns the native sq
2dbf0 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75  lite_module stru
2dc00 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65 0d  cture using the.
2dc10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65  .        /// spe
2dc20 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
2dc30 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2dc40 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66  odule" /> interf
2dc50 61 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ace..        ///
2dc60 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
2dc70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2dc80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2dc90 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2dca0 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
2dcb0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
2dcc0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2dcd0 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  ativeModule" /> 
2dce0 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d  interface implem
2dcf0 65 6e 74 61 74 69 6f 6e 20 74 6f 0d 0a 20 20 20  entation to..   
2dd00 20 20 20 20 20 2f 2f 2f 20 75 73 65 2e 0d 0a 20       /// use... 
2dd10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2dd20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
2dd30 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2dd40 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
2dd50 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65  ve sqlite_module
2dd60 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67   structure using
2dd70 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
2dd80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
2dd90 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2dda0 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
2ddb0 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65  nterface impleme
2ddc0 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
2ddd0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2dde0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2ddf0 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e UnsafeNativeMe
2de00 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2de10 64 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74  dule AllocateNat
2de20 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20  iveModule(..    
2de30 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e          ISQLiteN
2de40 61 74 69 76 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  ativeModule modu
2de50 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
2de60 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2de70 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2de80 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20 55 6e 73  Module = new Uns
2de90 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2dea0 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 28  .sqlite3_module(
2deb0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2dec0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65  nativeModule.iVe
2ded0 72 73 69 6f 6e 20 3d 20 44 65 66 61 75 6c 74 4d  rsion = DefaultM
2dee0 6f 64 75 6c 65 56 65 72 73 69 6f 6e 3b 0d 0a 0d  oduleVersion;...
2def0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2df00 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29  (module != null)
2df10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2df20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2df30 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2df40 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61  reate = new Unsa
2df50 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2df60 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
2df70 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2df80 75 6c 65 2e 78 43 72 65 61 74 65 29 3b 0d 0a 0d  ule.xCreate);...
2df90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dfa0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2dfb0 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
2dfc0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2dfd0 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  .xConnect(..    
2dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dff0 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 29  module.xConnect)
2e000 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e010 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e020 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e  e.xBestIndex = n
2e030 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e040 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65  ethods.xBestInde
2e050 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x(..            
2e060 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2e070 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20  BestIndex);.... 
2e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2e090 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
2e0a0 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e  connect = new Un
2e0b0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e0c0 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  s.xDisconnect(..
2e0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0e0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63      module.xDisc
2e0f0 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20  onnect);....    
2e100 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2e110 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f  veModule.xDestro
2e120 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  y = new UnsafeNa
2e130 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73  tiveMethods.xDes
2e140 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20  troy(..         
2e150 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2e160 65 2e 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a  e.xDestroy);....
2e170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e180 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  nativeModule.xOp
2e190 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  en = new UnsafeN
2e1a0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f 70  ativeMethods.xOp
2e1b0 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en(..           
2e1c0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2e1d0 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  xOpen);....     
2e1e0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e1f0 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d  eModule.xClose =
2e200 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2e210 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28  eMethods.xClose(
2e220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e230 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6c        module.xCl
2e240 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ose);....       
2e250 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2e260 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20  odule.xFilter = 
2e270 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2e280 4d 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28  Methods.xFilter(
2e290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e2a0 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46 69        module.xFi
2e2b0 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lter);....      
2e2c0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e2d0 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e  Module.xNext = n
2e2e0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e2f0 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a 20  ethods.xNext(.. 
2e300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e310 20 20 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 29     module.xNext)
2e320 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e330 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e340 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73  e.xEof = new Uns
2e350 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e360 2e 78 45 6f 66 28 6d 6f 64 75 6c 65 2e 78 45 6f  .xEof(module.xEo
2e370 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  f);....         
2e380 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2e390 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65  ule.xColumn = ne
2e3a0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e3b0 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a  thods.xColumn(..
2e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3d0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75      module.xColu
2e3e0 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  mn);....        
2e3f0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e400 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65  dule.xRowId = ne
2e410 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e420 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 0d 0a 20  thods.xRowId(.. 
2e430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e440 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64     module.xRowId
2e450 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2e460 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2e470 6c 65 2e 78 55 70 64 61 74 65 20 3d 20 6e 65 77  le.xUpdate = new
2e480 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e490 68 6f 64 73 2e 78 55 70 64 61 74 65 28 0d 0a 20  hods.xUpdate(.. 
2e4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e4b0 20 20 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74     module.xUpdat
2e4c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2e4d0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2e4e0 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77  ule.xBegin = new
2e4f0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e500 68 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20  hods.xBegin(..  
2e510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e520 20 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 29    module.xBegin)
2e530 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e540 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e550 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e  e.xSync = new Un
2e560 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e570 73 2e 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  s.xSync(..      
2e580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2e590 64 75 6c 65 2e 78 53 79 6e 63 29 3b 0d 0a 0d 0a  dule.xSync);....
2e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e5b0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
2e5c0 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  mmit = new Unsaf
2e5d0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2e5e0 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20  Commit(..       
2e5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2e600 75 6c 65 2e 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d  ule.xCommit);...
2e610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e620 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2e630 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e  ollback = new Un
2e640 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e650 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  s.xRollback(..  
2e660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e670 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61    module.xRollba
2e680 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ck);....        
2e690 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e6a0 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
2e6b0 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  on = new UnsafeN
2e6c0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69  ativeMethods.xFi
2e6d0 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
2e6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e6f0 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e   module.xFindFun
2e700 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  ction);....     
2e710 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e720 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20  eModule.xRename 
2e730 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e740 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d  veMethods.xRenam
2e750 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2e760 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2e770 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  Rename);....    
2e780 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2e790 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f  veModule.xSavepo
2e7a0 69 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  int = new Unsafe
2e7b0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53  NativeMethods.xS
2e7c0 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20  avepoint(..     
2e7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2e7e0 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
2e7f0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2e800 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2e810 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65  le.xRelease = ne
2e820 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e830 74 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d  thods.xRelease(.
2e840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e850 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 65 6c       module.xRel
2e860 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ease);....      
2e870 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e880 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2e890 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  To = new UnsafeN
2e8a0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f  ativeMethods.xRo
2e8b0 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
2e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2e8d0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
2e8e0 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
2e8f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2e900 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2e910 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2e920 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e930 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20  e.xCreate = new 
2e940 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2e950 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20  ods.xCreate(..  
2e960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e970 20 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20    xCreate);.... 
2e980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2e990 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
2e9a0 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  nect = new Unsaf
2e9b0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2e9c0 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
2e9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43                xC
2e9e0 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20  onnect);....    
2e9f0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2ea00 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
2ea10 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  dex = new Unsafe
2ea20 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42  NativeMethods.xB
2ea30 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20  estIndex(..     
2ea40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2ea50 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20  BestIndex);.... 
2ea60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2ea70 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
2ea80 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e  connect = new Un
2ea90 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2eaa0 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  s.xDisconnect(..
2eab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eac0 20 20 20 20 78 44 69 73 63 6f 6e 6e 65 63 74 29      xDisconnect)
2ead0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2eae0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2eaf0 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77  e.xDestroy = new
2eb00 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2eb10 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a  hods.xDestroy(..
2eb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eb30 20 20 20 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a      xDestroy);..
2eb40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eb50 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2eb60 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  Open = new Unsaf
2eb70 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2eb80 4f 70 65 6e 28 78 4f 70 65 6e 29 3b 0d 0a 20 20  Open(xOpen);..  
2eb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2eba0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73  tiveModule.xClos
2ebb0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2ebc0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f  tiveMethods.xClo
2ebd0 73 65 28 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20  se(xClose);.... 
2ebe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2ebf0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
2ec00 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ter = new Unsafe
2ec10 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46  NativeMethods.xF
2ec20 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
2ec30 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69 6c              xFil
2ec40 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
2ec50 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2ec60 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65  odule.xNext = ne
2ec70 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2ec80 74 68 6f 64 73 2e 78 4e 65 78 74 28 78 4e 65 78  thods.xNext(xNex
2ec90 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
2eca0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2ecb0 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73  e.xEof = new Uns
2ecc0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2ecd0 2e 78 45 6f 66 28 78 45 6f 66 29 3b 0d 0a 0d 0a  .xEof(xEof);....
2ece0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ecf0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
2ed00 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  lumn = new Unsaf
2ed10 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2ed20 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
2ed30 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f               xCo
2ed40 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lumn);....      
2ed50 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2ed60 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20  Module.xRowId = 
2ed70 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2ed80 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 78  Methods.xRowId(x
2ed90 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20  RowId);....     
2eda0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2edb0 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20  eModule.xUpdate 
2edc0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2edd0 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74  veMethods.xUpdat
2ede0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2edf0 20 20 20 20 20 20 20 20 78 55 70 64 61 74 65 29          xUpdate)
2ee00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ee10 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2ee20 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55  e.xBegin = new U
2ee30 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2ee40 64 73 2e 78 42 65 67 69 6e 28 78 42 65 67 69 6e  ds.xBegin(xBegin
2ee50 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2ee60 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2ee70 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73  .xSync = new Uns
2ee80 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2ee90 2e 78 53 79 6e 63 28 78 53 79 6e 63 29 3b 0d 0a  .xSync(xSync);..
2eea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eeb0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2eec0 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73  Commit = new Uns
2eed0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2eee0 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20  .xCommit(..     
2eef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2ef00 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20  Commit);....    
2ef10 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2ef20 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
2ef30 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ck = new UnsafeN
2ef40 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f  ativeMethods.xRo
2ef50 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
2ef60 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 6f               xRo
2ef70 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20  llback);....    
2ef80 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2ef90 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  veModule.xFindFu
2efa0 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73  nction = new Uns
2efb0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2efc0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  .xFindFunction(.
2efd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2efe0 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69       xFindFuncti
2eff0 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  on);....        
2f000 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2f010 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e  dule.xRename = n
2f020 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f030 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d  ethods.xRename(.
2f040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f050 20 20 20 20 20 78 52 65 6e 61 6d 65 29 3b 0d 0a       xRename);..
2f060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f070 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2f080 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20  Savepoint = new 
2f090 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2f0a0 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d  ods.xSavepoint(.
2f0b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f0c0 20 20 20 20 20 78 53 61 76 65 70 6f 69 6e 74 29       xSavepoint)
2f0d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f0e0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2f0f0 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77  e.xRelease = new
2f100 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f110 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a  hods.xRelease(..
2f120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f130 20 20 20 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a      xRelease);..
2f140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f150 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2f160 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77  RollbackTo = new
2f170 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f180 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  hods.xRollbackTo
2f190 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f1a0 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b         xRollback
2f1b0 54 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  To);..          
2f1c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2f1d0 20 20 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65     return native
2f1e0 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
2f1f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2f200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f240 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2f250 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2f260 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61          /// Crea
2f270 74 65 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68  tes a copy of th
2f280 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  e specified..   
2f290 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
2f2a0 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65  ef="UnsafeNative
2f2b0 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
2f2c0 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  module" /> objec
2f2d0 74 20 69 6e 73 74 61 6e 63 65 2c 0d 0a 20 20 20  t instance,..   
2f2e0 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20 64       /// using d
2f2f0 65 66 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74  efault implement
2f300 61 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 63  ations for the c
2f310 6f 6e 74 61 69 6e 65 64 20 64 65 6c 65 67 61 74  ontained delegat
2f320 65 73 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 20  es when..       
2f330 20 2f 2f 2f 20 6e 65 63 65 73 73 61 72 79 2e 0d   /// necessary..
2f340 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2f350 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2f360 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2f370 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20  ="module">..    
2f380 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2f390 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
2f3a0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2f3b0 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  e3_module" /> ob
2f3c0 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
2f3d0 2f 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 63 6f  / instance to co
2f3e0 70 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  py...        ///
2f3f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2f400 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2f410 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2f420 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  e new <see cref=
2f430 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  "UnsafeNativeMet
2f440 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2f450 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a  ule" /> object..
2f460 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
2f470 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
2f480 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2f490 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55         private U
2f4a0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2f4b0 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
2f4c0 65 20 43 6f 70 79 4e 61 74 69 76 65 4d 6f 64 75  e CopyNativeModu
2f4d0 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2f4e0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f4f0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2f500 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ule module..    
2f510 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2f520 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f530 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
2f540 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2f550 64 75 6c 65 20 6e 65 77 4d 6f 64 75 6c 65 20 3d  dule newModule =
2f560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f570 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69    new UnsafeNati
2f580 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2f590 33 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20  3_module();.... 
2f5a0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2f5b0 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20  dule.iVersion = 
2f5c0 6d 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 3b  module.iVersion;
2f5d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f5e0 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  newModule.xCreat
2f5f0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2f600 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65  tiveMethods.xCre
2f610 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
2f620 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43        (module.xC
2f630 72 65 61 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f  reate != null) ?
2f640 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20   module.xCreate 
2f650 3a 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20  : xCreate);.... 
2f660 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2f670 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20  dule.xConnect = 
2f680 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2f690 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74  Methods.xConnect
2f6a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f6b0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e     (module.xConn
2f6c0 65 63 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ect != null) ? m
2f6d0 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3a  odule.xConnect :
2f6e0 20 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20   xConnect);.... 
2f6f0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2f700 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20  dule.xBestIndex 
2f710 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f720 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 73 74 49  veMethods.xBestI
2f730 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
2f740 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
2f750 42 65 73 74 49 6e 64 65 78 20 21 3d 20 6e 75 6c  BestIndex != nul
2f760 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65 73  l) ? module.xBes
2f770 74 49 6e 64 65 78 20 3a 20 78 42 65 73 74 49 6e  tIndex : xBestIn
2f780 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  dex);....       
2f790 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2f7a0 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77  Disconnect = new
2f7b0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2f7c0 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74  hods.xDisconnect
2f7d0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f7e0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44 69 73 63     (module.xDisc
2f7f0 6f 6e 6e 65 63 74 20 21 3d 20 6e 75 6c 6c 29 20  onnect != null) 
2f800 3f 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  ? module.xDiscon
2f810 6e 65 63 74 20 3a 0d 0a 20 20 20 20 20 20 20 20  nect :..        
2f820 20 20 20 20 20 20 20 20 78 44 69 73 63 6f 6e 6e          xDisconn
2f830 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ect);....       
2f840 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2f850 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e  Destroy = new Un
2f860 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2f870 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20  s.xDestroy(..   
2f880 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2f890 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 21 3d  dule.xDestroy !=
2f8a0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2f8b0 78 44 65 73 74 72 6f 79 20 3a 20 78 44 65 73 74  xDestroy : xDest
2f8c0 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  roy);....       
2f8d0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2f8e0 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  Open = new Unsaf
2f8f0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2f900 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  Open(..         
2f910 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
2f920 4f 70 65 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  Open != null) ? 
2f930 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3a 20 78  module.xOpen : x
2f940 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Open);....      
2f950 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2f960 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73  xClose = new Uns
2f970 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2f980 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20  .xClose(..      
2f990 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
2f9a0 65 2e 78 43 6c 6f 73 65 20 21 3d 20 6e 75 6c 6c  e.xClose != null
2f9b0 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73  ) ? module.xClos
2f9c0 65 20 3a 20 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a  e : xClose);....
2f9d0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2f9e0 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20  odule.xFilter = 
2f9f0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2fa00 4d 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28  Methods.xFilter(
2fa10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fa20 20 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65    (module.xFilte
2fa30 72 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  r != null) ? mod
2fa40 75 6c 65 2e 78 46 69 6c 74 65 72 20 3a 20 78 46  ule.xFilter : xF
2fa50 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  ilter);....     
2fa60 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2fa70 2e 78 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73  .xNext = new Uns
2fa80 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2fa90 2e 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20  .xNext(..       
2faa0 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2fab0 2e 78 4e 65 78 74 20 21 3d 20 6e 75 6c 6c 29 20  .xNext != null) 
2fac0 3f 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3a  ? module.xNext :
2fad0 20 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20   xNext);....    
2fae0 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
2faf0 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73  e.xEof = new Uns
2fb00 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2fb10 2e 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  .xEof(..        
2fb20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2fb30 78 45 6f 66 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  xEof != null) ? 
2fb40 6d 6f 64 75 6c 65 2e 78 45 6f 66 20 3a 20 78 45  module.xEof : xE
2fb50 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  of);....        
2fb60 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43      newModule.xC
2fb70 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61  olumn = new Unsa
2fb80 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2fb90 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20  xColumn(..      
2fba0 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
2fbb0 65 2e 78 43 6f 6c 75 6d 6e 20 21 3d 20 6e 75 6c  e.xColumn != nul
2fbc0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c  l) ? module.xCol
2fbd0 75 6d 6e 20 3a 20 78 43 6f 6c 75 6d 6e 29 3b 0d  umn : xColumn);.
2fbe0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2fbf0 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20  ewModule.xRowId 
2fc00 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2fc10 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64  veMethods.xRowId
2fc20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2fc30 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 77 49     (module.xRowI
2fc40 64 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  d != null) ? mod
2fc50 75 6c 65 2e 78 52 6f 77 49 64 20 3a 20 78 52 6f  ule.xRowId : xRo
2fc60 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  wId);....       
2fc70 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2fc80 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55 6e 73  Update = new Uns
2fc90 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2fca0 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20  .xUpdate(..     
2fcb0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2fcc0 6c 65 2e 78 55 70 64 61 74 65 20 21 3d 20 6e 75  le.xUpdate != nu
2fcd0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 55 70  ll) ? module.xUp
2fce0 64 61 74 65 20 3a 20 78 55 70 64 61 74 65 29 3b  date : xUpdate);
2fcf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2fd00 6e 65 77 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  newModule.xBegin
2fd10 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2fd20 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69  iveMethods.xBegi
2fd30 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
2fd40 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 42 65 67      (module.xBeg
2fd50 69 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  in != null) ? mo
2fd60 64 75 6c 65 2e 78 42 65 67 69 6e 20 3a 20 78 42  dule.xBegin : xB
2fd70 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  egin);....      
2fd80 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2fd90 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61  xSync = new Unsa
2fda0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2fdb0 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20  xSync(..        
2fdc0 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2fdd0 78 53 79 6e 63 20 21 3d 20 6e 75 6c 6c 29 20 3f  xSync != null) ?
2fde0 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3a 20   module.xSync : 
2fdf0 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20  xSync);....     
2fe00 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2fe10 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55  .xCommit = new U
2fe20 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2fe30 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  ds.xCommit(..   
2fe40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2fe50 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 21 3d 20  dule.xCommit != 
2fe60 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2fe70 43 6f 6d 6d 69 74 20 3a 20 78 43 6f 6d 6d 69 74  Commit : xCommit
2fe80 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2fe90 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c    newModule.xRol
2fea0 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61  lback = new Unsa
2feb0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2fec0 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  xRollback(..    
2fed0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2fee0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 21 3d  ule.xRollback !=
2fef0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2ff00 78 52 6f 6c 6c 62 61 63 6b 20 3a 20 78 52 6f 6c  xRollback : xRol
2ff10 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20  lback);....     
2ff20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2ff30 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d  .xFindFunction =
2ff40 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2ff50 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75  eMethods.xFindFu
2ff60 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
2ff70 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2ff80 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 21  .xFindFunction !
2ff90 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2ffa0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3a  .xFindFunction :
2ffb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ffc0 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29    xFindFunction)
2ffd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ffe0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 65 6e 61   newModule.xRena
2fff0 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  me = new UnsafeN
30000 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65  ativeMethods.xRe
30010 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  name(..         
30020 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
30030 52 65 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 20  Rename != null) 
30040 3f 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  ? module.xRename
30050 20 3a 20 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a   : xRename);....
30060 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
30070 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
30080 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
30090 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76 65  iveMethods.xSave
300a0 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
300b0 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
300c0 78 53 61 76 65 70 6f 69 6e 74 20 21 3d 20 6e 75  xSavepoint != nu
300d0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 53 61  ll) ? module.xSa
300e0 76 65 70 6f 69 6e 74 20 3a 20 78 53 61 76 65 70  vepoint : xSavep
300f0 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  oint);....      
30100 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
30110 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77 20 55  xRelease = new U
30120 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
30130 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20 20  ds.xRelease(..  
30140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
30150 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 21  odule.xRelease !
30160 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
30170 2e 78 52 65 6c 65 61 73 65 20 3a 20 78 52 65 6c  .xRelease : xRel
30180 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ease);....      
30190 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
301a0 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65  xRollbackTo = ne
301b0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
301c0 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54  thods.xRollbackT
301d0 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o(..            
301e0 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c      (module.xRol
301f0 6c 62 61 63 6b 54 6f 20 21 3d 20 6e 75 6c 6c 29  lbackTo != null)
30200 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62   ? module.xRollb
30210 61 63 6b 54 6f 20 3a 0d 0a 20 20 20 20 20 20 20  ackTo :..       
30220 20 20 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61           xRollba
30230 63 6b 54 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ckTo);....      
30240 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
30250 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
30260 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
30270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
302c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
302d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c          /// Call
302e0 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 76 69 72  s one of the vir
302f0 74 75 61 6c 20 74 61 62 6c 65 20 69 6e 69 74 69  tual table initi
30300 61 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68 6f 64  alization method
30310 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
30320 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
30330 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
30340 61 6d 65 3d 22 63 72 65 61 74 65 22 3e 0d 0a 20  ame="create">.. 
30350 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
30360 65 72 6f 20 74 6f 20 63 61 6c 6c 20 74 68 65 20  ero to call the 
30370 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
30380 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
30390 43 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20 20 20  Create" />..    
303a0 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20      /// method; 
303b0 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 3c  otherwise, the <
303c0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
303d0 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
303e0 6f 6e 6e 65 63 74 22 20 2f 3e 0d 0a 20 20 20 20  onnect" />..    
303f0 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77      /// method w
30400 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a  ill be called...
30410 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
30420 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
30430 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
30440 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Db">..        //
30450 2f 20 54 68 65 20 6e 61 74 69 76 65 20 64 61 74  / The native dat
30460 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
30470 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20   handle...      
30480 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
30490 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
304a0 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d  am name="pAux">.
304b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
304c0 20 6f 72 69 67 69 6e 61 6c 20 6e 61 74 69 76 65   original native
304d0 20 70 6f 69 6e 74 65 72 20 76 61 6c 75 65 20 74   pointer value t
304e0 68 61 74 20 77 61 73 20 70 72 6f 76 69 64 65 64  hat was provided
304f0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
30500 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65   /// sqlite3_cre
30510 61 74 65 5f 6d 6f 64 75 6c 65 28 29 2c 20 73 71  ate_module(), sq
30520 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64  lite3_create_mod
30530 75 6c 65 5f 76 32 28 29 20 6f 72 0d 0a 20 20 20  ule_v2() or..   
30540 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
30550 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
30560 6c 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63  le_module() func
30570 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20  tions...        
30580 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
30590 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
305a0 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
305b0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
305c0 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e  umber of argumen
305d0 74 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41  ts from the CREA
305e0 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
305f0 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20   statement...   
30600 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
30610 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
30620 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
30630 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
30640 54 68 65 20 61 72 72 61 79 20 6f 66 20 73 74 72  The array of str
30650 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 66 72  ing arguments fr
30660 6f 6d 20 74 68 65 20 43 52 45 41 54 45 20 56 49  om the CREATE VI
30670 52 54 55 41 4c 20 54 41 42 4c 45 0d 0a 20 20 20  RTUAL TABLE..   
30680 20 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65       /// stateme
30690 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
306a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
306b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
306c0 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
306d0 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
306e0 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
306f0 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
30700 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20  dified to point 
30710 74 6f 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20  to the newly..  
30720 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65        /// create
30730 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  d native sqlite3
30740 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
30750 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
30760 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
30770 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
30780 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22  am name="pError"
30790 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
307a0 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69  pon failure, thi
307b0 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
307c0 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
307d0 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 65 72 72  point to the err
307e0 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
307f0 6d 65 73 73 61 67 65 2c 20 77 69 74 68 20 74 68  message, with th
30800 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6d 65 6d  e underlying mem
30810 6f 72 79 20 68 61 76 69 6e 67 20 62 65 65 6e 20  ory having been 
30820 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68  obtained from th
30830 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
30840 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
30850 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
30860 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
30870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
30880 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
30890 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
308a0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
308b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
308c0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
308d0 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
308e0 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61  teErrorCode Crea
308f0 74 65 4f 72 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  teOrConnect(..  
30900 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 63            bool c
30910 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  reate,..        
30920 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
30930 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
30940 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
30950 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
30960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
30970 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
30980 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
30990 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
309a0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
309b0 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20  r pError..      
309c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
309d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
309e0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
309f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30a00 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
30a10 61 6d 65 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ame = SQLiteStri
30a20 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  ng.StringFromUtf
30a30 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  8IntPtr(..      
30a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
30a50 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
30a60 73 2e 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  s.sqlite3_db_fil
30a70 65 6e 61 6d 65 28 70 44 62 2c 20 49 6e 74 50 74  ename(pDb, IntPt
30a80 72 2e 5a 65 72 6f 29 29 3b 0d 0a 0d 0a 20 20 20  r.Zero));....   
30a90 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 69               usi
30aa0 6e 67 20 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ng (SQLiteConnec
30ab0 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  tion connection 
30ac0 3d 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e  = new SQLiteConn
30ad0 65 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ection(..       
30ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30af0 20 70 44 62 2c 20 66 69 6c 65 4e 61 6d 65 2c 20   pDb, fileName, 
30b00 66 61 6c 73 65 29 29 0d 0a 20 20 20 20 20 20 20  false))..       
30b10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b30 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
30b40 6c 65 20 74 61 62 6c 65 20 3d 20 6e 75 6c 6c 3b  le table = null;
30b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30b60 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72        string err
30b70 6f 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  or = null;....  
30b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b90 20 20 69 66 20 28 28 63 72 65 61 74 65 20 26 26    if ((create &&
30ba0 20 43 72 65 61 74 65 28 63 6f 6e 6e 65 63 74 69   Create(connecti
30bb0 6f 6e 2c 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  on, pAux,..     
30bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30bd0 20 20 20 20 20 20 20 53 51 4c 69 74 65 53 74 72         SQLiteStr
30be0 69 6e 67 2e 53 74 72 69 6e 67 41 72 72 61 79 46  ing.StringArrayF
30bf0 72 6f 6d 55 74 66 38 53 69 7a 65 41 6e 64 49 6e  romUtf8SizeAndIn
30c00 74 50 74 72 28 61 72 67 63 2c 0d 0a 20 20 20 20  tPtr(argc,..    
30c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c20 20 20 20 20 20 20 20 20 61 72 67 76 29 2c 20 72          argv), r
30c30 65 66 20 74 61 62 6c 65 2c 20 72 65 66 20 65 72  ef table, ref er
30c40 72 6f 72 29 20 3d 3d 20 53 51 4c 69 74 65 45 72  ror) == SQLiteEr
30c50 72 6f 72 43 6f 64 65 2e 4f 6b 29 20 7c 7c 0d 0a  rorCode.Ok) ||..
30c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c70 20 20 20 20 20 20 20 20 28 21 63 72 65 61 74 65          (!create
30c80 20 26 26 20 43 6f 6e 6e 65 63 74 28 63 6f 6e 6e   && Connect(conn
30c90 65 63 74 69 6f 6e 2c 20 70 41 75 78 2c 0d 0a 20  ection, pAux,.. 
30ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30cb0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
30cc0 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 41 72  eString.StringAr
30cd0 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41  rayFromUtf8SizeA
30ce0 6e 64 49 6e 74 50 74 72 28 61 72 67 63 2c 0d 0a  ndIntPtr(argc,..
30cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d00 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76              argv
30d10 29 2c 20 72 65 66 20 74 61 62 6c 65 2c 20 72 65  ), ref table, re
30d20 66 20 65 72 72 6f 72 29 20 3d 3d 20 53 51 4c 69  f error) == SQLi
30d30 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 29  teErrorCode.Ok))
30d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30d50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d70 20 69 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75   if (table != nu
30d80 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
30d90 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
30da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30db0 20 20 20 20 20 20 20 20 20 20 20 20 70 56 74 61              pVta
30dc0 62 20 3d 20 54 61 62 6c 65 54 6f 49 6e 74 50 74  b = TableToIntPt
30dd0 72 28 74 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20  r(table);..     
30de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30df0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
30e00 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
30e10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30e20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
30e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e40 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
30e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e80 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69     pError = SQLi
30e90 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
30ea0 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a  PtrFromString(..
30eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ed0 22 6e 6f 20 74 61 62 6c 65 20 77 61 73 20 63 72  "no table was cr
30ee0 65 61 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20  eated");..      
30ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f00 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
30f10 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f30 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
30f40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f60 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51       pError = SQ
30f70 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
30f80 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
30f90 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  error);..       
30fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
30fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30fc0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
30fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
30fe0 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
30ff0 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20  ) /* NOTE: Must 
31000 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20  catch ALL. */.. 
31010 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
31020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45                pE
31030 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72  rror = SQLiteStr
31040 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72  ing.Utf8IntPtrFr
31050 6f 6d 53 74 72 69 6e 67 28 65 2e 54 6f 53 74 72  omString(e.ToStr
31060 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  ing());..       
31070 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
31080 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
31090 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
310a0 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  or;..        }..
310b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
310c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31100 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
31110 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
31120 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e      /// Calls on
31130 65 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  e of the virtual
31140 20 74 61 62 6c 65 20 66 69 6e 61 6c 69 7a 61 74   table finalizat
31150 69 6f 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20  ion methods...  
31160 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
31170 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
31180 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
31190 65 73 74 72 6f 79 22 3e 0d 0a 20 20 20 20 20 20  estroy">..      
311a0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74    /// Non-zero t
311b0 6f 20 63 61 6c 6c 20 74 68 65 20 3c 73 65 65 20  o call the <see 
311c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
311d0 61 67 65 64 4d 6f 64 75 6c 65 2e 44 65 73 74 72  agedModule.Destr
311e0 6f 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  oy" />..        
311f0 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65  /// method; othe
31200 72 77 69 73 65 2c 20 74 68 65 0d 0a 20 20 20 20  rwise, the..    
31210 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
31220 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
31230 64 4d 6f 64 75 6c 65 2e 44 69 73 63 6f 6e 6e 65  dModule.Disconne
31240 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  ct" /> method wi
31250 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  ll be..        /
31260 2f 2f 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  // called...    
31270 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
31280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
31290 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
312a0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
312b0 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
312c0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
312d0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
312e0 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
312f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
31300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
31310 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
31320 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
31330 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
31340 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
31350 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
31360 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
31370 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65 73 74  teErrorCode Dest
31380 72 6f 79 4f 72 44 69 73 63 6f 6e 6e 65 63 74 28  royOrDisconnect(
31390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
313a0 6f 6c 20 64 65 73 74 72 6f 79 2c 0d 0a 20 20 20  ol destroy,..   
313b0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
313c0 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
313d0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
313e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
313f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31410 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
31420 62 6c 65 20 74 61 62 6c 65 20 3d 20 54 61 62 6c  ble table = Tabl
31430 65 46 72 6f 6d 49 6e 74 50 74 72 28 70 56 74 61  eFromIntPtr(pVta
31440 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
31450 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65         if (table
31460 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
31470 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
31480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31490 20 20 69 66 20 28 28 64 65 73 74 72 6f 79 20 26    if ((destroy &
314a0 26 20 28 44 65 73 74 72 6f 79 28 74 61 62 6c 65  & (Destroy(table
314b0 29 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  ) == SQLiteError
314c0 43 6f 64 65 2e 4f 6b 29 29 20 7c 7c 0d 0a 20 20  Code.Ok)) ||..  
314d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314e0 20 20 20 20 20 20 28 21 64 65 73 74 72 6f 79 20        (!destroy 
314f0 26 26 20 28 44 69 73 63 6f 6e 6e 65 63 74 28 74  && (Disconnect(t
31500 61 62 6c 65 29 20 3d 3d 20 53 51 4c 69 74 65 45  able) == SQLiteE
31510 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 29 29 0d 0a  rrorCode.Ok)))..
31520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31530 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
31550 66 20 28 74 61 62 6c 65 73 20 21 3d 20 6e 75 6c  f (tables != nul
31560 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
31570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31580 74 61 62 6c 65 73 2e 52 65 6d 6f 76 65 28 70 56  tables.Remove(pV
31590 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
315a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315b0 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
315c0 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20  rorCode.Ok;..   
315d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
315f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
31600 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
31610 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
31620 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d  on e) /* NOTE: M
31630 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a  ust catch ALL. *
31640 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  /..            {
31650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31660 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
31670 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
31680 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 74 68  t this point, th
31690 65 72 65 20 69 73 20 6e 6f 20 77 61 79 20 74 6f  ere is no way to
316a0 20 72 65 70 6f 72 74 20 74 68 65 20 65 72 72 6f   report the erro
316b0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
316c0 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 64     //       cond
316d0 69 74 69 6f 6e 20 62 61 63 6b 20 74 6f 20 74 68  ition back to th
316e0 65 20 63 61 6c 6c 65 72 3b 20 74 68 65 72 65 66  e caller; theref
316f0 6f 72 65 2c 20 75 73 65 20 74 68 65 0d 0a 20 20  ore, use the..  
31700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
31710 20 20 20 20 20 20 20 6c 6f 67 67 69 6e 67 20 66         logging f
31720 61 63 69 6c 69 74 79 20 69 6e 73 74 65 61 64 2e  acility instead.
31730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31740 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
31750 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
31760 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
31770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31780 20 20 69 66 20 28 4c 6f 67 45 78 63 65 70 74 69    if (LogExcepti
31790 6f 6e 73 4e 6f 54 68 72 6f 77 29 0d 0a 20 20 20  onsNoThrow)..   
317a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
317b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
317c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 74              /* t
317d0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
317e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
317f0 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65   SQLiteLog.LogMe
31800 73 73 61 67 65 28 53 51 4c 69 74 65 42 61 73 65  ssage(SQLiteBase
31810 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e  .COR_E_EXCEPTION
31820 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
31830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                 H
31840 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
31850 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
31860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31870 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
31880 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
31890 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
318a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318b0 20 22 43 61 75 67 68 74 20 65 78 63 65 70 74 69   "Caught excepti
318c0 6f 6e 20 69 6e 20 5c 22 7b 30 7d 5c 22 20 6d 65  on in \"{0}\" me
318d0 74 68 6f 64 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  thod: {1}",..   
318e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318f0 20 20 20 20 20 20 20 20 20 64 65 73 74 72 6f 79           destroy
31900 20 3f 20 22 78 44 65 73 74 72 6f 79 22 20 3a 20   ? "xDestroy" : 
31910 22 78 44 69 73 63 6f 6e 6e 65 63 74 22 2c 20 65  "xDisconnect", e
31920 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
31930 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31940 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
31960 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
31970 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31980 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
31990 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
319a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
319b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
319c0 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
319d0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
319e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
319f0 20 20 20 46 72 65 65 54 61 62 6c 65 28 70 56 74     FreeTable(pVt
31a00 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
31a10 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
31a20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
31a30 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
31a40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
31a50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
31a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
31aa0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
31ab0 6e 20 53 74 61 74 69 63 20 45 72 72 6f 72 20 48  n Static Error H
31ac0 61 6e 64 6c 69 6e 67 20 48 65 6c 70 65 72 20 4d  andling Helper M
31ad0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
31ae0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
31af0 20 20 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e         /// Arran
31b00 67 65 73 20 66 6f 72 20 74 68 65 20 73 70 65 63  ges for the spec
31b10 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73  ified error mess
31b20 61 67 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64  age to be placed
31b30 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20   into the..     
31b40 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66     /// zErrMsg f
31b50 69 65 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65  ield of a sqlite
31b60 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
31b70 74 72 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e  tructure, freein
31b80 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
31b90 2f 2f 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f  // existing erro
31ba0 72 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e  r message, if an
31bb0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
31bc0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
31bd0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
31be0 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20  ame="module">.. 
31bf0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
31c00 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
31c10 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
31c20 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65  t instance to be
31c30 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
31c40 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
31c50 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
31c60 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
31c70 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
31c80 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
31c90 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
31ca0 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
31cb0 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
31cc0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
31cd0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
31ce0 6e 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22  name="logErrors"
31cf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
31d00 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20  on-zero if this 
31d10 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68  error message sh
31d20 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67  ould also be log
31d30 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ged using the.. 
31d40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
31d50 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22  cref="SQLiteLog"
31d60 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20   /> class...    
31d70 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
31d80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
31d90 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78  aram name="logEx
31da0 63 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20  ceptions">..    
31db0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
31dc0 20 69 66 20 63 61 75 67 68 74 20 65 78 63 65 70   if caught excep
31dd0 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20  tions should be 
31de0 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65  logged using the
31df0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
31e00 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c  ee cref="SQLiteL
31e10 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  og" /> class... 
31e20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
31e30 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
31e40 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
31e50 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
31e60 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73  // The error mes
31e70 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sage...        /
31e80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
31e90 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
31ea0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
31eb0 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75  Non-zero upon su
31ec0 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
31ed0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
31ee0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
31ef0 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 54  static bool SetT
31f00 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20  ableError(..    
31f10 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f          SQLiteMo
31f20 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20  dule module,..  
31f30 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
31f40 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
31f50 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72       bool logErr
31f60 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
31f70 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74    bool logExcept
31f80 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  ions,..         
31f90 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d     string error.
31fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
31fb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31fc0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
31fd0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31fe0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
31ff0 6f 67 45 72 72 6f 72 73 29 0d 0a 20 20 20 20 20  ogErrors)..     
32000 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
32010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32020 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d    SQLiteLog.LogM
32030 65 73 73 61 67 65 28 53 51 4c 69 74 65 45 72 72  essage(SQLiteErr
32040 6f 72 43 6f 64 65 2e 45 72 72 6f 72 2c 0d 0a 20  orCode.Error,.. 
32050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32060 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
32070 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
32080 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
32090 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
320a0 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
320b0 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
320c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
320d0 20 22 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20   "Virtual table 
320e0 65 72 72 6f 72 3a 20 7b 30 7d 22 2c 20 65 72 72  error: {0}", err
320f0 6f 72 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  or)); /* throw *
32100 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
32110 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
32120 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
32130 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
32140 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32150 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
32160 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
32170 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
32180 20 20 20 20 62 6f 6f 6c 20 73 75 63 63 65 73 73      bool success
32190 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
321a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4e         IntPtr pN
321b0 65 77 45 72 72 6f 72 20 3d 20 49 6e 74 50 74 72  ewError = IntPtr
321c0 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
321d0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
321e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
321f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
32200 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  tab == IntPtr.Ze
32210 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
32220 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
32230 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
32240 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
32250 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  fset = 0;....   
32260 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
32270 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
32280 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
32290 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
322a0 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
322b0 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65  ntPtr.Size, size
322c0 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
322d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
322e0 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
322f0 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
32300 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
32310 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
32320 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50  izeof(int), IntP
32330 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
32340 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
32350 50 74 72 20 70 4f 6c 64 45 72 72 6f 72 20 3d 20  Ptr pOldError = 
32360 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
32370 61 64 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20  adIntPtr(pVtab, 
32380 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
32390 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
323a0 70 4f 6c 64 45 72 72 6f 72 20 21 3d 20 49 6e 74  pOldError != Int
323b0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
323c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
323d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
323e0 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
323f0 72 65 65 28 70 4f 6c 64 45 72 72 6f 72 29 3b 20  ree(pOldError); 
32400 70 4f 6c 64 45 72 72 6f 72 20 3d 20 49 6e 74 50  pOldError = IntP
32410 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
32420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
32430 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
32440 65 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f  eIntPtr(pVtab, o
32450 66 66 73 65 74 2c 20 70 4f 6c 64 45 72 72 6f 72  ffset, pOldError
32460 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
32470 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32480 20 20 20 20 20 20 20 20 20 69 66 20 28 65 72 72           if (err
32490 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  or == null)..   
324a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
324b0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d   return true;...
324c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
324d0 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 53 51 4c   pNewError = SQL
324e0 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
324f0 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65  tPtrFromString(e
32500 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
32510 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
32520 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74  rshal.WriteIntPt
32530 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c  r(pVtab, offset,
32540 20 70 4e 65 77 45 72 72 6f 72 29 3b 0d 0a 20 20   pNewError);..  
32550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75                su
32560 63 63 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20  ccess = true;.. 
32570 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
32580 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
32590 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a  (Exception e) /*
325a0 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63   NOTE: Must catc
325b0 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20  h ALL. */..     
325c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
325d0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
325e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
325f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32600 20 20 20 20 20 20 69 66 20 28 6c 6f 67 45 78 63        if (logExc
32610 65 70 74 69 6f 6e 73 29 0d 0a 20 20 20 20 20 20  eptions)..      
32620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
32630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32640 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c           SQLiteL
32650 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51  og.LogMessage(SQ
32660 4c 69 74 65 42 61 73 65 2e 43 4f 52 5f 45 5f 45  LiteBase.COR_E_E
32670 58 43 45 50 54 49 4f 4e 2c 0d 0a 20 20 20 20 20  XCEPTION,..     
32680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32690 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
326a0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
326b0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
326c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
326d0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
326e0 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
326f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32700 20 20 20 20 20 20 20 20 20 22 43 61 75 67 68 74           "Caught
32710 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22   exception in \"
32720 53 65 74 54 61 62 6c 65 45 72 72 6f 72 5c 22 20  SetTableError\" 
32730 6d 65 74 68 6f 64 3a 20 7b 30 7d 22 2c 0d 0a 20  method: {0}",.. 
32740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32750 20 20 20 20 20 20 20 20 20 20 20 65 29 29 3b 20             e)); 
32760 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
32770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32780 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32790 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
327a0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
327b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
327c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
327d0 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
327e0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
327f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32800 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
32810 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
32820 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32830 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
32840 73 75 63 63 65 73 73 20 26 26 20 28 70 4e 65 77  success && (pNew
32850 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e  Error != IntPtr.
32860 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20  Zero))..        
32870 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
32890 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
328a0 28 70 4e 65 77 45 72 72 6f 72 29 3b 0d 0a 20 20  (pNewError);..  
328b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
328c0 20 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 49 6e    pNewError = In
328d0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
328e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
328f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
32900 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
32910 72 6e 20 73 75 63 63 65 73 73 3b 0d 0a 20 20 20  rn success;..   
32920 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
32930 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
32940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32970 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
32980 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
32990 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
329a0 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65  Arranges for the
329b0 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72   specified error
329c0 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20 70   message to be p
329d0 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a  laced into the..
329e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72          /// zErr
329f0 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73  Msg field of a s
32a00 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
32a10 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20 66  ved structure, f
32a20 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  reeing the..    
32a30 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67      /// existing
32a40 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20   error message, 
32a50 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20  if any...       
32a60 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
32a70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
32a80 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
32a90 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
32aa0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
32ab0 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
32ac0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
32ad0 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  to be used...   
32ae0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
32af0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32b00 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
32b10 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
32b20 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
32b30 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
32b40 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
32b50 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 0d 0a  stance used to..
32b60 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b          /// look
32b70 75 70 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f  up the native po
32b80 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
32b90 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
32ba0 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
32bb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
32bc0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
32bd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67  <param name="log
32be0 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20  Errors">..      
32bf0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
32c00 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73  f this error mes
32c10 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f  sage should also
32c20 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67   be logged using
32c30 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
32c40 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
32c50 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73  iteLog" /> class
32c60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
32c70 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
32c80 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
32c90 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22  ="logExceptions"
32ca0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
32cb0 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68  on-zero if caugh
32cc0 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f  t exceptions sho
32cd0 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73  uld be logged us
32ce0 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
32cf0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
32d00 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c  SQLiteLog" /> cl
32d10 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
32d20 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
32d30 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
32d40 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20  ame="error">..  
32d50 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72        /// The er
32d60 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20  ror message...  
32d70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
32d80 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
32d90 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
32da0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
32db0 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20  upon success... 
32dc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
32dd0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
32de0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
32df0 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72  ol SetTableError
32e00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
32e10 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  QLiteModule modu
32e20 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
32e30 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
32e40 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20 20  ble table,..    
32e50 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67          bool log
32e60 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20  Errors,..       
32e70 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63       bool logExc
32e80 65 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20  eptions,..      
32e90 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72        string err
32ea0 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
32eb0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
32ec0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61            if (ta
32ed0 62 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ble == null)..  
32ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
32ef0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
32f00 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
32f10 72 20 70 56 74 61 62 20 3d 20 74 61 62 6c 65 2e  r pVtab = table.
32f20 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 0d  NativeHandle;...
32f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
32f40 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72  (pVtab == IntPtr
32f50 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
32f60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
32f70 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
32f80 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 54       return SetT
32f90 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20  ableError(..    
32fa0 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
32fb0 6c 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45 72  le, pVtab, logEr
32fc0 72 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69  rors, logExcepti
32fd0 6f 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20  ons, error);..  
32fe0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
32ff0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33040 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
33050 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
33060 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68   Arranges for th
33070 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f  e specified erro
33080 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20  r message to be 
33090 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d  placed into the.
330a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72  .        /// zEr
330b0 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20  rMsg field of a 
330c0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
330d0 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20  ived structure, 
330e0 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20  freeing the..   
330f0 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e       /// existin
33100 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c  g error message,
33110 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
33120 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
33130 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
33140 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
33150 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
33160 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
33170 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
33180 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
33190 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20   to be used...  
331a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
331b0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
331c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
331d0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
331e0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
331f0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
33200 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
33210 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
33220 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ure..        ///
33230 20 75 73 65 64 20 74 6f 20 67 65 74 20 74 68 65   used to get the
33240 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
33250 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
33260 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20  tab derived..   
33270 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
33280 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
33290 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
332a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
332b0 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d  me="logErrors">.
332c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
332d0 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65 72  -zero if this er
332e0 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75  ror message shou
332f0 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65  ld also be logge
33300 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  d using the..   
33310 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
33320 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f  ef="SQLiteLog" /
33330 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  > class...      
33340 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
33350 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
33360 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65  am name="logExce
33370 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20  ptions">..      
33380 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
33390 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74 69  f caught excepti
333a0 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ons should be lo
333b0 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a  gged using the..
333c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
333d0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67   cref="SQLiteLog
333e0 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20  " /> class...   
333f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
33400 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
33410 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f  param name="erro
33420 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
33430 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61   The error messa
33440 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ge...        ///
33450 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
33460 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
33470 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
33480 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63  n-zero upon succ
33490 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ess...        //
334a0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
334b0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
334c0 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 43 75 72  atic bool SetCur
334d0 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  sorError(..     
334e0 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
334f0 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20  ule module,..   
33500 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
33510 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
33520 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72        bool logEr
33530 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  rors,..         
33540 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70     bool logExcep
33550 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20  tions,..        
33560 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72      string error
33570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
33580 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
33590 20 20 20 20 20 20 20 20 69 66 20 28 70 43 75 72          if (pCur
335a0 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  sor == IntPtr.Ze
335b0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
335c0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
335d0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
335e0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 20 3d    IntPtr pVtab =
335f0 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72   TableFromCursor
33600 28 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f 72  (module, pCursor
33610 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33620 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49    if (pVtab == I
33630 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
33640 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
33650 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
33660 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
33670 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 0d   SetTableError(.
33680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33690 20 6d 6f 64 75 6c 65 2c 20 70 56 74 61 62 2c 20   module, pVtab, 
336a0 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f 67 45 78  logErrors, logEx
336b0 63 65 70 74 69 6f 6e 73 2c 20 65 72 72 6f 72 29  ceptions, error)
336c0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
336d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
336e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
33720 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33730 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
33740 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66    /// Arranges f
33750 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
33760 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74   error message t
33770 6f 20 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f  o be placed into
33780 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
33790 2f 20 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20  / zErrMsg field 
337a0 6f 66 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61  of a sqlite3_vta
337b0 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
337c0 75 72 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65  ure, freeing the
337d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78  ..        /// ex
337e0 69 73 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73  isting error mes
337f0 73 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20  sage, if any... 
33800 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
33810 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
33820 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
33830 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20  module">..      
33840 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
33850 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
33860 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
33870 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64  tance to be used
33880 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33890 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
338a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
338b0 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  ="cursor">..    
338c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
338d0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
338e0 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22  tualTableCursor"
338f0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
33900 6e 63 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20  nce used to..   
33910 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b 75 70 20       /// lookup 
33920 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  the native point
33930 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
33940 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
33950 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
33960 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
33970 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
33980 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 72 72  ram name="logErr
33990 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ors">..        /
339a0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
339b0 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73 61 67  his error messag
339c0 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 62 65  e should also be
339d0 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68   logged using th
339e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
339f0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
33a00 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a  Log" /> class...
33a10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
33a20 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
33a30 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
33a40 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e 0d 0a  ogExceptions">..
33a50 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
33a60 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74 20 65  zero if caught e
33a70 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64  xceptions should
33a80 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67   be logged using
33a90 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
33aa0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
33ab0 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73  iteLog" /> class
33ac0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33ad0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
33ae0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
33af0 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20  ="error">..     
33b00 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72     /// The error
33b10 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20   message...     
33b20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
33b30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
33b40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
33b50 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f  /// Non-zero upo
33b60 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20  n success...    
33b70 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
33b80 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
33b90 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
33ba0 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28 0d  SetCursorError(.
33bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
33bc0 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iteModule module
33bd0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
33be0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
33bf0 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 0d  eCursor cursor,.
33c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
33c10 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20  l logErrors,..  
33c20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c            bool l
33c30 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20  ogExceptions,.. 
33c40 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
33c50 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20  g error..       
33c60 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
33c70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
33c80 66 20 28 63 75 72 73 6f 72 20 3d 3d 20 6e 75 6c  f (cursor == nul
33c90 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
33ca0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
33cb0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
33cc0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 20   IntPtr pCursor 
33cd0 3d 20 63 75 72 73 6f 72 2e 4e 61 74 69 76 65 48  = cursor.NativeH
33ce0 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  andle;....      
33cf0 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73 6f        if (pCurso
33d00 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r == IntPtr.Zero
33d10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
33d20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
33d30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33d40 72 65 74 75 72 6e 20 53 65 74 43 75 72 73 6f 72  return SetCursor
33d50 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  Error(..        
33d60 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2c 20          module, 
33d70 70 43 75 72 73 6f 72 2c 20 6c 6f 67 45 72 72 6f  pCursor, logErro
33d80 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e  rs, logException
33d90 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20  s, error);..    
33da0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
33db0 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20  endregion..     
33dc0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
33dd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
33de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
33e30 69 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 4d 65  ion Protected Me
33e40 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 23  mbers..        #
33e50 72 65 67 69 6f 6e 20 4d 6f 64 75 6c 65 20 48 65  region Module He
33e60 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
33e70 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
33e80 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
33e90 20 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e   Gets and return
33ea0 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
33eb0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
33ec0 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61  dule" /> interfa
33ed0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
33ee0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74  implementation t
33ef0 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 63  o be used when c
33f00 72 65 61 74 69 6e 67 20 74 68 65 20 6e 61 74 69  reating the nati
33f10 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ve sqlite3_modul
33f20 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
33f30 74 72 75 63 74 75 72 65 2e 20 20 44 65 72 69 76  tructure.  Deriv
33f40 65 64 20 63 6c 61 73 73 65 73 20 6d 61 79 20 6f  ed classes may o
33f50 76 65 72 72 69 64 65 20 74 68 69 73 20 6d 65 74  verride this met
33f60 68 6f 64 20 74 6f 20 73 75 70 70 6c 79 20 61 6e  hod to supply an
33f70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c  ..        /// al
33f80 74 65 72 6e 61 74 65 20 69 6d 70 6c 65 6d 65 6e  ternate implemen
33f90 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 3c  tation for the <
33fa0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
33fb0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
33fc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  >..        /// i
33fd0 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20  nterface...     
33fe0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
33ff0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
34000 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
34010 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
34020 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
34030 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74  veModule" /> int
34040 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74  erface implement
34050 61 74 69 6f 6e 20 74 6f 0d 0a 20 20 20 20 20 20  ation to..      
34060 20 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 77 68    /// be used wh
34070 65 6e 20 70 6f 70 75 6c 61 74 69 6e 67 20 74 68  en populating th
34080 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
34090 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
340a0 65 2e 20 20 49 66 0d 0a 20 20 20 20 20 20 20 20  e.  If..        
340b0 2f 2f 2f 20 74 68 65 20 72 65 74 75 72 6e 65 64  /// the returned
340c0 20 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 20   value is null, 
340d0 74 68 65 20 70 72 69 76 61 74 65 20 6d 65 74 68  the private meth
340e0 6f 64 73 20 70 72 6f 76 69 64 65 64 20 62 79 20  ods provided by 
340f0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
34100 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
34110 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61  teModule" /> cla
34120 73 73 20 61 6e 64 20 72 65 6c 61 74 69 6e 67 20  ss and relating 
34130 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
34140 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
34150 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
34160 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65  le" /> interface
34170 20 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74    will be used t
34180 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  o..        /// c
34190 72 65 61 74 65 20 74 68 65 20 6e 65 63 65 73 73  reate the necess
341a0 61 72 79 20 64 65 6c 65 67 61 74 65 73 2e 0d 0a  ary delegates...
341b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
341c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
341d0 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
341e0 6c 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  l ISQLiteNativeM
341f0 6f 64 75 6c 65 20 47 65 74 4e 61 74 69 76 65 4d  odule GetNativeM
34200 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20 20  oduleImpl()..   
34210 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
34220 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
34230 20 2f 2a 20 4e 4f 54 45 3a 20 55 73 65 20 74 68   /* NOTE: Use th
34240 65 20 62 75 69 6c 74 2d 69 6e 20 64 65 66 61 75  e built-in defau
34250 6c 74 20 64 65 6c 65 67 61 74 65 73 2e 20 2a 2f  lt delegates. */
34260 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
34270 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
34280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
342a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
342b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
342c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
342d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
342e0 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64   /// Creates and
342f0 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65   returns the <se
34300 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
34310 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d  ativeModule" />.
34320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
34330 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74  erface implement
34340 61 74 69 6f 6e 20 63 6f 72 72 65 73 70 6f 6e 64  ation correspond
34350 69 6e 67 20 74 6f 20 74 68 65 20 63 75 72 72 65  ing to the curre
34360 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nt..        /// 
34370 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
34380 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
34390 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
343a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
343b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
343c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
343d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
343e0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
343f0 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  ativeModule" /> 
34400 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d  interface implem
34410 65 6e 74 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  entation..      
34420 20 20 2f 2f 2f 20 63 6f 72 72 65 73 70 6f 6e 64    /// correspond
34430 69 6e 67 20 74 6f 20 74 68 65 20 63 75 72 72 65  ing to the curre
34440 6e 74 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  nt <see cref="SQ
34450 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f  LiteModule" /> o
34460 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
34470 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  // instance...  
34480 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
34490 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
344a0 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
344b0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
344c0 75 6c 65 20 43 72 65 61 74 65 4e 61 74 69 76 65  ule CreateNative
344d0 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20  ModuleImpl()..  
344e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
344f0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
34500 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
34510 6c 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20  le(this);..     
34520 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
34530 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
34540 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
34550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
34590 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e         #region N
345a0 61 74 69 76 65 20 54 61 62 6c 65 20 48 65 6c 70  ative Table Help
345b0 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
345c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
345d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
345e0 6c 6c 6f 63 61 74 65 73 20 61 20 6e 61 74 69 76  llocates a nativ
345f0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
34600 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
34610 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 0d 0a   and returns a..
34620 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69          /// nati
34630 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74  ve pointer to it
34640 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
34650 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
34660 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
34670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
34680 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
34690 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74  o a native sqlit
346a0 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
346b0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
346c0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
346d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  s>..        prot
346e0 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e  ected virtual In
346f0 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 54 61 62  tPtr AllocateTab
34700 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
34710 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
34720 20 73 69 7a 65 20 3d 20 4d 61 72 73 68 61 6c 2e   size = Marshal.
34730 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a  SizeOf(typeof(..
34740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34750 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
34760 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 74 61 62  ods.sqlite3_vtab
34770 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
34780 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
34790 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28  Memory.Allocate(
347a0 73 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  size);..        
347b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
347c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
347d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
347e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
347f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34800 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
34810 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
34820 20 20 20 20 20 20 20 2f 2f 2f 20 5a 65 72 6f 73         /// Zeros
34830 20 6f 75 74 20 74 68 65 20 66 69 65 6c 64 73 20   out the fields 
34840 6f 66 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69  of a native sqli
34850 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
34860 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
34870 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
34880 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
34890 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
348a0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
348b0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
348c0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74  inter to the nat
348d0 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  ive sqlite3_vtab
348e0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
348f0 72 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  re to..        /
34900 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  // zero...      
34910 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
34920 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
34930 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 5a  d virtual void Z
34940 65 72 6f 54 61 62 6c 65 28 0d 0a 20 20 20 20 20  eroTable(..     
34950 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
34960 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
34970 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
34980 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
34990 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  Vtab == IntPtr.Z
349a0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
349b0 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
349c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
349d0 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a   offset = 0;....
349e0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
349f0 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
34a00 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66  ntPtr(pVtab, off
34a10 73 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  set, IntPtr.Zero
34a20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
34a30 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
34a40 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
34a50 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
34a60 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
34a70 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a  IntPtr.Size, siz
34a80 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
34a90 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
34aa0 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
34ab0 33 32 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74  32(pVtab, offset
34ac0 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  , 0);....       
34ad0 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
34ae0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
34af0 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
34b00 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
34b10 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20  t, sizeof(int), 
34b20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
34b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
34b40 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
34b50 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66  IntPtr(pVtab, of
34b60 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72  fset, IntPtr.Zer
34b70 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  o);..        }..
34b80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
34b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bd0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
34be0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
34bf0 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 20      /// Frees a 
34c00 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
34c10 74 61 62 20 73 74 72 75 63 74 75 72 65 20 75 73  tab structure us
34c20 69 6e 67 20 74 68 65 20 70 72 6f 76 69 64 65 64  ing the provided
34c30 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
34c40 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 20 74 6f 20   /// pointer to 
34c50 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  it...        ///
34c60 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
34c70 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
34c80 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
34c90 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74         /// A nat
34ca0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  ive pointer to a
34cb0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
34cc0 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
34cd0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
34ce0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
34cf0 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
34d00 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 46 72   virtual void Fr
34d10 65 65 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20  eeTable(..      
34d20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
34d30 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
34d40 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
34d50 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62            SetTab
34d60 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 6e  leError(pVtab, n
34d70 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ull);..         
34d80 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
34d90 46 72 65 65 28 70 56 74 61 62 29 3b 0d 0a 20 20  Free(pVtab);..  
34da0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
34db0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
34dc0 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
34df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
34e10 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
34e20 6e 20 4e 61 74 69 76 65 20 43 75 72 73 6f 72 20  n Native Cursor 
34e30 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
34e40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
34e50 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
34e60 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 20 6e  // Allocates a n
34e70 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74  ative sqlite3_vt
34e80 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65  ab_cursor derive
34e90 64 20 73 74 72 75 63 74 75 72 65 20 61 6e 64 0d  d structure and.
34ea0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74  .        /// ret
34eb0 75 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f  urns a native po
34ec0 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20  inter to it...  
34ed0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
34ee0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
34ef0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
34f00 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76       /// A nativ
34f10 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e  e pointer to a n
34f20 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74  ative sqlite3_vt
34f30 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65  ab_cursor derive
34f40 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
34f50 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
34f60 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
34f70 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
34f80 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 43  IntPtr AllocateC
34f90 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20 20  ursor()..       
34fa0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34fb0 69 6e 74 20 73 69 7a 65 20 3d 20 4d 61 72 73 68  int size = Marsh
34fc0 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66  al.SizeOf(typeof
34fd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
34fe0 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
34ff0 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
35000 74 61 62 5f 63 75 72 73 6f 72 29 29 3b 0d 0a 0d  tab_cursor));...
35010 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
35020 75 72 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  urn SQLiteMemory
35030 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 29 3b  .Allocate(size);
35040 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
35050 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
35060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
350a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
350b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
350c0 20 2f 2f 2f 20 46 72 65 65 73 20 61 20 6e 61 74   /// Frees a nat
350d0 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  ive sqlite3_vtab
350e0 5f 63 75 72 73 6f 72 20 73 74 72 75 63 74 75 72  _cursor structur
350f0 65 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 76  e using the prov
35100 69 64 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ided..        //
35110 2f 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  / native pointer
35120 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20 20   to it...       
35130 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
35140 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
35150 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
35160 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
35170 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   A native pointe
35180 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71  r to a native sq
35190 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
351a0 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
351b0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
351c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
351d0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
351e0 72 74 75 61 6c 20 76 6f 69 64 20 46 72 65 65 43  rtual void FreeC
351f0 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  ursor(..        
35200 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
35210 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
35220 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
35230 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
35240 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 75 72  Memory.Free(pCur
35250 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  sor);..        }
35260 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
35270 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
35280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
352d0 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74 69     #region Stati
352e0 63 20 54 61 62 6c 65 20 4c 6f 6f 6b 75 70 20 4d  c Table Lookup M
352f0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
35300 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
35310 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73         /// Reads
35320 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
35330 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
35340 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
35350 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20  tab derived..   
35360 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
35370 72 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  re based on the 
35380 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
35390 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
353a0 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 20  ab_cursor..     
353b0 20 20 20 2f 2f 2f 20 64 65 72 69 76 65 64 20 73     /// derived s
353c0 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
353d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
353e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
353f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
35400 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
35410 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
35420 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
35430 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
35440 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20  e to be used... 
35450 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
35460 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
35470 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
35480 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
35490 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
354a0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
354b0 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
354c0 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
354d0 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ture..        //
354e0 2f 20 66 72 6f 6d 20 77 68 69 63 68 20 74 6f 20  / from which to 
354f0 72 65 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  read the native 
35500 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
35510 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
35520 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ved..        ///
35530 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
35540 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
35550 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
35560 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35570 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
35580 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
35590 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
355a0 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20 2d  ived structure -
355b0 4f 52 2d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  OR-..        ///
355c0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
355d0 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 69  tr.Zero" /> if i
355e0 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
355f0 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20  rmined...       
35600 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
35610 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
35620 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 54   static IntPtr T
35630 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 0d  ableFromCursor(.
35640 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
35650 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iteModule module
35660 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
35670 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
35680 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
35690 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
356a0 20 20 20 20 20 69 66 20 28 70 43 75 72 73 6f 72       if (pCursor
356b0 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
356c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
356d0 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
356e0 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
356f0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73       return Mars
35700 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70  hal.ReadIntPtr(p
35710 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20  Cursor);..      
35720 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
35730 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
35740 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
35750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
35790 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54 61        #region Ta
357a0 62 6c 65 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f  ble Lookup Metho
357b0 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
357c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
357d0 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e 64     /// Reads and
357e0 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74   returns the nat
357f0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
35800 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
35810 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20  derived..       
35820 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 62   /// structure b
35830 61 73 65 64 20 6f 6e 20 74 68 65 20 6e 61 74 69  ased on the nati
35840 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
35850 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  e sqlite3_vtab_c
35860 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  ursor..        /
35870 2f 2f 20 64 65 72 69 76 65 64 20 73 74 72 75 63  // derived struc
35880 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
35890 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
358a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
358b0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
358c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
358d0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
358e0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
358f0 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72  _vtab_cursor der
35900 69 76 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a  ived structure..
35910 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d          /// from
35920 20 77 68 69 63 68 20 74 6f 20 72 65 61 64 20 74   which to read t
35930 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
35940 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
35950 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20  _vtab derived.. 
35960 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
35970 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
35980 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
35990 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
359a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
359b0 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
359c0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
359d0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
359e0 74 72 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a 20  tructure -OR-.. 
359f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
35a00 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72  cref="IntPtr.Zer
35a10 6f 22 20 2f 3e 20 69 66 20 69 74 20 63 61 6e 6e  o" /> if it cann
35a20 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
35a30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35a40 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
35a50 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
35a60 74 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62 6c  tual IntPtr Tabl
35a70 65 46 72 6f 6d 43 75 72 73 6f 72 28 0d 0a 20 20  eFromCursor(..  
35a80 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
35a90 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20   pCursor..      
35aa0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
35ab0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35ac0 72 65 74 75 72 6e 20 54 61 62 6c 65 46 72 6f 6d  return TableFrom
35ad0 43 75 72 73 6f 72 28 74 68 69 73 2c 20 70 43 75  Cursor(this, pCu
35ae0 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
35af0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
35b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b40 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
35b50 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
35b60 20 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 6f 6b 73         /// Looks
35b70 20 75 70 20 61 6e 64 20 72 65 74 75 72 6e 73 20   up and returns 
35b80 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
35b90 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
35ba0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20  e" /> object..  
35bb0 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
35bc0 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  ce based on the 
35bd0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
35be0 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
35bf0 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20  ab derived..    
35c00 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
35c10 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
35c20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
35c30 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
35c40 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
35c50 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
35c60 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
35c70 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
35c80 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
35c90 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
35ca0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
35cb0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
35cc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
35cd0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
35ce0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
35cf0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
35d00 6e 63 65 20 6f 72 20 6e 75 6c 6c 20 69 66 0d 0a  nce or null if..
35d10 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
35d20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f 6e  corresponding on
35d30 65 20 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e  e cannot be foun
35d40 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
35d50 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
35d60 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
35d70 72 74 75 61 6c 20 53 51 4c 69 74 65 56 69 72 74  rtual SQLiteVirt
35d80 75 61 6c 54 61 62 6c 65 20 54 61 62 6c 65 46 72  ualTable TableFr
35d90 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  omIntPtr(..     
35da0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
35db0 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
35dc0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
35dd0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
35de0 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  Vtab == IntPtr.Z
35df0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
35e00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
35e10 20 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72       SetTableErr
35e20 6f 72 28 70 56 74 61 62 2c 20 22 69 6e 76 61 6c  or(pVtab, "inval
35e30 69 64 20 6e 61 74 69 76 65 20 74 61 62 6c 65 22  id native table"
35e40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
35e50 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
35e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
35e70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
35e80 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
35e90 65 20 74 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20  e table;....    
35ea0 20 20 20 20 20 20 20 20 69 66 20 28 28 74 61 62          if ((tab
35eb0 6c 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d  les != null) &&.
35ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35ed0 20 74 61 62 6c 65 73 2e 54 72 79 47 65 74 56 61   tables.TryGetVa
35ee0 6c 75 65 28 70 56 74 61 62 2c 20 6f 75 74 20 74  lue(pVtab, out t
35ef0 61 62 6c 65 29 29 0d 0a 20 20 20 20 20 20 20 20  able))..        
35f00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35f10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 61         return ta
35f20 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ble;..          
35f30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
35f40 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72     SetTableError
35f50 28 70 56 74 61 62 2c 20 48 65 6c 70 65 72 4d 65  (pVtab, HelperMe
35f60 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
35f70 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
35f80 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
35f90 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
35fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35fb0 20 20 22 6d 61 6e 61 67 65 64 20 74 61 62 6c 65    "managed table
35fc0 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f 75   for {0} not fou
35fd0 6e 64 22 2c 20 70 56 74 61 62 29 29 3b 0d 0a 0d  nd", pVtab));...
35fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
35ff0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
36000 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
36010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36050 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
36060 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
36070 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c  ..        /// Al
36080 6c 6f 63 61 74 65 73 20 61 6e 64 20 72 65 74 75  locates and retu
36090 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69  rns a native poi
360a0 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74 65  nter to a sqlite
360b0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a  3_vtab derived..
360c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
360d0 63 74 75 72 65 20 61 6e 64 20 63 72 65 61 74 65  cture and create
360e0 73 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f 6e  s an association
360f0 20 62 65 74 77 65 65 6e 20 69 74 20 61 6e 64 20   between it and 
36100 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20  the specified.. 
36110 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
36120 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
36130 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
36140 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
36150 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
36160 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
36170 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
36180 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
36190 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
361a0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
361b0 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
361c0 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65  t instance to be
361d0 20 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20 2f   used..        /
361e0 2f 2f 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67  // when creating
361f0 20 74 68 65 20 61 73 73 6f 63 69 61 74 69 6f 6e   the association
36200 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
36210 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
36220 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
36230 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
36240 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
36250 6f 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62  o a sqlite3_vtab
36260 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
36270 72 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  re or..        /
36280 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
36290 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
362a0 20 74 68 65 20 6d 65 74 68 6f 64 20 66 61 69 6c   the method fail
362b0 73 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e  s for any reason
362c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
362d0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
362e0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
362f0 74 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62 6c  tual IntPtr Tabl
36300 65 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  eToIntPtr(..    
36310 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
36320 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
36330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
36340 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
36350 20 20 20 20 20 20 20 20 69 66 20 28 28 74 61 62          if ((tab
36360 6c 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  le == null) || (
36370 74 61 62 6c 65 73 20 3d 3d 20 6e 75 6c 6c 29 29  tables == null))
36380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36390 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
363a0 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
363b0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
363c0 62 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  b = IntPtr.Zero;
363d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
363e0 6f 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c  ol success = fal
363f0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
36400 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
36410 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
36420 20 20 20 20 20 20 20 70 56 74 61 62 20 3d 20 41         pVtab = A
36430 6c 6c 6f 63 61 74 65 54 61 62 6c 65 28 29 3b 0d  llocateTable();.
36440 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
36450 20 20 20 69 66 20 28 70 56 74 61 62 20 21 3d 20     if (pVtab != 
36460 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
36470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
36480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36490 20 20 20 20 20 5a 65 72 6f 54 61 62 6c 65 28 70       ZeroTable(p
364a0 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  Vtab);..        
364b0 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c              tabl
364c0 65 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 3d  e.NativeHandle =
364d0 20 70 56 74 61 62 3b 0d 0a 20 20 20 20 20 20 20   pVtab;..       
364e0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62               tab
364f0 6c 65 73 2e 41 64 64 28 70 56 74 61 62 2c 20 74  les.Add(pVtab, t
36500 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  able);..        
36510 20 20 20 20 20 20 20 20 20 20 20 20 73 75 63 63              succ
36520 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ess = true;..   
36530 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
36540 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
36550 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
36560 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
36570 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
36580 20 20 20 69 66 20 28 21 73 75 63 63 65 73 73 20     if (!success 
36590 26 26 20 28 70 56 74 61 62 20 21 3d 20 49 6e 74  && (pVtab != Int
365a0 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20  Ptr.Zero))..    
365b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
365c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
365d0 20 20 20 46 72 65 65 54 61 62 6c 65 28 70 56 74     FreeTable(pVt
365e0 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
365f0 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62 20            pVtab 
36600 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
36610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36620 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
36630 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36640 72 65 74 75 72 6e 20 70 56 74 61 62 3b 0d 0a 20  return pVtab;.. 
36650 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
36660 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
36670 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
36680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
366a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
366b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
366c0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
366d0 6f 6e 20 43 75 72 73 6f 72 20 4c 6f 6f 6b 75 70  on Cursor Lookup
366e0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
366f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
36700 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 6f  .        /// Loo
36710 6b 73 20 75 70 20 61 6e 64 20 72 65 74 75 72 6e  ks up and return
36720 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
36730 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
36740 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 0d 0a 20  bleCursor" />.. 
36750 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63         /// objec
36760 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64  t instance based
36770 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20 70   on the native p
36780 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 0d 0a 20  ointer to the.. 
36790 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
367a0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
367b0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
367c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
367d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
367e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
367f0 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
36800 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
36810 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
36820 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
36830 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
36840 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
36850 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
36860 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
36870 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
36880 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
36890 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
368a0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
368b0 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
368c0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
368d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
368e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
368f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
36900 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
36910 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
36920 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
36930 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
36940 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20   or null..      
36950 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 63 6f 72    /// if the cor
36960 72 65 73 70 6f 6e 64 69 6e 67 20 6f 6e 65 20 63  responding one c
36970 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2e 0d  annot be found..
36980 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
36990 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
369a0 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
369b0 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  al SQLiteVirtual
369c0 54 61 62 6c 65 43 75 72 73 6f 72 20 43 75 72 73  TableCursor Curs
369d0 6f 72 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20  orFromIntPtr(.. 
369e0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
369f0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
36a00 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
36a10 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rsor..          
36a20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
36a30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
36a40 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50 74  pCursor == IntPt
36a50 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
36a60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
36a70 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65          SetTable
36a80 45 72 72 6f 72 28 70 56 74 61 62 2c 20 22 69 6e  Error(pVtab, "in
36a90 76 61 6c 69 64 20 6e 61 74 69 76 65 20 63 75 72  valid native cur
36aa0 73 6f 72 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  sor");..        
36ab0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
36ac0 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
36ad0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
36ae0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
36af0 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
36b00 6f 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  or;....         
36b10 20 20 20 69 66 20 28 28 63 75 72 73 6f 72 73 20     if ((cursors 
36b20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
36b30 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72               cur
36b40 73 6f 72 73 2e 54 72 79 47 65 74 56 61 6c 75 65  sors.TryGetValue
36b50 28 70 43 75 72 73 6f 72 2c 20 6f 75 74 20 63 75  (pCursor, out cu
36b60 72 73 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20  rsor))..        
36b70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
36b80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 75         return cu
36b90 72 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rsor;..         
36ba0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
36bb0 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f      SetTableErro
36bc0 72 28 70 56 74 61 62 2c 20 48 65 6c 70 65 72 4d  r(pVtab, HelperM
36bd0 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
36be0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
36bf0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
36c00 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
36c10 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
36c20 20 20 20 22 6d 61 6e 61 67 65 64 20 63 75 72 73     "managed curs
36c30 6f 72 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66  or for {0} not f
36c40 6f 75 6e 64 22 2c 20 70 43 75 72 73 6f 72 29 29  ound", pCursor))
36c50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
36c60 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
36c70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
36c80 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
36cd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
36ce0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
36cf0 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 6e 64 20  / Allocates and 
36d00 72 65 74 75 72 6e 73 20 61 20 6e 61 74 69 76 65  returns a native
36d10 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 71   pointer to a sq
36d20 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
36d30 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  r..        /// d
36d40 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
36d50 20 61 6e 64 20 63 72 65 61 74 65 73 20 61 6e 20   and creates an 
36d60 61 73 73 6f 63 69 61 74 69 6f 6e 20 62 65 74 77  association betw
36d70 65 65 6e 20 69 74 20 61 6e 64 20 74 68 65 0d 0a  een it and the..
36d80 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63          /// spec
36d90 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
36da0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
36db0 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62  bleCursor" /> ob
36dc0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
36dd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
36de0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
36df0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
36e00 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
36e10 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
36e20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
36e30 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
36e40 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
36e50 63 65 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  ce to be..      
36e60 20 20 2f 2f 2f 20 75 73 65 64 20 77 68 65 6e 20    /// used when 
36e70 63 72 65 61 74 69 6e 67 20 74 68 65 20 61 73 73  creating the ass
36e80 6f 63 69 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  ociation...     
36e90 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
36ea0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
36eb0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
36ec0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
36ed0 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69  ointer to a sqli
36ee0 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
36ef0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
36f00 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e or..        //
36f10 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
36f20 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20  Ptr.Zero" /> if 
36f30 74 68 65 20 6d 65 74 68 6f 64 20 66 61 69 6c 73  the method fails
36f40 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e   for any reason.
36f50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36f60 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
36f70 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
36f80 75 61 6c 20 49 6e 74 50 74 72 20 43 75 72 73 6f  ual IntPtr Curso
36f90 72 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  rToIntPtr(..    
36fa0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
36fb0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
36fc0 20 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20   cursor..       
36fd0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
36fe0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
36ff0 66 20 28 28 63 75 72 73 6f 72 20 3d 3d 20 6e 75  f ((cursor == nu
37000 6c 6c 29 20 7c 7c 20 28 63 75 72 73 6f 72 73 20  ll) || (cursors 
37010 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  == null))..     
37020 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
37030 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
37040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
37050 74 50 74 72 20 70 43 75 72 73 6f 72 20 3d 20 49  tPtr pCursor = I
37060 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
37070 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 75           bool su
37080 63 63 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a  ccess = false;..
37090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
370a0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
370b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
370c0 20 20 70 43 75 72 73 6f 72 20 3d 20 41 6c 6c 6f    pCursor = Allo
370d0 63 61 74 65 43 75 72 73 6f 72 28 29 3b 0d 0a 0d  cateCursor();...
370e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
370f0 20 69 66 20 28 70 43 75 72 73 6f 72 20 21 3d 20   if (pCursor != 
37100 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
37110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
37120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37130 20 20 20 20 20 63 75 72 73 6f 72 2e 4e 61 74 69       cursor.Nati
37140 76 65 48 61 6e 64 6c 65 20 3d 20 70 43 75 72 73  veHandle = pCurs
37150 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or;..           
37160 20 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 73           cursors
37170 2e 41 64 64 28 70 43 75 72 73 6f 72 2c 20 63 75  .Add(pCursor, cu
37180 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
37190 20 20 20 20 20 20 20 20 20 20 20 20 73 75 63 63              succ
371a0 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ess = true;..   
371b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
371c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
371d0 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
371e0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
371f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
37200 20 20 20 69 66 20 28 21 73 75 63 63 65 73 73 20     if (!success 
37210 26 26 20 28 70 43 75 72 73 6f 72 20 21 3d 20 49  && (pCursor != I
37220 6e 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20  ntPtr.Zero))..  
37230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
37240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37250 20 20 20 20 20 46 72 65 65 43 75 72 73 6f 72 28       FreeCursor(
37260 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20  pCursor);..     
37270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
37280 43 75 72 73 6f 72 20 3d 20 49 6e 74 50 74 72 2e  Cursor = IntPtr.
37290 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
372a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
372b0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
372c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 43         return pC
372d0 75 72 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  ursor;..        
372e0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
372f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
37300 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
37310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37340 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
37350 20 20 20 20 23 72 65 67 69 6f 6e 20 46 75 6e 63      #region Func
37360 74 69 6f 6e 20 4c 6f 6f 6b 75 70 20 4d 65 74 68  tion Lookup Meth
37370 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
37380 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
37390 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 69 6d 69      /// Deterimi
373a0 6e 65 73 20 74 68 65 20 6b 65 79 20 74 68 61 74  nes the key that
373b0 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20   should be used 
373c0 74 6f 20 69 64 65 6e 74 69 66 79 20 61 6e 64 20  to identify and 
373d0 73 74 6f 72 65 20 74 68 65 0d 0a 20 20 20 20 20  store the..     
373e0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
373f0 3d 22 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e  ="SQLiteFunction
37400 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
37410 61 6e 63 65 20 66 6f 72 20 74 68 65 20 76 69 72  ance for the vir
37420 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
37430 20 20 20 20 2f 2f 2f 20 28 69 2e 65 2e 20 74 6f      /// (i.e. to
37440 20 62 65 20 72 65 74 75 72 6e 65 64 20 76 69 61   be returned via
37450 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
37460 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
37470 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
37480 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
37490 2f 3e 20 6d 65 74 68 6f 64 29 2e 0d 0a 20 20 20  /> method)...   
374a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
374b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
374c0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
374d0 67 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20  gumentCount">.. 
374e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
374f0 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e  umber of argumen
37500 74 73 20 74 6f 20 74 68 65 20 76 69 72 74 75 61  ts to the virtua
37510 6c 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e  l table function
37520 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37530 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
37540 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
37550 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  ="name">..      
37560 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
37570 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  f the virtual ta
37580 62 6c 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20  ble function... 
37590 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
375a0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
375b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75   <param name="fu
375c0 6e 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20  nction">..      
375d0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
375e0 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74  ref="SQLiteFunct
375f0 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ion" /> object i
37600 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
37610 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
37620 20 2f 2f 2f 20 74 68 69 73 20 76 69 72 74 75 61   /// this virtua
37630 6c 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e  l table function
37640 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37650 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
37660 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
37670 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
37680 73 74 72 69 6e 67 20 74 68 61 74 20 73 68 6f 75  string that shou
37690 6c 64 20 62 65 20 75 73 65 64 20 74 6f 20 69 64  ld be used to id
376a0 65 6e 74 69 66 79 20 61 6e 64 20 73 74 6f 72 65  entify and store
376b0 20 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20   the virtual..  
376c0 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20        /// table 
376d0 66 75 6e 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63  function instanc
376e0 65 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20  e.  This method 
376f0 63 61 6e 6e 6f 74 20 72 65 74 75 72 6e 20 6e 75  cannot return nu
37700 6c 6c 2e 20 20 49 66 20 6e 75 6c 6c 0d 0a 20 20  ll.  If null..  
37710 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 72 65 74        /// is ret
37720 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 69 73 20  urned from this 
37730 6d 65 74 68 6f 64 2c 20 74 68 65 20 62 65 68 61  method, the beha
37740 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65  vior is undefine
37750 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
37760 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
37770 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
37780 72 74 75 61 6c 20 73 74 72 69 6e 67 20 47 65 74  rtual string Get
37790 46 75 6e 63 74 69 6f 6e 4b 65 79 28 0d 0a 20 20  FunctionKey(..  
377a0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
377b0 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 0d 0a 20 20  gumentCount,..  
377c0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
377d0 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20   name,..        
377e0 20 20 20 20 53 51 4c 69 74 65 46 75 6e 63 74 69      SQLiteFuncti
377f0 6f 6e 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20  on function..   
37800 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
37810 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
37820 20 20 20 72 65 74 75 72 6e 20 48 65 6c 70 65 72     return Helper
37830 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
37840 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
37850 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
37860 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
37870 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
37880 20 20 20 20 20 20 22 7b 30 7d 3a 7b 31 7d 22 2c        "{0}:{1}",
37890 20 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20   argumentCount, 
378a0 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  name);..        
378b0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
378c0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
378d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
378e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
37920 20 20 20 20 23 72 65 67 69 6f 6e 20 54 61 62 6c      #region Tabl
37930 65 20 44 65 63 6c 61 72 61 74 69 6f 6e 20 48 65  e Declaration He
37940 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
37950 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
37960 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
37970 20 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 63   Attempts to dec
37980 6c 61 72 65 20 74 68 65 20 73 63 68 65 6d 61 20  lare the schema 
37990 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20  for the virtual 
379a0 74 61 62 6c 65 20 75 73 69 6e 67 20 74 68 65 0d  table using the.
379b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65  .        /// spe
379c0 63 69 66 69 65 64 20 64 61 74 61 62 61 73 65 20  cified database 
379d0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
379e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
379f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
37a00 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
37a10 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  nnection">..    
37a20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
37a30 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
37a40 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  nection" /> obje
37a50 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 75  ct instance to u
37a60 73 65 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 20  se when..       
37a70 20 2f 2f 2f 20 64 65 63 6c 61 72 69 6e 67 20 74   /// declaring t
37a80 68 65 20 73 63 68 65 6d 61 20 6f 66 20 74 68 65  he schema of the
37a90 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
37aa0 20 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   This parameter 
37ab0 6d 61 79 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20  may not..       
37ac0 20 2f 2f 2f 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20   /// be null... 
37ad0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
37ae0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
37af0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 71   <param name="sq
37b00 6c 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  l">..        ///
37b10 20 54 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74   The string cont
37b20 61 69 6e 69 6e 67 20 74 68 65 20 43 52 45 41 54  aining the CREAT
37b30 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
37b40 74 20 74 68 61 74 20 63 6f 6d 70 6c 65 74 65 6c  t that completel
37b50 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  y..        /// d
37b60 65 73 63 72 69 62 65 73 20 74 68 65 20 73 63 68  escribes the sch
37b70 65 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72 74  ema for the virt
37b80 75 61 6c 20 74 61 62 6c 65 2e 20 20 54 68 69 73  ual table.  This
37b90 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 6e   parameter may n
37ba0 6f 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ot..        /// 
37bb0 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  be null...      
37bc0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
37bd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
37be0 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e  am name="error">
37bf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70  ..        /// Up
37c00 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73  on failure, this
37c10 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
37c20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63  be modified to c
37c30 6f 6e 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d  ontain an error.
37c40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73  .        /// mes
37c50 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sage...        /
37c60 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
37c70 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
37c80 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
37c90 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
37ca0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
37cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
37cc0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
37cd0 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
37ce0 6c 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  l SQLiteErrorCod
37cf0 65 20 44 65 63 6c 61 72 65 54 61 62 6c 65 28 0d  e DeclareTable(.
37d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
37d10 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
37d20 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  nnection,..     
37d30 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 71         string sq
37d40 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l,..            
37d50 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72  ref str